Advertisement

机器学习之距离度量方法

阅读量:

常见的距离度量方法及相关函数、图示如下:
在这里插入图片描述

1. 欧几里得距离(Euclidean Distance)

  • 函数公式 :对于两个 ( n ) 维向量 ( \mathbf{x}=(x_1,x_2,\cdots,x_n) ) 和 ( \mathbf{y}=(y_1,y_2,\cdots,y_n) ),欧几里得距离 ( d(\mathbf{x},\mathbf{y})) 定义为:
    [d(\mathbf{x},\mathbf{y})=\sqrt{\sum_{i = 1}^{n}(x_i - y_i)^2}]
    在Python中,可以使用 numpy 库来计算欧几里得距离,示例代码如下:
复制代码
    import numpy as np
    
    x = np.array([1, 2])
    y = np.array([4, 6])
    distance = np.linalg.norm(x - y)
    print(distance) 
    
    
      
      
      
      
      
      
    
  • 图示 :在二维平面上,假设有两点 ( A(x_1,y_1) ) 和 ( B(x_2,y_2) ),欧几里得距离就是连接这两点的直线段的长度。例如,点 ( A(1,1) ) 和 ( B(4,5) ),欧几里得距离就是直角三角形斜边的长度,两直角边长度分别为 (|x_2 - x_1| ) 和 ( |y_2 - y_1| ) 。
    在这里插入图片描述

2. 曼哈顿距离(Manhattan Distance)

  • 函数公式 :对于两个 ( n ) 维向量 ( \mathbf{x}=(x_1,x_2,\cdots,x_n) ) 和 ( \mathbf{y}=(y_1,y_2,\cdots,y_n) ),曼哈顿距离 ( d(\mathbf{x},\mathbf{y}) ) 定义为:
    [d(\mathbf{x},\mathbf{y})=\sum_{i = 1}^{n}|x_i - y_i|]
    Python代码实现:
复制代码
    import numpy as np
    
    x = np.array([1, 2])
    y = np.array([4, 6])
    distance = np.sum(np.abs(x - y))
    print(distance) 
    
    
      
      
      
      
      
      
    
  • 图示 :在二维平面中,从一点到另一点的曼哈顿距离是沿着坐标轴方向移动的距离之和,就像在城市街区中从一个路口到另一个路口只能沿着街道直角行走,而不能斜穿街区。例如从点 ( A(1,1) ) 到 ( B(4,5) ),曼哈顿距离为 ( |4 - 1|+|5 - 1| = 3 + 4 = 7 ) 。
    在这里插入图片描述

3. 闵可夫斯基距离(Minkowski Distance)

函数公式 :它是欧几里得距离和曼哈顿距离的一般化形式。对于两个 ( n ) 维向量 ( \mathbf{x}=(x_1,x_2,\cdots,x_n) ) 和 ( \mathbf{y}=(y_1,y_2,\cdots,y_n) ),闵可夫斯基距离 ( d(\mathbf{x},\mathbf{y}) ) 定义为:
[d(\mathbf{x},\mathbf{y})=\left(\sum_{i = 1}^{n}|x_i - y_i|^p\right)^{\frac{1}{p}}]
当 ( p = 1 ) 时,就是曼哈顿距离;当 ( p = 2 ) 时,就是欧几里得距离。

图示 :闵可夫斯基距离的图示与 ( p ) 的取值有关,随着 ( p ) 值变化,等距曲线的形状会发生改变。例如在二维平面上,当 ( p = 2 ) 时等距曲线是圆,而 ( p = 1 ) 时等距曲线是菱形 。
在这里插入图片描述

4. 余弦相似度(Cosine Similarity)

