使用xmind整理了一下基于用户的协同过滤算法的整体流程
计算两个用户之间的相似度
主要利用行为的相似度计算兴趣的相似度。
给定用户u和用户v两个用户,N(u)表示用户u曾经有过正反馈的物品集合,N(v)表示用户v曾经有过正反馈的物品集合,有三种方法来计算相似度。
余弦相似度
皮尔逊相似度
Jaccard公式
计算方法举例
比如有如下用户-商品矩阵
例如用户A对物品{a,b,d}有过行为,用户B对物品{a,c}有过行为,利用余弦相似度公式计算用户A和用户B的兴趣相似度为
矩阵中每一个数值都是余弦相似度中的分子部分,分子除以分母可以得到最终用户兴趣相似度。
例如,计算用户A和B的用户相似度。用户A和B在矩阵中交集为1,A总共评过分的物品为3,B总共评过分的物品为2,根据余弦相似度算法,得出相似度为根号6分之1
筛选出K个与目标用户最相似用户
得到的用户之间相似度后,算法会给用户推荐与他兴趣最相似的K个用户喜欢的物品。
下面这个公式度量了用户u对物品i的感兴趣程度
其中S(u,K)包含和用户u兴趣最接近的K个用户,N(i)是对物品i有过行为的用户集合,Wuv是用户u和用户v的相似度,rvi为1
举例来说,对用户A进行推荐,选取K=3,用户A对物品c、e没有过行为,所以可以把这两个商品推荐给用户A。
THE END