# Technique/Algorithm for product categorization Machine Learning

I am going in a very abstract layer for the problem, but I think this problem might be a common one so posting it.

So, what I am looking for is any ML algorithm or Data Science technique is there to create a relationship factor between different sets of goods.

I guess, its used heavily in social media, but here I am talking w.r.t. product goods context. Like suppose if we sell a bunch of products together in a store, so in collection there will be many products that are always bought together.

So, accordingly there will be a relationship factor between different products i.e. some product that are always bought together will have a higher factor than the one that are bought together less frequently.

So, is there any approach where we can tackle this problem to get the factor between two products using any technique?

Edit : Narrowing it down to a universe where all items are having same factors and their relationship factor to each other totally depends on their occurance together.

• This sounds like a frequent item set / association rule problem, or a recommender system. That's a lot of territory, so I think you'd have to narrow down from there what you are asking. Aug 30, 2017 at 12:08

As Sean Owen said, it's a wide problem so I can't be generic on this one. I'll just give you an example on how you could tackle this:

Let say you sell some products on a website. If you have 100 different products, you can represent each sale by a 100 dimensional vector, where each component is the count of ordered product. Example: sale1 = (2,0,1,0,...,0) means 2 item1 and 1 item3 sold. We use the same technique with words, and it is called bag of words. If you stop here, you only can perform statistical counts on individual product sales. So let's use matrix factorization.

If you sold products to 1000 people, then you can concat all your sales in a matrix of dimension 1000 X 100 where each row represent one sale and each column represent one product. Using decomposition algorithm such as SVD, you can find out singular values in your data that will show you latent factors in your sales (basically trends or connections between your products).

I assume you are looking for a similarity measure between items. A quick and simple one is item-item cosine similarity. An item (product) can be represented by a vector $x$ with $x_i = 1$ if it was in the $i$th purchase, otherwise $x_i=0$. The similarity between two products is then

$$\frac {<x,y>} {\lVert x \rVert \lVert y \rVert} = \frac{x_1y_1 + \dots + x_n y_n} {\sqrt{\sum x_i^2 \sum y_i^2} } = \frac {\mbox{number of times 1 & 2 sold together}} {\sqrt{\mbox{number of times 1 sold} \times \mbox{ number of times 2 sold} }}$$

Matrix decomposition techniques can probably give better results, but they might require a bit more knowledge of linear algebra or finding some ready-made products.