用户

时间:2018-05-01 09:53:59

标签: machine-learning pyspark google-cloud-platform

经过大量研究后,我们决定使用Google Cloud基础架构,并在我们的产品推荐系统中使用ALS算法(协同过滤方法 - https://cloud.google.com/solutions/recommendations-using-machine-learning-on-compute-engine#Training-the-models),详细说明如下:

我们有两种类型的客户。第一类是在附近销售产品的公司,第二类是将从这些公司购买产品的消费者

  1. 每个消费者都有能力搜索附近的公司或按行业搜索公司(如杂货店,干洗店,屠夫等)。
  2. 当消费者找到公司时,他/她可以执行以下操作(他可以一次执行多个项目)

    2.1。仅查看公司资料

    2.2。将公司添加到收藏夹

    2.3。开始与公司聊天

    2.4。从公司订购

    2.5。给公司评级和评论

  3. 所以我不明白的是:上面描述的每个项目都被确定为我们数据库中的某个评级列,例如:

    查看公司简介:10分

    从公司订购:20分

    给公司明星或评论:20分

    所以每个项目都是同一个用户的单独评级。 在我们的用户 - 公司对数据库中,可能有超过1行 例如:

    第1行:user18-company18-10pts(已查看个人资料一次)

    第2行:user18-company18-20pts(从公司订购)

    第3行:user18-company19-10pts

    我对这个算法不确定,是计算该用户对同一家公司的评级的所有评级的总和(我真正想要的是什么),还是只是为用户的评级寻找一行一家公司? (我想要的是这个ALS算法总结该用户 - 公司对的row1和row2)

    有谁知道吗?这对我们的推荐系统非常重要。因为我正在寻找的算法需要计算用户的所有评级的总和,以便推荐另一家公司。因为我们的商业模式与电影评级系统不同

    由于

1 个答案:

答案 0 :(得分:0)

与google的示例(https://cloud.google.com/solutions/recommendations-using-machine-learning-on-compute-engine#Training-the-models一样,查看2个矩阵图表)一样,矩阵应该是每个客户1行,1列是您尝试推荐的公司/产品。

如果您尝试向用户推荐公司(这是我从您的示例中所理解的),那么您应该对每个完整之间的互动进行评分。用户和公司,每个用户只有1行。

考虑到你的3个交互的例子,我从另一个用户(用户21)添加了3个以上的交互:

user18-company18-10pts(查看过的个人资料一次)

user18-company18-20pts(从公司订购)

user18-company19-10pts

user21-company16-20pts(从公司订购)

user21-company16-20pts(给予明星或对公司发表评论)

user21-company18-10pts(查看个人资料一次)

然后,你的矩阵应该是:

第1行,第18:30行(来自用户18的10 + 20)

第1行,colunn 19:10(来自用户18)

第2行,第16列:40(来自用户21的20 + 20)

第2行,第18列:10(来自用户21)