一:协同过滤基础知识
1,概念:“协同”指的是和周围群体合作(共线矩阵),利用群体智慧(相似度),来发现与自己相似的用户。根据他们的喜好来过滤得到我们感兴趣的信息;或者根据自己使用过的物品的相似物品来产生推荐。这就是协同过滤的核心思想。 2,目标场景:存在共线矩阵的情况下,进行点击率预测,评分预测。例如:
3,相似度计算方式: (1)杰卡得相似度 杰卡德相似度衡量的是两个相似度的一个指标,他是指两个集合AB中的交集,在集合AB中的并集中所占的比例。公式如下: (2)余弦相似度 余弦相似度衡量的是两个向量之间的向量夹角大小。夹角越小,说明两个向量相似度越高,公式如下: 余弦相似度有一个局限性就是,对于评分不规范数据效果不好,比如,有些用户喜欢打高分,有些用户喜欢打底分,有些用户喜欢乱打分: (3)皮尔逊相关系数 这是一个非常常用的相似度计算方式,相比余弦相似度,皮尔逊相关系数使用用户平均分来对独立评分进行修正,减少了异常数据对结果的影响,即减少了用户评分偏置的影响,简单来讲,皮尔逊相关系数就是让两个向量减去他们各自的均值,再来计算余弦相似度。公式如下: (4)其他方式 1,欧式距离,马氏距离,曼哈顿距离等,此处不再详述。 (5)欧式距离和余弦相似度的差异性 欧式距离强调的是绝对距离大小,余弦相似度强调的是夹角大小。两种相似度计算方式在不同的场景会有不同的效果。如果要统计两部电影的用户观看行为,用户A的向量为(0,1)用户B的向量为(1,0),此刻二人的余弦相似度很大,欧式距离很小,当我们分析两个用户对于不同视频的偏好,更关注相对差异时候,显然用余弦相似度更合适;然而当我们分析用户活跃度时候,余弦相似度会认为(1.10)和(10,100)像个用户向量距离很近,然而明显两个用户有着很大的绝对值距离差距,此刻我们关注的是树枝的绝对差异,应该选择欧式距离。
二:协同过滤
一:基于user的协同过滤(userCF)
(一)实现步骤: 1,计算ALICE与其他用户的相似度(例如图一),使用余弦相似度。此处不在重复计算,详情可参考上面相似度计算方式 2,根据相似度用户,计算alice对物品5的评分 方式一: 方式二:利用用户对物品的评分与用户相似度进行加权平均,获得评分。该方法考虑到了用户评分标准不一致的情况,即有的喜欢习惯打高分,有的喜欢习惯打低分等情况。 3,根据用户评分来对用户进行推荐,设置一个阈值,如果评分超过阈值则进行推荐。如果没有,就不推荐。 (二)缺点: 1,数据稀疏性 对于一个大型的电子商务推荐系统,item数量远大于user所购买的数量,不同user之间购买的物品的重叠行也更低,导致相思用户难以找寻,即使找到相似用户找到了,精准度也不会高,这导致usercf并不适合那些正反馈获得较为困难的场景 2,用户相似度特征矩阵难以维护 在一个大型电商系统中,用户数量会越来越多,矩阵存储开销会越来越大,存储空间会越来越大。 (三)适用场景: 用户少于item的场景。例如新闻推荐。
二:基于item的协同过滤(itemCF)
(一)实现步骤(以图一为例): 1,计算item5与item1,item2,item3,item4,的相似度,利用余弦和皮尔逊系数都可以 2,根据物品相似度,计算Alice对物品5的评分。这里采用上面usercf相似的计算方式二 3,根据用户评分来对用户进行推荐,设置一个阈值,如果评分超过阈值则进行推荐。如果没有达到阈值,就不推荐。 (二)优缺点 优点: 1,一般来讲itemCF要不uercf准确率要高 2,由于itemCF可以预先计算好物品的相似度,所以在线的预测性能要比userCF要高。 缺点: 1,数据稀疏, 每一行至少要有两个1才能计算相似度,行数过少,无法计算相似度 2,物品相似度矩阵维护难度大,由于要解决缺点1,就需要不断增加行数,那么物品相似度矩阵就会越来越大。 (三)适用场景: 适用于物品少于用户,用户兴趣固定持久的,物品更新速度不是太快的场合。比如音乐,电影等推荐。
三:UCF与ICF的异同
区别:用一张别人总结的很好的图,一目了然 共同点: 1,泛化能力弱 2,不能利用更多信息 3,没有解决数据稀疏问题(MF来解决)
|