共计 923 个字符,预计需要花费 3 分钟才能阅读完成。
基于 itemBase 的协同过滤是怎么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
一、什么是协同过滤
举个简单的例子,我们网购的时候当我们购买了一件物品 A, 网站基本上都会做这样一个提示,购买该物品的人还购买了。。然后是一个推荐清单,这就是典型的协同过滤,这具体是怎样实现的呢?下面是我自己实现一个协同过滤的案例。
二、算法原理
基于 item 的协同过滤,通过用户对不同 item 的评分来评测 item 之间的相似性,基于 item 之间的相似性做出推荐。简单来讲就是:给用户推荐和他之前喜欢的物品相似的物品。
对购买了物品 A 的用户 C 做推荐时:对于物品 A 和物品 B 在用户 B 同现共 1 次,对于物品 A 和物品 C 在用户 A、B 同现共 2 次,所以物品 A 和 C 的相似度 2 大于物品 A 和 B 的相似度 1,所以将物品 C 推荐给用户 C。
那么,问题来了如果用户 C 表现出对物品 B 的喜好程度程度大于对物品 C 的喜好程度,那么我们再用户 C 做推荐时是推荐物品 B 还是推荐物品 C 呢?
三、矩阵模型
为了解决上述问题,引入了用户评分矩矩阵。(上图)左侧是物品的同现矩阵,中间是用户对物品的评分矩阵,这样一来物品之间的相似度和用户对物品的喜好程度两个维度就都有了,两个矩阵相乘得到物品的推荐矩阵。物品之间的相似度越高左侧对应的值就越大;用户对物品的的喜好度越大则用户评分矩阵中对应的值也就越大;最终二者乘积就越大,这样在推荐矩阵中分值越高的推荐度也就越大。
四、实现步骤
建立物品的同现矩阵
建立用户对物品的评分矩阵
计算得出推荐结果矩阵
推荐结果矩阵 = 物品的同现矩阵 * 用户对物品的评分矩阵
过滤与排序
五、mapreduce 的 job 流程及进出数据格式
第二个 job:计算物品同现次数,得到物品的同现矩阵
第三个 job:用户的评分矩阵(根据用户点击、收藏、购买等行为得到用户对物品的打分情况,具体分值根据具体情况自定义)
第四个 job:矩阵相乘得到推荐矩阵
第五个 job:过滤(过滤掉已经购买过的 item)与排序(降序)
看完上述内容,你们掌握基于 itemBase 的协同过滤是怎么样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!