51CTO|推荐算法集锦(补充)——近邻选择与算法拓展



51CTO|推荐算法集锦(补充)——近邻选择与算法拓展
本文插图

1.导读
通过上面几篇文稿可以详细了解到推荐算法的种类和优缺点 , 对于推荐算法这块内容还有很多 , 之前的几篇文稿在内容程度上多少有些许遗漏 , 以及之前阐述的算法内容深入程度上仍旧达不到一个专业推荐系统开发人员的水平 。 为此 , 在这篇文稿中 , 我将会对前面阐述的遗漏内容进行补充 , 并在之前的基础上提高一个层次 , 来在推荐系统算法中更加深入一步 。
2.协同过滤算法(CF)拓展
2.1 相似度度量延伸
在之前的协同过滤算法中 , 阐述了在近邻推荐中运用到的相似度度量方法包括皮尔逊相关系数(Pearson Correlation)和改进余弦向量相似度(Adjuested Cosine) 。 皮尔逊相关系数在基于用户近邻推荐算法中常用的一种度量公式 , 它的推荐效果最佳 。 而改进余弦向量相似度是在基于物品近邻推荐算法中最常用的一个相似度度量计算公式 , 效果最佳 。 除此之外 , 还有一些不太常用的两种度量公式 , 因为它的推荐效果不是很好 , 因此在之前内容中就没有进行介绍了 , 在实际应用中也不推荐使用 。 但是有必要去了解下 。
(1)均方差(Mean Squared Difference) , 它是使用用户u和用户v之间对相同物品评分差的平方和均值的倒数来表示两个人的相似度 , 然而有一个缺点就是不能表示负关联的关系 。
(2)斯皮尔曼等级关联(Spearman Correlation) , 它是利用用户对物品评分的排名来计算两个用户之间的相似度 。 但是缺点就是计算排名时 , 消耗就比较大了 , 而且对于用户评分只有少量可选值的情况下 , 就会产生大量并列的排名 , 也就会造成推荐效果不佳 。
2.2 两种特殊情况?
第一种情况就是在基于近邻推荐算法运用中 , 当两个用户对物品进行评分的时候 , 如果评分的商品比较少 , 并且对商品的评分的分数比较一致的情况下 , 我们自然就会认为这两个用户时比较相似的 。 在基于物品近邻推荐算法中也是一样的 。 但是其实在这个时候两个用户的爱好在事实上可能是完全不同的 。 因此为了解决这个问题 , 可以通过在相似度上添加一个重要性权重过着是进行一个相似度缩放的方式来对相似度进行转换 。 这样处理后的相似度才更能接近实际的用户相似情况 。 下面 , 就这重要性权威和相似度缩放这两个方式来进行延伸 。
(1)重要性权重:对于两个用户或者物品之间的共同评分的物品和用户数量小于给定阈值的时候 , 那就降低相似度重要性的权重 。 阈值的选定一般是通过交叉验证的方法来进行的 。 实际场景中 , 一般当阈值大于或者等于25的时候 , 往往会收到比较好的预测效果 。
(2)相似度缩放:给出一个收缩因子对用户或者物品相似度进行收缩转换时 , 当最后的共同评分数量远远大于收缩因子的时候 , 物品的相似度几乎没有变化;在实际场景中 , 当收缩因子为100的时候 , 得到的效果不错 。
下面就是通过重要性权重和相似度缩放两种方式来计算的相似度公式:

51CTO|推荐算法集锦(补充)——近邻选择与算法拓展
本文插图

另外一种情况就是当两个用户对物品给出一致的喜欢和不喜欢的评分的时候 , 可能会不如他们给出差异更大的评分的时候提供的信息量多而有用 。 这个时候可以通过使用反用户频率(Inverse User Frequence)来对相似度计算公式进行转换 , 每个物品都会被赋以权重 , 权重的公式如下:
通过反用户频率对相似度计算公式进行转换时 , 所用到的皮尔逊相关系数也就变成了频率加权皮尔逊相关系数(Frequencey-Weighted Pearson Correlation) , 相应的公式如下:
频率加权皮尔逊相关系数 2.3 近邻的选择问题?
之前的稿子中提到了协同过滤算法 , 它是通过选择当前用户的近邻用户群来完成对当前用户的推荐 。 可是不知道读者有没有想过 , 近邻的选择是凭空随便选的吗?难道没有近邻选择的方法吗?答案是有的 。 不过在之前没有进行深入 , 因为之前的相关知识点太多 , 很容易弄混淆 。 在这 , 就近邻的选择问题来阐述下:


推荐阅读