Recommending products to buy
This is a classic case of recommendation problem.
There are a couple of steps in which a recommendation is made:


Candidate Generation - What to show to a customer?
Candidate Ranking - How to show the items to the customer?
Personalisation - How to show the items to each customer?


Step 1 and 2 are general that means they talk about the overall trend and customer base, meaning we perform these steps by saying in general what would happen.

Step 3 is more personalised, where the ranking (order) in which the items are shown can be different for different customers.

For starters you should experiment with Singular Value Decomposition and Matrix Factorisation for recommendation.

If you have already tried your hand at these, then you should go with word2vec or doc2vec for building the step 1 and 2 and some kind of neural network at the end that ties to it in the end.