虽然它严格来说不是距离度量(值越大表示越相似),但常用于衡量向量之间的方向差异,与距离概念相关。

  • 函数公式
    在向量空间中,对于两个非零向量(\vec{a}=(a_1,a_2,\cdots,a_n))和(\vec{b}=(b_1,b_2,\cdots,b_n)),余弦相似度的计算公式为:
    (\cos(\theta)=\frac{\vec{a}\cdot\vec{b}}{\vert\vec{a}\vert\vert\vec{b}\vert}=\frac{\sum_{i = 1}^{n}a_ib_i}{\sqrt{\sum_{i = 1}^{n}a_i^{2}}\sqrt{\sum_{i = 1}^{n}b_i^{2}}}),其中(\theta)是(\vec{a})与(\vec{b})的夹角。
    当两个向量方向相同时,它们的夹角\theta = 0^{\circ},根据三角函数知识,\cos(0^{\circ}) = 1,此时(\vec{a})和(\vec{b})对应分量成比例,使得(\frac{\vec{a}\cdot\vec{b}}{\vert\vec{a}\vert\vert\vec{b}\vert}=1)。
    当两个向量方向相反时,夹角\theta = 180^{\circ}\cos(180^{\circ})=-1,这意味着向量的对应分量成负比例关系,导致余弦相似度为(-1)。
    当两个向量垂直时,夹角\theta = 90^{\circ}\cos(90^{\circ}) = 0,此时向量的点积(\vec{a}\cdot\vec{b}=\sum_{i = 1}^{n}a_ib_i = 0),所以余弦相似度为(0)。

在Python中可以这样计算:

复制代码
    import numpy as np
    
    x = np.array([1, 2])
    y = np.array([4, 6])
    cosine_similarity = np.dot(x, y) / (np.linalg.norm(x) * np.linalg.norm(y))
    print(cosine_similarity) 
    
    
      
      
      
      
      
      
    
  • 图示 :在向量空间中,余弦相似度衡量的是两个向量夹角的余弦值。如果两个向量方向相同,夹角为 ( 0 ),余弦相似度为 ( 1 );如果方向相反,夹角为 ( 180^{\circ} ),余弦相似度为 ( - 1 );如果两向量垂直,夹角为 ( 90^{\circ} ),余弦相似度为 ( 0 ) 。
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

5. 切比雪夫距离(Chebyshev Distance)

  • 函数公式 :对于两个 (n) 维向量 (\mathbf{x}=(x_1,x_2,\cdots,x_n)) 和 (\mathbf{y}=(y_1,y_2,\cdots,y_n)),切比雪夫距离 (d(\mathbf{x},\mathbf{y})) 定义为:
    [d(\mathbf{x},\mathbf{y}) = \max_{i=1}^{n}|x_i - y_i|]

在Python中利用 numpy 库计算切比雪夫距离的示例代码如下:

复制代码
    import numpy as np
    
    x = np.array([1, 2, 3])
    y = np.array([4, 6, 8])
    distance = np.max(np.abs(x - y))
    print(distance) 
    
    
      
      
      
      
      
      
    
  • 在二维平面中,对于两点(A(x_1,y_1))和(B(x_2,y_2)),切比雪夫距离(d)的计算公式为(d = \max(|x_2 - x_1|,|y_2 - y_1|))。
    • 以棋盘为例,棋子每次只能水平或垂直移动一格。从点((1,1))到((4,5)),水平方向需要移动(|4 - 1| = 3)格,垂直方向需要移动(|5 - 1| = 4)格。因为切比雪夫距离是取水平和垂直方向移动距离的最大值,所以切比雪夫距离为(4)。这意味着从((1,1))到((4,5)),按照每次只能水平或垂直移动一格的规则,以最大步数方向为准来衡量两点之间的“距离”。
    • 图示 :在二维平面上,切比雪夫距离可以理解为棋盘上棋子从一个位置移动到另一个位置所需的最大步数(假设棋子每次只能沿水平或垂直方向移动一格)。例如,对于点 ((1,1)) 和 ((4,5)),(|4 - 1| = 3),(|5 - 1| = 4),切比雪夫距离为 (4)。
      在这里插入图片描述

