Hi after significant amount of research, we decided to use Google Cloud infrastructure and also to use ALS algorithm (A collabrative filtering method - https://cloud.google.com/solutions/recommendations-using-machine-learning-on-compute-engine#Training-the-models ) in our product reccomendation system which explained with detail in below:
We have 2 types of customers. First type is the companies who sells their product in the neighborhood and second type is the consumers who are going to buy the product from those companies
When consumer finds a company he/she can perform the following action (he can perform multiple items at once)
2.1. Only view the company profile
2.2. Add company to favorites
2.3. Start chat with company
2.4. Make order from company
2.5. Give rating and comment to company
So what I didnt understand is: Every item which is described in above is determined as some rating column in our database such as:
View company profile : 10 pts
Make order from company: 20 pts
Giving star or Make comment to company: 20 pts
so each item is a seperate rating for the same user. In our database for a user-company pair there may be more than 1 rows For example:
Row 1: user18-company18-10pts (Viewed profile once)
Row 2: user18-company18-20pts ( Make order from company)
Row 3: user18-company19-10pts
What I'm not sure about this algorithm , is it calculating the sum of all the ratings for that user's ratings for the same company(What I exactly want) or is it just looking for a single row for a user's rating for a single company? (What I want is this ALS algorithm to sum up the row1 and row2 for that user-company pair)
Does anyone know that? This is very important for our recommender system. Because the algorithm that I'm looking for is need to calculate the sum of all ratings for a user in order to reccomend another company. Because our business model is differnt than movie rating system
Thanks
As in google's example (https://cloud.google.com/solutions/recommendations-using-machine-learning-on-compute-engine#Training-the-models , look at the 2 matrices diagram), the matrix should be 1 line per customer and 1 column by company/product you're trying to recommend.
If you're trying to recommend a company to a user (that's what I understood from your example), then you should give a rating to each full interaction between a user and company, and there's only 1 line per user.
Given your example with 3 interactions and I added 3 more interactions from another user (user 21):
user18-company18-10pts (Viewed profile once)
user18-company18-20pts ( Make order from company)
user18-company19-10pts
user21-company16-20pts ( Make order from company)
user21-company16-20pts ( Giving star or Make comment to company )
user21-company18-10pts ( Viewed profile once )
Then, your matrix should be:
Row 1, column 18: 30 (10 + 20 from user18)
Row 1, colunn 19: 10 (from user18)
Row 2, column 16: 40 (20 + 20 from user21)
Row 2, column 18: 10 (from user21)