码迷,mamicode.com
首页 > 其他好文 > 详细

百万用户,八十万商品,如何计算基于物品的协同过滤

时间:2018-04-04 12:48:00      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:部分   strong   评价   相似度   post   四十   根据   问题   总结   

问题描述:

数据包含了一百四十万用户对80万商品的打分。要利用基于物品的协同过滤来计算。如果直接两两计算140万维的向量相似度,肯定不行啊。

问题分析:

每个物品的向量虽然是140万维的,但是其实给一个物品打分的用户其实不多,这个矩阵是非常稀疏的。而且根据长尾问题来说,大部分物品只有很少的用户有过评分。

总结来说就是每个物品评分的用户远远小于140万,每个用户评价过的商品远远小于80万。所以我们的问题就转换为如何处理这个稀疏的矩阵。

解决方法:

在计算相似度时,选用了夹角余弦(因为相比于杰卡德,夹角余弦考虑了评分的大小,实测效果更好)

第一步首先按商品ID进行group by,数据转换为,商品:评价过该商品用户。然后计算商品向量的长度,也就是用户评分的平方之和再开平方。

第二步,按用户id进行group by,将数据转换为,用户id :该用户评价过得商品。然后计算两个商品的相似度。得到<item_id,item_id>:评分

第三步,累加商品对的评分,除以两个商品的向量长度得到相似度。

 

 

 

 

参考资料:

https://www.jianshu.com/p/ae1fe36fdb90

百万用户,八十万商品,如何计算基于物品的协同过滤

标签:部分   strong   评价   相似度   post   四十   根据   问题   总结   

原文地址:https://www.cnblogs.com/earendil/p/8714819.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!