6. 马氏距离(Mahalanobis Distance)

  • 函数公式 :设样本集 (X) 为 (n) 维随机向量,均值向量为 (\mu),协方差矩阵为 (\Sigma)。对于样本集中的两个样本点 (\mathbf{x}_i) 和 (\mathbf{x}_j),马氏距离 (D_M(\mathbf{x}_i,\mathbf{x}_j)) 定义为:
    [D_M(\mathbf{x}_i,\mathbf{x}_j) = \sqrt{(\mathbf{x}_i - \mathbf{x}_j)^T\Sigma^{-1}(\mathbf{x}_i - \mathbf{x}_j)}]

对于二维正态分布数据((X_1, X_2)),其概率密度函数为:
[ f(x_1,x_2)=\frac{1}{2\pi\sigma_1\sigma_2\sqrt{1 - \rho^2}}\exp\left[-\frac{1}{2(1 - \rho^2)}\left(\frac{(x_1-\mu_1)^2}{\sigma_1^2}-2\rho\frac{(x_1 - \mu_1)(x_2 - \mu_2)}{\sigma_1\sigma_2}+\frac{(x_2-\mu_2)^2}{\sigma_2^2}\right)\right]]
其中(\mu_1,\mu_2)是均值,(\sigma_1,\sigma_2)是标准差,(\rho)是相关系数。

马氏距离(D_M(\mathbf{x},\mathbf{y})=\sqrt{(\mathbf{x}-\mathbf{y})^T\Sigma^{-1}(\mathbf{x}-\mathbf{y})}),当以数据集中某一点(比如均值点(\mu = (\mu_1,\mu_2)))为参考点时,对于点(\mathbf{x}=(x_1,x_2)),马氏距离(D_M(\mathbf{x},\mu)=\sqrt{(x_1 - \mu_1,x_2 - \mu_2)\Sigma^{-1}\begin{pmatrix}x_1 - \mu_1\\ x_2 - \mu_2\end{pmatrix}})。

协方差矩阵(\Sigma=\begin{pmatrix}\sigma_1^2&\rho\sigma_1\sigma_2\\ \rho\sigma_1\sigma_2&\sigma_2^2\end{pmatrix}),其逆矩阵(\Sigma^{-1}=\frac{1}{\sigma_1^2\sigma_2^2(1 - \rho^2)}\begin{pmatrix}\sigma_2^2&-\rho\sigma_1\sigma_2\\ -\rho\sigma_1\sigma_2&\sigma_1^2\end{pmatrix})。

