数据分析、数据挖掘和搜索引擎往往需要知道个体之间差异的大小来评估个体的相似性和类别。 常见的情况是,例如,在数据分析中进行关联分析,在数据挖掘中进行分类聚类(例如k均值)算法,搜索引擎进行项目推荐。
相似度是指比较两个事物的相似性。 一般通过计算事物特征间的距离,在距离小的情况下,相似度大的距离越大,相似度就越小。 例如,两种水果从颜色、大小、维生素含量等特征来比较相似性。
问题定义:有两个对象x,y,都包含n维特征,x=(x1,x2,x3,……,xn ),y=) y1,y2,y3,……,yn ),计算x和y的相似性。 常用的有五种方法,如下。
1、诚实饼干距离(Eucledian Distance ) axdxmg距离是最常用的距离计算公式,用于测量多维空间中各点之间的绝对距离。 在数据密集连续的情况下,这是一种很好的计算方法。
因为计算基于每个维特征的绝对值,所以axdxmg度量必须确保每个维的指标处于相同的刻度级别。 例如,如果身高(厘米)和体重(公斤)两个单位对不同的指标使用欧式距离,结果可能无效。
代码:
2、曼哈顿距离(曼哈顿距离)。
管理距离=|x1x2|| y1y2 |,P1at(x1,y1 ) and p2a t (x2,y2 )。
代码:
3、强土豆距(rqdc distance )明氏距离是axdxmg距离的推广,是多种距离测量公式的概括表示。 请看下图
公式:
从公式中可以看出,
p==1时,“强土豆距离”为“曼哈顿距离”,p==2时,“强土豆距离”为“诚实的饼干距离”,p==时,“强土豆距离”为“欢呼”
4、余弦相似度(Cosine Similarity余弦相似度,是将向量空间中两个向量所成的角的余弦值用作两个个体之间的差异大小。 与距离测量相比,余弦相似度更重视两个向量的方向差异,而不是距离和长度。
代码:
5、Jaccard Similarity Jaccard系数主要用于计算符号度量或布尔值度量个体之间的相似度。 由于个体的所有特征属性都由符号度量或布尔值标识,因此无法测量差异的具体值大小,只能得到“是否相同”的结果,因此Jaccard系数只关心个体之间共同具有的特征是否一致。
对于上面的两个对象a和b,使用Jaccard计算相似性。 公式如下
首先,计算a和b的交点(A B )、a和b的合并(A B ) :
然后用公式计算:
代码:
六.皮尔逊相关系数(Pearson Correlation Coefficient )又称相关性,通过Peason相关系数衡量两个用户的相似性。 计算时,首先找到两个用户共同评分的项目集,计算这两个向量的相关系数。
公式:
实现摘要:
参考资料1、implementingthefivemostpopularsimilaritymeasuresinpython
2、相似度方法总结