⑴ 怎么计算两组数据的相似程度
楼上比较方差(∑σ^2)做法不见得全面。所谓“数据相似”,应是“两组数据在某个有序排列之下具有同等变化规律”的含义。比如,两组数据是两天的温度变化曲线、试验参数序列...
所以,按照以上假设,那么需要采用“统计回归处理”方法,看二者回归后函数参量的相似性。其他数据处理手段还有:拟合(具体有很多种,应用于不同领域)、(等距序列)谱分析法...
建议搜索,关键词:回归处理 拟合算法 傅立叶分析
⑵ 怎么比较两个向量组相似度
相关性是数据属性相关性的度量方法,相似度是数据对象相似性度量的方法,数据对象由多个数据属性描述,数据属性的相关性由相关系数来描述,数据对象的相似性由某种距离度量。许多数据分析算法会涉及相似性度量和相关性度量,如聚类、KNN等。
相关性度量
相关性用相关系数来度量,相关系数种类如下图所示。相关系数绝对值越大表是相关性越大,相关系数取值在-1–1之间,0表示不相关。各系数计算表达式和取值范围参考 相关性与相似性度量
这里写图片描述
相似性度量
相似度用距离来度量,相似度度量指标种类如下图所示。相似度通常是非负的,取值在0-1之间。距离越大,相似性越小,在应用过程中要注意计算的是相似度还是距离。
这里写图片描述
Jaccard(杰卡德相似系数)
两个集合A和B的交集元素在A,B的并集中所占的比例 这里写图片描述
杰卡德距离用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度这里写图片描述
Cosine(余弦相似度)
在二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式这里写图片描述
夹角余弦取值范围为[-1,1]。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1,两个方向正交时夹角余弦取值为0.
Minkowski Distance(闵可夫斯基距离)
两个n维变量间的闵可夫斯基距离定义为:这里写图片描述
当p=1时,就是曼哈顿距离,两点间各边距离之和
当p=2时,就是欧氏距离,两点间直线距离
当p→∞时,就是切比雪夫距离,所有边距离的最大值
闵氏距离的缺点(1)数据量纲不同,无法直接进行距离计算,需要先对数据进行归一化(2)没有考虑各个分量的分布(期望,方差等)。下图展示了不同距离函数是怎么逼近中心的在这里插入图片描述
Mahalanobis Distance(马氏距离)
马氏距离计算公式为这里写图片描述
S为协方差矩阵, 若协方差矩阵是单位矩阵则变为欧式距离。马氏距离的优点是量纲无关、排除变量之间的相关性的干扰。
Hamming distance(汉明距离)
两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要作的最小替换次数。例如字符串“1111”与“1010”之间的汉明距离为2。信息编码时为了增强容错性,应使得编码间的最小汉明距离尽可能大。
K-L散度(相对熵)
是衡量两个分布(P、Q)之间的距离;越小越相似这里写图片描述
Hellinger距离
在概率论和统计理论中,Hellinger距离被用来度量两个概率分布的相似度。它是f散度的一种(f散度——度量两个概率分布相似度的指标)。
概率密度函数分别表示为 f 和 g,两个概率密度函数的Hellinger距离的平方为
在这里插入图片描述
具有混合类型属性的对象可以将相同类型的属性划分为一组,对每组属性分析继续相似度度量,也可以分别对每个属性进行相似度度量再加权。
其他类型的距离度量可以参考 18种和“距离(distance)”、“相似度(similarity)”相关的量的小结
⑶ 如何计算两组数据的相似度
数据文件:x和group,8个个案。x的取值为4.5 5.6 7.9 5.2 4.6 5.4 6.4 6.2,group的取值为 1=A组,2=B组。
操作:菜单选择
Analyze
Compare Means
Independent-Samples T Test
把x放入Test Variable(s)栏中,把group放入Grouping Variable,单击Define Groups,分别输入1,2,单击Continue按钮返回,单击OK按钮运行。
得t=0.178,P=0.865>0.05,2组数据间无差异。
⑷ 数组相似度计算
你是求一个相似度算法:
如果一个公司真实排名为x1, 而你的打分排名是 x2,
怎么搞一个合理的评分数呢?
对差值的绝对值进行打分
|x1-x2|=0 得14分(28的一半)
|x1-x2|>=14 得 0分
就是:|差值|>14 得0分,|差值|<=14,得 14-|差值|
满分 14X28 分, 这样对28个排名,就可以算出得分了
相似度=得分/(14x28) X 100 (%)
用C语言编个计算小程序很简单。
⑸ 如何计算两组数据的相似度
楼上比较方差(∑σ^2)做法不见得全面。所谓“数据相似”,应是“两组数据在某个有序排列之下具有同等变化规律”的含义。比如,两组数据是两天的温度变化曲线、试验参数序列...
所以,按照以上假设,那么需要采用“统计回归处理”方法,看二者回归后函数参量的相似性。其他数据处理手段还有:拟合(具体有很多种,应用于不同领域)、(等距序列)谱分析法...
建议搜索,关键词:回归处理
拟合算法
傅立叶分析
⑹ 相似度计算
你是求一个相似度算法:
如果一个公司真实排名为x1,
而你的打分排名是
x2,
怎么搞一个合理的评分数呢?
对差值的绝对值进行打分
|x1-x2|=0
得14分(28的一半)
|x1-x2|>=14
得
0分
就是:|差值|>14
得0分,|差值|<=14,得
14-|差值|
满分
14x28
分,
这样对28个排名,就可以算出得分了
相似度=得分/(14x28)
x
100
(%)
用c语言编个计算小程序很简单。
⑺ 请问如何用公式得到一组数据的相似度
你可以试下 EXCLE 公式 VLOOKUP 横向匹配 , 希望能对你有帮助!
⑻ 全面归纳距离和相似度计算方法
距离(distance,差异程度)、相似度(similarity,相似程度)方法可以看作是以某种的距离函数计算元素间的距离,这些方法作为机器学习的基础概念,广泛应用于如:Kmeans聚类、协同过滤推荐算法、相似度算法、MSE损失函数等等。本文对常用的距离计算方法进行归纳以及解析,分为以下几类展开:
对于点x=(x1,x2...xn) 与点y=(y1,y2...yn) , 闵氏距离可以用下式表示:
闵氏距离是对多个距离度量公式的概括性的表述,p=1退化为曼哈顿距离;p=2退化为欧氏距离;切比雪夫距离是闵氏距离取极限的形式。
曼哈顿距离 公式:
欧几里得距离公式:
如下图蓝线的距离即是曼哈顿距离(想象你在曼哈顿要从一个十字路口开车到另外一个十字路口实际驾驶距离就是这个“曼哈顿距离”,此即曼哈顿距离名称的来源,也称为城市街区距离),红线为欧几里得距离:
切比雪夫距离起源于国际象棋中国王的走法,国际象棋中国王每次只能往周围的8格中走一步,那么如果要从棋盘中A格(x1,y1)走到B格(x2,y2)最少需要走几步?你会发现最少步数总是max(|x2-x1|,|y2-y1|)步。有一种类似的一种距离度量方法叫切比雪夫距离。
切比雪夫距离就是当p趋向于无穷大时的闵氏距离:
距离函数并不一定是距离度量,当距离函数要作为距离度量,需要满足:
由此可见,闵氏距离可以作为距离度量,而大部分的相似度并不能作为距离度量。
闵氏距离也是Lp范数(如p==2为常用L2范数正则化)的一般化定义。
下图给出了一个Lp球( ||X||p = 1 )的形状随着P的减少的可视化图:
距离度量随着空间的维度d的不断增加,计算量复杂也逐增,另外在高维空间下,在维度越高的情况下,任意样本之间的距离越趋于相等(样本间最大与最小欧氏距离之间的相对差距就趋近于0),也就是维度灾难的问题,如下式结论:
对于维度灾难的问题,常用的有PCA方法进行降维计算。
假设各样本有年龄,工资两个变量,计算欧氏距离(p=2)的时候,(年龄1-年龄2)² 的值要远小于(工资1-工资2)² ,这意味着在不使用特征缩放的情况下,距离会被工资变量(大的数值)主导, 特别当p越大,单一维度的差值对整体的影响就越大。因此,我们需要使用特征缩放来将全部的数值统一到一个量级上来解决此问题。基本的解决方法可以对数据进行“标准化”和“归一化”。
另外可以使用马氏距离(协方差距离),与欧式距离不同其考虑到各种特性之间的联系是(量纲)尺度无关 (Scale Invariant) 的,可以排除变量之间的相关性的干扰,缺点是夸大了变化微小的变量的作用。马氏距离定义为:
马氏距离原理是使用矩阵对两两向量进行投影后,再通过常规的欧几里得距离度量两对象间的距离。当协方差矩阵为单位矩阵,马氏距离就简化为欧氏距离;如果协方差矩阵为对角阵,其也可称为正规化的欧氏距离。
根据向量x,y的点积公式:
我们可以利用向量间夹角的cos值作为向量相似度[1]:
余弦相似度的取值范围为:-1~1,1 表示两者完全正相关,-1 表示两者完全负相关,0 表示两者之间独立。余弦相似度与向量的长度无关,只与向量的方向有关,但余弦相似度会受到向量平移的影响(上式如果将 x 平移到 x+1, 余弦值就会改变)。
另外,归一化后计算欧氏距离,等价于余弦值:两个向量x,y, 夹角为A,欧氏距离D=(x-y)^2 = x 2+y 2-2|x||y|cosA = 2-2cosA
协方差是衡量多维数据集中,变量之间相关性的统计量。如下公式X,Y的协方差即是,X减去其均值 乘以 Y减去其均值,所得每一组数值的期望(平均值)。
如果两个变量之间的协方差为正值,则这两个变量之间存在正相关,若为负值,则为负相关。
皮尔逊相关系数数值范围也是[-1,1]。皮尔逊相关系数可看作是在余弦相似度或协方差基础上做了优化(变量的协方差除以标准差)。它消除每个分量标准不同(分数膨胀)的影响,具有平移不变性和尺度不变性。
卡方检验X2,主要是比较两个分类变量的关联性、独立性分析。如下公式,A代表实际频数;E代表期望频数:
Levenshtein 距离是 编辑距离 (Editor Distance) 的一种,指两个字串之间,由一个转成另一个所需的最少编辑操作次数。允许的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。
像hallo与hello两个字符串编辑距离就是1,我们通过替换”a“ 为 ”e“,就可以完成转换。
汉明距离为两个等长字符串对应位置的不同字符的个数,也就是将一个字符串变换成另外一个字符串所需要替换的字符个数。例如:1011101 与 1001001 之间的汉明距离是 2,“toned” 与 “roses” 之间的汉明距离是 3
另外的,对于字符串距离来说,不同字符所占的份量是不一样的。比如”我乐了“ 与【“我怒了”,”我乐了啊” 】的Levenshtein 距离都是1,但其实两者差异还是很大的,因为像“啊”这种语气词的重要性明显不如“乐”,考虑字符(特征)权重的相似度方法有:TF-IDF、BM25、WMD算法。
Jaccard 取值范围为0~1,0 表示两个集合没有重合,1 表示两个集合完全重合。
但Dice不满足距离函数的三角不等式,不是一个合适的距离度量。
基础地介绍下信息熵,用来衡量一个随机变量的不确定性程度。对于一个随机变量 X,其概率分布为:
互信息用于衡量两个变量之间的关联程度,衡量了知道这两个变量其中一个,对另一个不确定度减少的程度。公式为:
如下图,条件熵表示已知随机变量X的情况下,随机变量Y的信息熵,因此互信息实际上也代表了已知随机变量X的情况下,随机变量Y的(信息熵)不确定性的减少程度。
JS 散度解决了 KL 散度不对称的问题,定义为:
群体稳定性指标(Population Stability Index,PSI), 可以看做是解决KL散度非对称性的一个对称性度量指标,用于度量分布之间的差异(常用于风控领域的评估模型预测的稳定性)。
psi与JS散度的形式是非常类似的,如下公式:
PSI的含义等同P与Q,Q与P之间的KL散度之和。
DTW 距离用于衡量两个序列之间的相似性,适用于不同长度、不同节奏的时间序列。DTW采用了动态规划DP(dynamic programming)的方法来进行时间规整的计算,通过自动warping扭曲 时间序列(即在时间轴上进行局部的缩放),使得两个序列的形态尽可能的一致,得到最大可能的相似度。(具体可参考[5])
图结构间的相似度计算,有图同构、最大共同子图、图编辑距离、Graph Kernel 、图嵌入计算距离等方法(具体可参考[4][6])。
度量学习的对象通常是样本特征向量的距离,度量学习的关键在于如何有效的度量样本间的距离,目的是通过训练和学习,减小或限制同类样本之间的距离,同时增大不同类别样本之间的距离,简单归类如下[2]:
最后,附上常用的距离和相似度度量方法[3]:
⑼ 常见的相似度度量算法
本文目录:
定义在两个向量(两个点)上:点x和点y的欧式距离为:
常利用欧几里得距离描述相似度时,需要取倒数归一化,sim = 1.0/(1.0+distance),利用numpy实现如下:
python实现欧式距离
从名字就可以猜出这种距离的计算方法了。想象你在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除非你能穿越大楼。实际驾驶距离就是这个“曼哈顿距离”。而这也是曼哈顿距离名称的来源, 曼哈顿距离也称为城市街区距离(City Block distance)。
(1)二维平面两点a(x1,y1)与b(x2,y2)间的曼哈顿距离
(2)两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的曼哈顿距离
python实现曼哈顿距离:
国际象棋玩过么?国王走一步能够移动到相邻的8个方格中的任意一个。那么国王从格子(x1,y1)走到格子(x2,y2)最少需要多少步?自己走走试试。你会发现最少步数总是max( | x2-x1 | , | y2-y1 | ) 步 。有一种类似的一种距离度量方法叫切比雪夫距离。
(1)二维平面两点a(x1,y1)与b(x2,y2)间的切比雪夫距离
(2)两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的切比雪夫距离
python实现切比雪夫距离:
闵氏距离不是一种距离,而是一组距离的定义。
两个n维变量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的闵可夫斯基距离定义为:
其中p是一个变参数。
当p=1时,就是曼哈顿距离
当p=2时,就是欧氏距离
当p→∞时,就是切比雪夫距离
根据变参数的不同,闵氏距离可以表示一类的距离。
闵氏距离,包括曼哈顿距离、欧氏距离和切比雪夫距离都存在明显的缺点。
举个例子:二维样本(身高,体重),其中身高范围是150 190,体重范围是50 60,有三个样本:a(180,50),b(190,50),c(180,60)。那么a与b之间的闵氏距离(无论是曼哈顿距离、欧氏距离或切比雪夫距离)等于a与c之间的闵氏距离,但是身高的10cm真的等价于体重的10kg么?因此用闵氏距离来衡量这些样本间的相似度很有问题。
简单说来,闵氏距离的缺点主要有两个:
(1)将各个分量的量纲(scale),也就是“单位”当作相同的看待了。
(2)没有考虑各个分量的分布(期望,方差等)可能是不同的。
标准欧氏距离的定义
标准化欧氏距离是针对简单欧氏距离的缺点而作的一种改进方案。标准欧氏距离的思路:既然数据各维分量的分布不一样,好吧!那我先将各个分量都“标准化”到均值、方差相等吧。均值和方差标准化到多少呢?这里先复习点统计学知识吧,假设样本集X的均值(mean)为m,标准差(standard deviation)为s,那么X的“标准化变量”表示为:
而且标准化变量的数学期望为0,方差为1。因此样本集的标准化过程(standardization)用公式描述就是:
标准化后的值 = ( 标准化前的值 - 分量的均值 ) /分量的标准差
经过简单的推导就可以得到两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的标准化欧氏距离的公式:
如果将方差的倒数看成是一个权重,这个公式可以看成是一种加权欧氏距离(Weighted Euclidean distance)。
有M个样本向量X1~Xm,协方差矩阵记为S,均值记为向量μ,则其中样本向量X到u的马氏距离表示为:
而其中向量Xi与Xj之间的马氏距离定义为:
若协方差矩阵是单位矩阵(各个样本向量之间独立同分布),则公式就成了:
也就是欧氏距离了。
若协方差矩阵是对角矩阵,公式变成了标准化欧氏距离。
马氏距离的优缺点:量纲无关,排除变量之间的相关性的干扰。
几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。
在二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式:
两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夹角余弦
类似的,对于两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n),可以使用类似于夹角余弦的概念来衡量它们间的相似程度。
即:
夹角余弦取值范围为[-1,1]。夹角余弦越大表示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。
python实现余弦相似度:
两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要作的最小替换次数。例如字符串“1111”与“1001”之间的汉明距离为2。
应用:信息编码(为了增强容错性,应使得编码间的最小汉明距离尽可能大)。
python实现汉明距离:
两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示。
杰卡德相似系数是衡量两个集合的相似度一种指标。
与杰卡德相似系数相反的概念是杰卡德距离(Jaccard distance)。杰卡德距离可用如下公式表示:
杰卡德距离用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。
可将杰卡德相似系数用在衡量样本的相似度上。
样本A与样本B是两个n维向量,而且所有维度的取值都是0或1。例如:A(0111)和B(1011)。我们将样本看成是一个集合,1表示集合包含该元素,0表示集合不包含该元素。
p :样本A与B都是1的维度的个数
q :样本A是1,样本B是0的维度的个数
r :样本A是0,样本B是1的维度的个数
s :样本A与B都是0的维度的个数
这里p+q+r可理解为A与B的并集的元素个数,而p是A与B的交集的元素个数。
而样本A与B的杰卡德距离表示为:
皮尔逊相关系数即为相关系数 ( Correlation coefficient )与相关距离(Correlation distance)
相关系数的定义
相关系数是衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关)。
1. 机器学习中的相似性度量
2. 推荐算法入门(1)相似度计算方法大全
3. Python Numpy计算各类距离
4. 皮尔逊积矩相关系数