第五课:模型补充
PCA主成分分析
【概念】协方差与变量相关性
作者 : 老饼 日期 : 2022-12-06 22:13:32 更新 : 2022-12-07 12:54:08
本站原创文章,转载请说明来自《老饼讲解-机器学习》ml.bbbdata.com


协方差是常用的统计学上的概念之一,它用于评估变量与变量间的相关性

本文介绍协方差的概念和计算公式,并展示代码的实现



    01. 协方差公式定义与意义    


本节介绍协方差的意义及计算公式,并分析它的原理


    协方差定义与公式    


在统计学上用协方差来评估两个变量是否相关
  协方差的定义及计算公式如下:
    
当协方差为0时,则说明两个变量不相关



    如何理解协方差与变量的相关性    


记 ,,
则X'与Y'分别代表X和Y相对中心的偏移量,
 
则协方差是X与Y偏移量对应相乘再相加: 
X与Y不相关
 如果X与Y不相关,X的偏移方向与Y的偏移方向不相关,
即Y'是正是负与X'是否是负无关,X'*Y'是正(或负)的概率为50%,
则X'*Y'的期望
就是0
X与Y相关
 如果X与Y正相关,则X向上偏移时,Y也向上偏移,X向下偏移时,Y也向下偏移,那么X',Y'同正或同负,
则X'*Y'的期望
大于0
类似地,负相关时,则X向上偏移时,Y就向下偏移,X向下偏移时,Y就向上偏移,那么X'、Y'一正一负,
则X'*Y'的期望
小于0



    02. 协方差矩阵    


本节介绍协方差矩阵是什么,并展示代码实现的DEMO


    关于协方差矩阵    


什么是协方差矩阵
多个变量时,变量间两两之间的协方差,就组成了协方差矩阵
  如下:   
 
协方差矩阵的计算
设X为m行n列的数据,每行代表一个变量,
则X的协方差矩阵计算如下:
 先将X中心化:
再用中心化的X'计算协方差矩阵:
    




     计算协方差矩阵的代码实现    


下面展示用python计算协方差矩阵的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]])  # 原始数据

#----------使用公式计算协方差------------
Xn  = (X - X.mean(axis = 0))                               # 原始数据中心化
C   = Xn.T@Xn/(X.shape[0]-1)                               # 计算协方差矩阵

print('\n======数据:========','\n 原始数据 X:\n',X)
print('\n=======使用公式计算协方差:=======')
print('协方差矩阵C:\n',C)

#----------使用numpy自带函数计算协方差------------
Cnp = np.cov(X.T)                                          # 使用numpy自带的cov函数计算协方差矩阵
print('\n=======使用numpy自带函数计算协方差:=======')
print('协方差矩阵Cnp:\n',Cnp)


运行结果如下:

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

=======使用公式计算协方差:=======
协方差矩阵C:
 [[10.3  -0.75  6.7 ]
 [-0.75  9.   -4.75]
 [ 6.7  -4.75  6.8 ]]

=======使用numpy自带函数计算协方差:=======
协方差矩阵Cnp:
 [[10.3  -0.75  6.7 ]
 [-0.75  9.   -4.75]
 [ 6.7  -4.75  6.8 ]]





 End 







联系老饼