Collaborative Filtering–【U2U2I】
个人笔记:部分图片内容和知识 直接来源 HERE
使用行为数据,利用集体智慧推荐
基于用户的-U2U2I:(Users to Users to Items?)
和你兴趣相投的人(例如可能是朋友、同学(老用户,已经有一定的数据记录他们的喜好))也喜欢
U1选择了对I1、I2感兴趣,通过记录中发现,U2也喜欢这样的,而U2和U4喜欢I4,所以猜测U1也喜欢I4,就会把I4推荐给了U1
操作步骤:
①:搜索相似的用户
Jaccard:没有考虑评分
余弦相似度:把每一行当作一个向量,分子是向量点积,分母是各自范数再算乘积,将缺失值认为是最不喜欢的0,而其实是用户没有遇见,不能代表他不喜欢
皮尔逊相关系数:缺失值的评分是 all points / num(items)
比如A:(4+5+1)/ 3 (评了三个)=3.3
再利用这个去算r。这里的x和y没有讲的很清楚是什么,可以看下边公式:
注: $I_u \cap I_v是项集,(表示他们共同存在评价的对象数量有几个);r_{u(v),i}是用户 u(v) 对这 i 的评分,\bar r_u(v)是用户u(v)平均评分 $
利用python实现s的过程:首先,ru(v),i是一个列向量,减去一个数值,还是列向量;将(r(u,i)-r(bar))转置成行矩阵,和后者列矩阵做点积;其次,下面两个范数也以此将每个因数的第一个矩阵转置成行矩阵再和自己做点积。一比,就出来了!
正负相似度意思是兴趣相同或者兴趣相悖。
②:计算u和新item相似度
法1 :直接平均法 首先得到的是A与B和C相似,然后直接利用平均数得到A→I5的喜欢程度是(3+5)/2
法2、加权平均法 在分子每个评分多乘上对应用户的相似度进行求和再除以目标用户(当前被进行分析的用户)和(相似度比较高的)用户之间相似度的和
计算出A对I其他全部的相似度,然后选取TOP n就是推荐列表了