动手学推荐系统:基于PyTorch的算法实现(微课视频版)
上QQ阅读APP看书,第一时间看更新

2.2.5 Pearson相似度与Cos相似度之间的联系

Pearson相似度其实与Cos相似度之间存在着隐藏关系。Cos相似度的公式展开为

Cos公式和Pearson公式是不是很像?如果设向量XY并令,则Cos相似度不是在求这两个向量间的夹角余弦值吗?所以Pearson相似度是先让每个向量的值都减去该向量所有值的平均值,然后求夹角余弦值。这个操作其实等价于先对数据做标准化的处理,然后求取余弦相似度,代码如下:

对数据做标准化处理的意义在哪里呢?下面用实际的数据来说明,例如用户A和用户B对物品1、物品2及物品3的评分分别是A:[1,3,2]和B:[8,9,1]。如果直接求取它们的Cos相似度,则等于0.82。这是一个很大的数,但是单从数据上看用户A和用户B不该有那么高的相似度,因为显然它们对物品的评分差异是很大的,所以对数据进行标准化处理后,也是将用户对每个物品的评分减去该用户对所有物品的平均得分,再求夹角余弦值可得0.11,即Pearson相似度,显然这更加合理。

还需要注意的是,不是所有情况下Pearson相似度都优于Cos相似度。如果只是求两个集合间的相似度,则Pearson相似度无意义。因为Pearson相似度更能体现的是数据的线性相关性,假设每个用户对物品的评分具备时间属性,例如用户越早的评分记录在向量中靠前的位置,越晚的评分记录在向量中靠后的位置。此时的Pearson相似度就能完美地体现出不同用户对物品喜好演化过程的相似度。