将(\Sigma^{-1})代入马氏距离公式并展开,经过整理可以得到一个关于(x_1)和(x_2)的二次方程,其一般形式为(ax_1^2 + bx_1x_2+cx_2^2 + dx_1+ex_2 + f = 0),这是椭圆的方程形式(当(\rho = 0)且(\sigma_1=\sigma_2)时,方程化为圆的方程形式。

在Python中计算马氏距离,示例代码如下(假设数据存储在 numpy 数组 data 中,计算 data 中各点与某一固定点 point 的马氏距离):

复制代码
    import numpy as np
    
    # 示例数据
    data = np.array([[1, 2], [3, 4], [5, 6]])
    point = np.array([2, 3])
    
    cov_matrix = np.cov(data.T)
    inv_cov_matrix = np.linalg.inv(cov_matrix)
    mean_vector = np.mean(data, axis = 0)
    
    diffs = data - point
    mahal_distances = []
    for diff in diffs:
    dist = np.sqrt(diff.dot(inv_cov_matrix).dot(diff))
    mahal_distances.append(dist)
    print(mahal_distances) 
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
  • 图示 :以二维正态分布数据为例,马氏距离相同的点构成的轮廓是一个椭圆(在各维度相互独立且方差相同的特殊情况下为圆)。它反映了在数据分布空间中,样本点到其他点的相对距离,与欧几里得距离相比,更能体现数据在其固有分布下的远近关系。
    在这里插入图片描述在这里插入图片描述

7. 汉明距离(Hamming Distance)

  • 函数公式 :主要用于比较两个等长字符串或等长编码向量之间对应位置字符(元素)不同的个数。对于两个长度为 (n) 的字符串 (a) 和 (b),汉明距离 (d(a,b)) 等于它们对应位置上不同字符的数量。

例如,对于字符串 (a = “1011101”) 和 (b = “1001001”),汉明距离为 (2),因为在第 3 位和第 5 位字符不同。

在Python中计算两个等长字符串汉明距离的代码如下:

复制代码
    def hamming_distance(a, b):
    return sum(c1!= c2 for c1, c2 in zip(a, b))
    
    a = "1011101"
    b = "1001001"
    print(hamming_distance(a, b)) 
    
    
      
      
      
      
      
      
    
  • 图示 :可以将字符串想象成编码空间中的点,汉明距离就是从一个点通过改变字符(元素)到达另一个点所需的最小变化次数。常用于信息编码、纠错码等领域,例如判断两个编码在传输过程中是否发生了少量错误。
    在这里插入图片描述

8. 编辑距离(Edit Distance,如莱文斯坦距离 Levenshtein Distance)

  • 函数公式 :编辑距离指的是在两个字符串之间,由一个字符串转换为另一个字符串所需的最少单字符编辑操作次数。允许的编辑操作包括插入、删除、替换。

对于两个字符串 (s1) 和 (s2),莱文斯坦距离 (d(s1, s2)) 可以通过动态规划算法高效计算。设 (m) 和 (n) 分别为 (s1) 和 (s2) 的长度,定义一个二维数组 (dp[m + 1][n + 1]),其中 (dp[i][j]) 表示 (s1) 的前 (i) 个字符与 (s2) 的前 (j) 个字符之间的编辑距离。

边界条件:
(dp[0][0]=0),(dp[i][0]=i)(表示将长度为 (i) 的字符串 (s1) 转换为空字符串需要 (i) 次删除操作),(dp[0][j]=j)(表示将空字符串转换为长度为 (j4) 的字符串 (s2) 需要 (j) 次插入操作)。

状态转移方程:
[dp[i][j]=\min\left\{\begin{matrix}dp[i - 1][j]+1& \text{(删除)}\\ dp[i][j - 1]+1& \text{(插入)}\\ dp[i - 1][j - 1]+ \left\{\begin{matrix}0 & \text{if }s1[i - 1]=s2[j - 1]\\ 1 & \text{if }s1[i - 1]\neq s2[j - 1]\end{matrix}\right. & \text{(替换)} \end{matrix}\right.]

Python 实现代码如下:

复制代码
    def levenshtein_distance(s1, s2):
    m, n = len(s1), len(s2)
    dp = [[0] * (n + 1) for _ in range(m + 1)]
    for i in range(m + 1):
        dp[i][0] = i
    for j in range(n + 1):
        dp[0][j] = j
    for i in range(1, m + 1):
        for j in range(1, n + 1):
            if s1[i - 1] == s2[j - 1]:
                dp[i][j] = dp[i - 1][j - 1]
            else:
                dp[i][j] = 1 + min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1])
    return dp[m][n]
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
  • 图示 :可以将每个字符串视为路径的起点和终点,通过在字符层面进行插入、删除和替换操作,构建从一个字符串到另一个字符串的路径,编辑距离就是这条路径上最少的操作步数。例如,对于字符串“kitten”和“sitting”,编辑距离为 3,可以通过将“k”替换为“s”,插入“i”,将“e”替换为“i”来实现转换。编辑距离常用于拼写检查、自然语言处理中的文本相似度计算等场景。
    在这里插入图片描述

9. Jaccard 距离

  • 函数公式 :Jaccard 距离用于衡量两个集合的不相似性。给定两个集合 (A) 和 (B),Jaccard 相似度 (J(A,B)) 定义为:
    [J(A,B)=\frac{|A\cap B|}{|A\cup B|}]
    Jaccard 距离 (d_J(A,B)) 则定义为:
    [d_J(A,B)=1 - J(A,B)=1-\frac{|A\cap B|}{|A\cup B|}=\frac{|A\cup B|-|A\cap B|}{|A\cup B|}]
    Jaccard 距离越大,两个集合的差异越大;Jaccard 距离越小,两个集合越相似。
    在 Python 中计算 Jaccard 距离示例代码如下:
复制代码
    def jaccard_distance(set1, set2):
    intersection = len(set1.intersection(set2))
    union = len(set1.union(set2))
    return 1 - intersection / union if union!= 0 else 0
    
    
      
      
      
      
    
  • 图示 :可以将集合用维恩图表示,Jaccard 距离反映了两个集合在维恩图中不重叠部分占并集的比例。例如,在文本分类中,如果把文档看作是单词的集合,Jaccard 距离可用于衡量两篇文档的差异程度,距离越小说明两篇文档越相似。
    在这里插入图片描述

10. 巴氏距离(Bhattacharyya Distance)

  • 函数公式 :巴氏距离主要用于衡量两个概率分布的相似性,常见于统计和模式识别领域。对于离散概率分布 (P=(p_1,p_2,\cdots,p_n)) 和 (Q=(q_1,q_2,\cdots,q_n)),巴氏系数 (BC(P,Q)) 定义为:
    [BC(P,Q)=\sum_{i = 1}^{n}\sqrt{p_iq_i}]
    巴氏距离 (DB(P,Q)) 则为:
    [DB(P,Q)=-\ln(BC(P,Q)) = -\ln\left(\sum_{i = 1}^{n}\sqrt{p_iq_i}\right)]

对于连续概率分布 (p(x)) 和 (q(x)),巴氏系数定义为:
[BC(p,q)=\int_{-\infty}^{\infty}\sqrt{p(x)q(x)}dx]
相应的巴氏距离为:
[DB(p,q)=-\ln\left(\int_{-\infty}^{\infty}\sqrt{p(x)q(x)}dx\right)]

  • 图示 :在概率分布的空间中,可以想象两个概率分布曲线。巴氏距离越小,这两条曲线重叠部分越多,即两个概率分布越相似。例如,在图像识别中,如果将不同类别的图像特征用概率分布表示,巴氏距离可用于衡量不同类别图像特征分布的差异,帮助进行分类决策。

11. KL 散度(Kullback - Leibler Divergence,相对熵)

  • 函数公式 :KL 散度也是用于衡量两个概率分布的差异,但它与巴氏距离有所不同,并且具有不对称性。对于离散概率分布 (P=(p_1,p_2,\cdots,p_n)) 和 (Q=(q_1,q_2,\cdots,q_n)),从 (P) 到 (Q) 的 KL 散度 (D_{KL}(P||Q)) 定义为:
    [D_{KL}(P||Q)=\sum_{i = 1}^{n}p_i\ln\left(\frac{p_i}{q_i}\right)]

对于连续概率分布 (p(x)) 和 (q(x)),KL 散度定义为:
[D_{KL}(p||q)=\int_{-\infty}^{\infty}p(x)\ln\left(\frac{p(x)}{q(x)}\right)dx]

  • 图示 :将两个概率分布曲线绘制出来,KL 散度衡量的是用分布 (Q) 来近似分布 (P) 时所损失的信息。如果 (P) 和 (Q) 完全相同,KL 散度为 (0)。它常用于机器学习中的变分推断、生成对抗网络(GAN)等,用于衡量生成模型生成的分布与真实数据分布之间的差异。但需注意,(D_{KL}(P||Q)\neq D_{KL}(Q||P)),即从 (P) 到 (Q) 的 KL 散度与从 (Q) 到 (P) 的 KL 散度一般是不相等的。

12. 海林格距离(Hellinger Distance)

  • 函数公式 :海林格距离同样用于度量两个概率分布之间的相似性。对于离散概率分布 (P=(p_1,p_2,\cdots,p_n)) 和(Q=(q_1,q_2,\cdots,q_n)),海林格距离 (H(P,Q)) 定义为:
    [H(P,Q)=\frac{1}{\sqrt{2}}\sqrt{\sum_{i = 1}^{n}(\sqrt{p_i}-\sqrt{q_i})^2}]

对于连续概率分布 (p(x)) 和 (q(x)),海林格距离定义为:
[H(p,q)=\frac{1}{\sqrt{2}}\sqrt{\int_{-\infty}^{\infty}(\sqrt{p(x)}-\sqrt{q(x)})^2dx}]

  • 图示 :类似于其他衡量概率分布相似性的度量,海林格距离反映了两个概率分布曲线之间的“距离”。距离越小,两个概率分布越接近。在一些统计分析和机器学习算法中,如海林格距离可用于聚类算法,将具有相似概率分布的数据点归为一类。

13. 杰弗里散度(Jeffrey Divergence)

  • 函数公式 :杰弗里散度是 KL 散度的一种对称化版本。对于离散概率分布 (P=(p_1,p_2,\cdots,p_n)) 和(Q=(q_1,q_2,\cdots,q_n)),杰弗里散度 (J(P,Q)) 定义为:
    [J(P,Q) = D_{KL}(P||Q)+D_{KL}(Q||P)=\sum_{i = 1}^{n}p_i\ln\left(\frac{p_i}{q_i}\right)+\sum_{i = 1}^{n}q_i\ln\left(\frac{q_i}{p_i}\right)]

对于连续概率分布 (p(x)) 和 (q(x)),杰弗里散度定义为:
[J(p,q)=\int_{-\infty}^{\infty}p(x)\ln\left(\frac{p(x)}{q(x)}\right)dx+\int_{-\infty}^{\infty}q(x)\ln\left(\frac{q(x)}{p(x)}\right)dx]

  • 图示 :与 KL 散度类似,它也是衡量两个概率分布之间的差异程度。由于其对称性,在比较两个分布时,无论以哪个分布为基准,得到的差异度量值是相同的。可以想象为在概率分布空间中,它给出了两个分布之间的一种对称化的“距离”概念,使得在分析两个分布关系时,不需要考虑顺序问题。例如在比较两个不同总体的概率分布特征时,杰弗里散度能更直观地反映它们之间的总体差异。

14. 地球移动距离(Earth Mover’s Distance, EMD)

  • 函数公式 :地球移动距离常用于图像检索、计算机视觉等领域,它基于运输问题的概念。假设我们有两个点集 (A) 和 (B),点集 (A) 中的点 (a_i) 具有权重 (w_{a_i}),点集 (B) 中的点 (b_j) 具有权重 (w_{b_j}),且 (\sum_{i}w_{a_i}=\sum_{j}w_{b_j}=1)(可以看作是两个概率分布)。

EMD 定义为将点集 (A) 中的“质量”移动到点集 (B) 中所需的最小成本,成本通过点与点之间的距离度量(如欧几里得距离等)。在数学上,它可以通过求解一个线性规划问题来得到:

设 (d(a_i,b_j)) 是点 (a_i) 到点 (b_j) 的距离,(f_{ij}) 表示从点 (a_i) 移动到点 (b_j) 的“质量”,则 EMD 为:

[EMD(A,B)=\frac{\sum_{i}\sum_{j}f_{ij}d(a_i,b_j)}{\sum_{i}\sum_{j}f_{ij}}]

约束条件为:
(\sum_{j}f_{ij}\leq w_{a_i})(从 (a_i) 移动出去的质量不能超过 (a_i) 的权重)
(\sum_{i}f_{ij}\leq w_{b_j})(移动到 (b_j) 的质量不能超过 (b_j) 的权重)
(\sum_{i}\sum_{j}f_{ij}=\min\left(\sum_{i}w_{a_i},\sum_{j}w_{b_j}\right))

  • 图示 :可以想象成有两堆土(点集 (A) 和 (B)),每堆土由不同大小的土堆(点及其权重)组成,要将一堆土变成另一堆土的形状,地球移动距离就是完成这个任务所需移动土的最小工作量,其中移动每单位土的工作量由两点之间的距离决定。在图像应用中,如果把图像的颜色直方图看作是具有不同权重的颜色值(点)的集合,EMD 可以衡量两个图像颜色分布的差异,更符合人类对图像相似性的感知。

15. 信息半径(Information Radius)

  • 函数公式 :信息半径用于衡量一个点到数据集“中心”的信息距离。给定一个数据集 (X = \{x_1, x_2, \cdots, x_n\}) 和一个点 (x),信息半径 (IR(x, X)) 基于 KL 散度来定义。

首先计算数据集 (X) 的经验分布 (P_X),例如通过计算每个数据点出现的频率来近似概率分布。然后信息半径定义为:

[IR(x, X)=D_{KL}(P_{x}||P_X)]

其中 (P_{x}) 是只包含点 (x) 的分布(可看作一种狄拉克分布,即点 (x) 出现概率为 1,其他点为 0)。

  • 图示 :在数据空间中,信息半径可以理解为某个点相对于整个数据集分布的“偏离程度”。如果一个点的信息半径较小,说明该点与数据集中大部分点的分布特征相似;反之,如果信息半径较大,则说明该点相对数据集来说比较“特殊”或“离群”。例如在异常检测中,通过计算每个数据点的信息半径,可以识别出那些信息半径显著大于其他点的数据点,将其视为可能的异常点。

16. 皮尔逊相关系数(Pearson Correlation Coefficient)

皮尔逊相关系数(Pearson Correlation Coefficient)是一种用于衡量两个变量之间线性相关程度的统计量,以下为你详细介绍:

  1. 定义与公式
    对于两个变量 (X) 和 (Y),分别有 (n) 个观测值 (x_1, x_2, \cdots, x_n) 和 (y_1, y_2, \cdots, y_n),皮尔逊相关系数 (r) 的计算公式为:
    [r = \frac{\sum_{i = 1}^{n}(x_i - \overline{x})(y_i - \overline{y})}{\sqrt{\sum_{i = 1}^{n}(x_i - \overline{x})^2 \sum_{i = 1}^{n}(y_i - \overline{y})^2}}]

其中,(\overline{x} = \frac{1}{n} \sum_{i = 1}^{n}x_i) 是 (X) 的均值,(\overline{y} = \frac{1}{n} \sum_{i = 1}^{n}y_i) 是 (Y) 的均值。

该公式也可以用协方差和标准差来表示:

[r = \frac{Cov(X, Y)}{\sigma_X \sigma_Y}]

其中 (Cov(X, Y)) 是 (X) 和 (Y) 的协方差,(\sigma_X) 和 (\sigma_Y) 分别是 (X) 和 (Y) 的标准差。

  1. 取值范围及含义
  • 取值范围 :皮尔逊相关系数 (r) 的取值范围是 ([-1, 1])。
  • 相关程度解读
    • 当 (r = 1) 时,表明两个变量之间存在完全正线性相关关系,即 (Y) 随着 (X) 的增加而严格线性增加。
    • 当 (r = -1) 时,表明两个变量之间存在完全负线性相关关系,即 (Y) 随着 (X) 的增加而严格线性减少。
    • 当 (r = 0) 时,意味着两个变量之间不存在线性相关关系,但这并不排除它们之间可能存在其他非线性关系。
    • 一般来说,(|r|) 越接近 1,线性相关程度越强;(|r|) 越接近 0,线性相关程度越弱。例如,(|r| > 0.7) 通常被认为是强相关,(0.3 < |r| \leq 0.7) 为中等程度相关,(|r| \leq 0.3) 表示弱相关。
  1. 计算示例(Python)
复制代码
    import numpy as np
    
    # 示例数据
    x = np.array([1, 2, 3, 4, 5])
    y = np.array([2, 4, 6, 8, 10])
    
    # 计算皮尔逊相关系数
    correlation = np.corrcoef(x, y)[0, 1]
    print(correlation) 
    
    
      
      
      
      
      
      
      
      
      
    
在这里插入图片描述

全部评论 (0)

还没有任何评论哟~