数据的相似度计算

相似度系数又称为相关系数,常用于考察两个变量x、y之间的相关程度。

  • 若为0,则x和y无相关性
  • 若为正,则x和y呈正相关,相关系数在0~1之间
  • 若为负,则x和y呈负相关,相关系数在-1~0之间
  • 相似度系数的绝对值越大,则x和y相关性越强

matlab中,有corrcorr2函数计算相似度系数,并提供了3种相关系数的计算方法:

1. 皮尔逊线性相关系数

皮尔逊线性相关系数是最常用的线性相关系数,皮尔逊线性相关系数 rho(a,b) 定义为:
r h o ( a , b ) = ∑ i = 1 n ( X a , i − X ‾ a ) ( Y b , i − Y ‾ b ) ∑ i = 1 n ( X a , i − X ‾ a ) 2 ∑ j = 1 n ( Y b , j − Y ‾ b ) 2 rho(a,b)=\frac{\sum\limits_{i=1}^n{(X_{a,i}-\overline{X}_a)(Y_{b,i}-\overline{Y}_b)}}{\sqrt{\sum\limits_{i=1}^n{(X_{a,i}-\overline{X}_a)}^2\sum\limits_{j=1}^n{(Y_{b,j}-\overline{Y}_b)}^2}}\\ rho(a,b)=i=1n(Xa,iXa)2j=1n(Yb,jYb)2 i=1n(Xa,iXa)(Yb,iYb)
其中 n 为每个列的长度,相关系数的值的范围是从 –1 到 +1。值 –1 表示完全负相关,而值 +1 表示完全正相关。值 0 表示列之间没有相关性。

四种等效表达式:
ρ X , Y = ∑ ( X − X ‾ ) ( Y − Y ‾ ) ∑ ( X − X ‾ ) 2 ∑ ( Y − Y ‾ ) 2 ρ X , Y = E ( X Y ) − E ( X ) E ( Y ) E ( X 2 ) − E 2 ( X ) E ( Y 2 ) − E 2 ( Y ) ρ X , Y = N ∑ X Y − ∑ X ∑ Y N ∑ X 2 − ( ∑ X ) 2 N ∑ Y 2 − ( ∑ Y ) 2 ρ X , Y = ∑ X Y − ∑ X ∑ Y / N ∑ X 2 − ( ∑ X ) 2 / N ∑ Y 2 ( ∑ Y ) 2 / N \rho_{X,Y}=\frac{\sum\left(X-\overline{X}\right)(Y-\overline{Y})}{\sqrt{\sum\left(X-\overline{X}\right)^{2}\sum{(Y-\overline{Y})^{2}}}}\\ \\[1cm] \rho_{X,Y}=\frac{E(XY)-E(X)E(Y)}{\sqrt{E(X^2)-E^2(X)\sqrt{E(Y^2)-E^2(Y)}}} \\[1cm] \rho_{X,Y}=\frac{N\sum XY-\sum X\sum Y}{\sqrt{N\sum X^2-(\sum X)^2}\sqrt{N\sum Y^2-(\sum Y)^2}} \\[1cm] \rho_{X,Y}=\frac{\sum XY-\sum X\sum Y/N}{\sqrt{\sum X^2-(\sum X)^2/N}\sqrt{\sum Y^2(\sum Y)^2/N}} ρX,Y=(XX)2(YY)2 (XX)(YY)ρX,Y=E(X2)E2(X)E(Y2)E2(Y) E(XY)E(X)E(Y)ρX,Y=NX2(X)2 NY2(Y)2 NXYXYρX,Y=X2(X)2/N Y2(Y)2/N XYXY/N

测试案例:

clear,clc,close all

t = 0:0.01:1;
x = sin(2*pi*t)+2;
y = 0.95*sin(2*pi*t*0.9)+0.05*sin(2*pi*t)+2;
plot(x)
hold on
plot(y)

corr1 = corr(x',y')
corr2 = corr2(x,y)
corr3 = corr_self(x,y)


function r = corr_self(x,y)
    len = length(x);
    x_ = mean(x);
    y_ = mean(y);

    sum1 = 0;
    sum2 = 0;
    sum3 = 0;
    for i = 1:len
        sum1 = sum1 + (x(i)-x_)*(y(i)-y_);
        sum2 = sum2 + (x(i)-x_)^2;
        sum3 = sum3 + (y(i)-y_)^2;
    end
    r = sum1 / sqrt(sum2*sum3);
end
2. 肯德尔 tau 相关系数

肯德尔 tau 基于 (i,j) 同序对的计数(其中 i X a , i − X a , j X{a,i}−X{a,j} Xa,iXa,j Y b , i − Y b , j Y{b,i}−Y{b,j} Yb,iYb,j
具有相同的符号。肯德尔 tau 方程包括对归一化常量中结值的调整项,通常称为 tau-b。

对于矩阵 X 中的 Xa 列和矩阵 Y 中的 Yb 列,肯德尔 tau 系数定义为:

r h o ( a , b ) = 1 − 6 ∑ d 2 n ( n 2 − 1 ) rho(a,b)=1-\frac{6\sum d^{2}}{n(n^{2}-1)} rho(a,b)=1n(n21)6d2

其中, K = ∑ i = 1 n − 1 ∑ j = i + 1 n ξ ∗ ( X a , i , X a , j , Y b , i , Y b , j ) K=\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}\xi^*(X_{a,i},X_{a,j},Y_{b,i},Y_{b,j}) K=i=1n1j=i+1nξ(Xa,i,Xa,j,Yb,i,Yb,j),并且有:
ξ ∗ k ( X a , i , X a , j , Y b , i , Y b , j ) = { 1 if ( X a , i − X a , j ) ( Y b , i − Y b , j ) > 0 0 if ( X a , i − X a , j ) ( Y b , i − Y b , j ) = 0 − 1 if ( X a , i − X a , j ) ( Y b , i − Y b , j ) < 0 \left.\xi^{*k}(X_{a,i},X_{a,j},Y_{b,i},Y_{b,j})=\left\{\begin{array}{lll}1&\text{if}&(X_{a,i}-X_{a,j})(Y_{b,i}-Y_{b,j})>0\\0&\text{if}&(X_{a,i}-X_{a,j})(Y_{b,i}-Y_{b,j})=0\\-1&\text{if}&(X_{a,i}-X_{a,j})(Y_{b,i}-Y_{b,j})<0\end{array}\right.\right. ξk(Xa,i,Xa,j,Yb,i,Yb,j)= 101ififif(Xa,iXa,j)(Yb,iYb,j)>0(Xa,iXa,j)(Yb,iYb,j)=0(Xa,iXa,j)(Yb,iYb,j)<0

3. 斯皮尔曼 rho

斯皮尔曼 rho 等效于应用于 Xa 和 Yb 列的秩序的 皮尔逊线性相关系数。
如果每个列中的所有秩都不同,该方程可简化为:
r h o ( a , b ) = 1 − 6 ∑ d 2 n ( n 2 − 1 ) rho(a,b)=1-\frac{6\sum d^{2}}{n(n^{2}-1)} rho(a,b)=1n(n21)6d2

其中,d 是两个列的秩之差,n 是每列的长度。


参考链接:

  • https://ww2.mathworks.cn/help/stats/corr_zh_CN.html
  • https://www.zhihu.com/tardis/bd/art/423190810

你可能感兴趣的:(▶,数学基础,#,▶,MATLAB/Simulink,机器学习,人工智能,相似度)