基于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的协同过滤是怎么样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。