数据的相似度计算

发布时间:2024年01月08日

相似度系数又称为相关系数,常用于考察两个变量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,i??Xa?)2j=1n?(Yb,j??Yb?)2 ?i=1n?(Xa,i??Xa?)(Yb,i??Yb?)?
其中 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?=(X?X)2(Y?Y)2 ?(X?X)(Y?Y)?ρX,Y?=E(X2)?E2(X)E(Y2)?E2(Y) ? ?E(XY)?E(X)E(Y)?ρX,Y?=NX2?(X)2 ?NY2?(Y)2 ?NXY?XY?ρX,Y?=X2?(X)2/N ?Y2(Y)2/N ?XY?XY/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<j),同序是指 X a , i ? X a , j X{a,i}?X{a,j} Xa,i?Xa,j Y b , i ? Y b , j Y{b,i}?Y{b,j} Yb,i?Yb,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)=1?n(n2?1)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=1n?1?j=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?)=? ? ??10?1?ififif?(Xa,i??Xa,j?)(Yb,i??Yb,j?)>0(Xa,i??Xa,j?)(Yb,i??Yb,j?)=0(Xa,i??Xa,j?)(Yb,i??Yb,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)=1?n(n2?1)6d2?

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


参考链接:

  • https://ww2.mathworks.cn/help/stats/corr_zh_CN.html
  • https://www.zhihu.com/tardis/bd/art/423190810
文章来源:https://blog.csdn.net/weixin_43455581/article/details/135460386
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。