老饼讲解-机器学习 机器学习 神经网络 深度学习
机器学习入门
1.学前解惑
2.第一课:初探模型
3.第二课:逻辑回归与梯度下降
4.第三课:决策树
5.第四课:逻辑回归与决策树补充
6.第五课:常见的其它算法
7.第六课:综合应用

【概念】相关系数及相关系数的意义

作者 : 老饼 发表日期 : 2022-10-05 15:26:52 更新日期 : 2024-01-09 17:58:15
本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com




相关系数是数据分析中常用的一个系数,常用于检查变量间是否正负相关

本文介绍相关系数的作用、公式、原理,并拓展性介绍相关系数矩阵及其计算方法




   01. 相关系数计算公式    



本节初步介绍相关系数的计算公式和相关系数的意义



   相关系数计算公式   


相关系数用于度量变量与变量之间的相关程度
相关系数的计算公式为:
✍️补充
 
相关系数其实就是协方差除以标准差,将输出范围归一化到【-1,1】之间
 




   相关系数公式(标准化形式)   


相关系数公式也可以用以下形式表示

其中, 
x'和y'实际是将原始x,y标准化为标准差为1,均值为0的数据

  从这个角度来看,相关系数其实就是将 x 和 y进行标准化后,再对应相乘的总和



     相关系数的意义    


从相关系数的公式易知道,相关系数取值范围在【-1,1】之间
    相关系数主要用于检测变量之间的线性相关性,
相关系数r的意义如下:
👉1. 相关系数r越接近1,说明变量之间越正相关  
👉2. 相关系数r越接近-1,说明变量之间越负相关
👉3. 相关系数r越接近0,说明变量之间不相关     

总的来说,相关系数r的绝对值越大,相关性越强,|r|越小则相关性越弱







    02. 相关系数的原理    



本节我们分析和理解为什么相关系数能用于衡量变量之间是否相关



   相关系数的公式原理   


为什么相关系数能衡量变量的相关性,我们不妨分析一下它的原理
相关系数公式为两变量对应相乘再相加:
 

其中,
都是标准化的数据,
它们围绕0上下波动(标准差为1),如下
 
相关系数的原理
不妨分为x与y不相关、x与y相关两种情形讨论
 
👉 如果 x和y 不相关
 两者如果是独立的,不相关的,
则x*y有可能是正的,也有可能是负的,正负的概率都会是50%,
那么在整体样本求和下,正负相互抵消,和的期望就会为0
 

 👉 如果 x和y 相关
 如果x,y之间强烈正相关,则x增加,y也增加,x减少y也减少。
那么x为正时,y也为正,或者,x为负,y也为负, 那么x*y就是正数
整体样本求和不会抵消,越相关,则越不会抵消,总和会越大
 在最极致的情况下,x与y一模一样,即x=y,此时,

  
同理,当y=-x时,r(x,y)=-1 




   03. 相关系数矩阵   



本节我们介绍相关系数矩阵,及用代码如何计算相关系数矩阵



  相关系数矩阵   


多个变量时,变量间两两之间的相关系数,就组成了相关系数矩阵
通过相关系数矩阵,可以比较一目了然看到变量间的相关性
 通过下图可以清晰了解相关系数矩阵是个什么东东:   
 
相关系数矩阵是什么



     相关系数矩阵的计算公式    


相关系数矩阵的计算公式如下:
 先将X里每个变量进行标准化:

然后用标准化数据计算相关系数矩阵
  
说明:本公式不是数学上的严谨公式,更偏向于编程时的公式形式,仅供参考
另外,上面的std也并非严格的标准差,仅作为记忆使用




    计算相关系数矩阵的代码实现Demo    


# -*- coding: utf-8 -*-
"""
求相关系数矩阵的Demo
"""
import numpy as np 
X   = np.array([[1,2,3],[2,3,3],[5,2,4],[6,8,3],[9,0,9]])  # 原始数据
Xm  = X.mean(axis = 0)                                     # 原始数据各列的均值
std = np.sqrt(sum((X-Xm)*(X-Xm)))                          # 原始数据各列的标准差
Xn  = (X - Xm)/std                                         # 原始数据各列标准化
R   = Xn.T@Xn                                              # 相关系数矩阵

print('\n原始数据X:\n',X)
print('\n相关系数矩阵R:\n',R)

运行结果:

原始数据X:
 [[1 2 3]
 [2 3 3]
 [5 2 4]
 [6 8 3]
 [9 0 9]]

相关系数矩阵R:
 [[ 1.         -0.07789712  0.80057447]
 [-0.07789712  1.         -0.60718062]
 [ 0.80057447 -0.60718062  1.        ]]






好了,相关系数的计算公式、意义和代码实现就介绍到这里了~






 End 




联系老饼