I have previously implemented a Neural Network with Back-Propagation that was able to learn Tic-tac-toe and could go pretty well at Connect-4.

Now I'm trying to do a NN that can make a prediction. The idea is that I have a large set of customer purchase history, so people I can "target" with marketing, others I can't (maybe I just have a credit-card number but no email address to spam). I've a catalogue of products that changes on a monthly basis with daily updates to stock.

My original idea was to use the same NN that I've used before, with inputs like purchased y/n for each product and an output for each product (softmax to get a weighted prediction). But I get stuck at handling a changing catalog. I'm also not sure if I should lump everyone in together or sort of generate a NN for each person individually (but some people would have very little purchase history, so I'd need to use everyone else as the training set).

So I thought I'd need something with some ability to use the purchase data as a sequence, so purchased A, then B, then C etc. But reviewing something like LSTM, I kind of think it's still not right.

Basically, I know how to NN for a game-state sort of problem. But I don't know how to do it for this new problem.


The good news is, that most neural networks are well suited for the task. A basic three layer network would work fine, but a complex recurrent neural network will perform also great. The reason is, that the backpropagation learning algorithm is able to adapt the weights so that the system will learn the pattern with great accuracy.

The sad news is, that before a neural network can predict the consumer behavior the domain has to be converted into a machine readable form. A so called “purchase model” is needed which is able to simulate the behaviors of the customers. The purchase model is not connected with the neural network but is working independent from each other. To implement a purchase model which includes a feature like “intention to purchase”, a closer look into economist books is needed. In general, a model is working with input variables and output variables. It's not sure, what the input variables are, and how to convert them into output variables.

The problem is complex, because the model is equal to a consumer model. That means, the buying decision of humans are modeled. In contrast to a mechanical system, for example a physical model of a car, there is no theory available how humans are working internally. In the worst case, the consumer model won't predict anything, but is some kind of random generator. Which means, that the model fails to anticipate the future behaviors.

Generalized "purchase model"

enter image description here

In the basic form, a model is equal to a random generator. Which means, that the black box isn't using the input values for predicting the future, but it's producing numbers by it's own. Such a system can't predict anything but the output looks like: “customer1 will buy product3”, “customer2 will buy product5” and so on. It's important to know that all the output is wrong,

In the next step, the model is improved into the direction of a real purchase model. It's using the input values for predicting the future much better. The hope is, that the model has a better performance than a random generator and that the model improves by it's own. If this isn't possible because the input-output relationship is too complex, the model will fallback to a random pattern generator.

| improve this answer | |
  • $\begingroup$ Thanks for your answer. When you say a "purchase model", do you have any examples? I'm not sure where the difficulty is in converting my data into a machine readable form, surely if you can encode speech for speech recognition, I must be able to use purchase/session data? $\endgroup$ – NeomerArcana Sep 22 '19 at 7:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.