My data takes the form of a stream of events for each customer in my sample. For a given customer, the stream takes the form of a list of events over time:
- At T1, customer C1 bought 1 unit of product X
- At T2, customer C2 bought 1 unit of product X
- At T3, customer C1 contacted customer service
- At T9, customer C1 bought 3 units of product Y, etc.
I am trying to predict whether the customer will make another purchase in the next 3 months based on their previous history.
Most approaches I have read about and experimented with involve propositionalization: that is, computing some summary statistics on the stream and feeding those into traditional decision trees or neural nets. For example,
Customer 1: Avg purchase prev month = $34, Avg time between purchases = 6 days, Time since last purchase = 25 days, Slope of purchase volume last 6 months = -0.45
Customer 2: Avg purchase prev month = $64, Avg time between purchases = 20 days, Time since last purchase = 5 days, Slope of purchase volume last 6 months = +0.05
While this has produced some useful models, I can't help but feel I'm loosing a lot of information by using only the statistics of summary.
Are there any machine learning techniques out there that are capable of learning from the streams themselves?
Are there any good starter resources for developing a home grown AI system that would be capable of building and updating a set of rules as new data comes in from the stream for each customer?