# How to model user's buying behavior on Amazon?

For our final course project in Data Science, we proposed the following-

Give the Amazon Reviews Dataset, we plan to come up with an algorithm (thats roughly based on Personalized PageRank) that determines a strategic position for placing ads on Amazon. For example, there are millions of products on Amazon. And the dataset gives you an idea of what products are related, what products were brought together, viewed together etc. ( We can construct a graph with this info of also viewed and also bought ) It also gives you the reviews associated with each product over 14 years. Using all these info, we will rate/rank products on Amazon. Now, you are a vendor on Amazon who wants to improve traffic to their product page. Our algorithm helps you identify strategic positions in the graph where you can place your ad so that you can derive max traffic.

Now, our Professor's question is, how will you validate your algorithm without real users? We said-

We can model a fixed set of users. Some users follow also_bought and also_viewed links to the third hop more often than first or fifth hop. There users' behavior is normally distributed. Some other users hardly navigate beyond the first hop. This set of users' behavior is exponentially distributed.

Our Professor's said - Whatever distribution the users follow, users are navigating using links for similar products. Your ranking algorithm also considers similarity b/w 2 products to rank products. So using this validation algorithm is kinda cheating. Come with some other user behavior, something more realistic and orthogonal to the algorithm.

Any ideas on how to model the users' behavior? I am happy to provide more details about the algo.

How will you validate your algorithm?

Rather than trying to answer the second question, consider that your answer to the first question might need revision...

What methods have you used for validating learning methods throughout your data science class? First you want to define a specific set of numerical metrics to assess the success or failure of your model. Second, what methods can you use to create a very realistic testing population (more realistic than modeling the population)? The first hint I will give is that the Amazon Reviews Dataset is very large, so your data is very amendable to this method. The second hint I will give is that this method is likely the one that you have used in 95% of the supervised learning problems that you have worked on in class...

Hope this helps... I will edit this if need be based on comments added by the OP, but don't want to provide the solution right away in order to elicit some organic thought e.g. since this is a class problem and the Prof is also trying to help you come up with the right solution on your own.

There are two requirements for the model of behaviour that you should use: (1) "more realistic" and (2) orthogonal to your algorithm.

(1) By realistic, let us assume that it means that the behaviour should reflect behaviours observed in other, broader contexts than the specific context of Amazon purchases.

(2) Orthogonal is more straightforward to understand. The modelled behaviour should not be driven by similarities between products.

A simple approach to fulfil these two requirements would come from the fact that purchasing behaviours are driven by socio-demographic features such as gender, age, location (e.g. urban area / rural) and economic constraints (income and price).

You have a set of users and a set of products. You can estimate the relationship between the socio-demographic variables and the demand for product using simple but careful regression techniques. If needed, you could use external sources of data to make assumptions concerning important missing variables such as income.

Then if you are a vendor, the socio-demographic model would predict which groups is most likely to purchase your product.

I hope that helps :)

Ben