推荐系统法宝-相似度计算

在一些最临近算法中我们常看见一些距离

欧氏距离

我们最常见也最常用的距离,它能够最直观的描述两个点的距离关系。
在N维的情况下有公式(x1k,代表第k个特征值)


标准化欧式距离

为什么引入标准欧式距离?如果两个点特征值不在一个数量级时,大的特征值会覆盖掉小的。如y1(10000,1),y2(20000,2)。如果进行欧式距离计算,完全可以忽略第二个特征值。
假设样本集X的均值(mean)为m,标准差(standarddeviation)为s,那么X的“标准化变量”表示为:​

image

而且标准化变量的数学期望为0,方差为1。
被标准化后各个特征值属于统一量级。
由此标准化欧式距离也出来了:


图片.png

s是根号下方差,u是平均数


图片.png

弦相似性

余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。两个向量有相同的指向时,余弦相似度的值为1;两个向量夹角为90°时,余弦相似度的值为0;两个向量指向完全相反的方向时,余弦相似度的值为-1。这结果是与向量的长度无关的,仅仅与向量的指向方向相关。余弦相似度通常用于正空间,因此给出的值为0到1之间。

图片.png

这里的Ai,Bi分别代表向量A和B的各分量。

理解:余弦相似常常用于比较两事物的相似度,它与距离无关只有关角度。
欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,如使用用户行为指标分析用户价值的相似度或差异;而余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分用户兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题(因为余弦相似度对绝对数值不敏感)。
修正数值不敏感的方法就是将该值减去均值。
相似度应用:
1.应用于文本相似度
2.应用于推荐系统评分

调整余弦相似度

举个小例子,用户 A 对两部电影评分分别是 1 分和 2 分,用户 B 对同样这两部电影评分是 4 分和 5 分。用余弦相似度计算出来,两个用户的相似度达到 0.98。这和实际直觉不符,用户 A 明显不喜欢这两部电影。

针对这个问题,对余弦相似度有个改进,改进的算法叫做调整的余弦相似度(Adjusted Cosine Similarity)。调整的方法很简单,就是先计算向量每个维度上的均值,然后每个向量在各个维度上都减去均值后,再计算余弦相似度。

前面这个小例子,用调整的余弦相似度计算得到的相似度是 -0.1,呈现出两个用户口味相反,和直觉相符。

-值得注意的是,它和下面的皮尔逊系数不一样,皮尔逊系数是减去行平均(减去行平均可以更好看到列属性的变化趋势,从而也忽略了数值)。而这个改进公式减去的是列的平均,列平均表示大众对该商品的一个喜爱程度,如果甲小于该值,减去该平均后就为负数,如果乙大于该值,减去后为正。与甲相乘后数值为负,也表示两者负相关了。

皮尔逊相关度

皮尔逊相关度,实际上也是一种余弦相似度,不过先对向量做了中心化,向量 p 和 q 各自减去向量的均值后,再计算余弦相似度。

皮尔逊相关度计算结果范围在 -1 到 1。-1 表示负相关,1 比表示正相关。皮尔逊相关度其实度量的是两个随机变量是不是在同增同减。

如果同时对两个随机变量采样,当其中一个得到较大的值另一也较大,其中一个较小时另一个也较小时,这就是正相关,计算出来的相关度
图片发自App

就接近 1,这种情况属于沆瀣一气,反之就接近 -1。

由于皮尔逊相关度度量的时两个变量的变化趋势是否一致,所以不适合用作计算布尔值向量之间相关度,因为两个布尔向量也就是对应两个 0-1 分布的随机变量,这样的随机变量变化只有有限的两个取值,根本没有“变化趋势,高低起伏”这一说。

杰卡德(Jaccard)相似度

杰卡德相似度,是两个集合的交集元素个数在并集中所占的比例。由于集合非常适用于布尔向量表示,所以杰卡德相似度简直就是为布尔值向量私人定做的。对应的计算方式是:

分子是两个布尔向量做点积计算,得到的就是交集元素个数;
分母是两个布尔向量做或运算,再求元素和。


图片发自App

你可能感兴趣的:(推荐系统法宝-相似度计算)