略略翻了下书,差点儿窒息在床上…
看了几个博主的笔记,有点儿头疼
不知道是不是神经裂开生成新突触,还是脑细胞坏死前最后的呐喊
重点看了三篇,觉得非常惊艳,易于理解的
先看了主成分分析的原理详解,但还是稀里糊涂的,什么协方差
再看了协方差,还看了协方差矩阵
理解后,再看PCA的数学原理,就会有一种醍醐灌顶的清澈
再次感叹,世界上原来那么多善良的博主造福人类
但看完后,还是自己再梳理一下,就当消磨时间吧
首先,PCA是对数据进行损失较小的降维
在梳理PCA和SVD的降维效果时,忽然又丰富了对SVD的认识,SVD不仅可以降维,还可以压缩数据。
但是深入去分析SVD的降维数学推导,似乎头又有些疼了。。。西批优卡冒烟了吧
玩了几个小时的游戏,吃了乱七八糟的零食
磨磨蹭蹭地,还是爬起来梳理PCA了,梳理完要去吃好吃的,看辣妈辣妹,再玩几把游戏!抚慰headache
我爱数学,数学爱我,阿弥陀佛
PCA的是将多个特征,通过线性变换缩成几个特征,实现降维,并且使损失的信息尽可能小
减少特征就是降维,目的是将重复的信息去掉,这就涉及了线性相关。
由于线性相关是表示一个向量可以被另一个向量线性表示,因此,为了减少重复的信息,PCA会将线性相关的信息去掉,最终用线性无关的几个特征来表示原始数据。
其实这个过程,就是将原始特征维度上的数据,映射到线性无关的新维度上。
这是否意味着,只要求出原始数据上的特征向量,用特征向量组成的特征矩阵作为新维度,不就可以了吗?
不,不是这样的,这种思想就是特征值分解。
PCA是既要找到线性无关的新维度,同时还要尽可能保留原始信息,不让信息有过多的损失。
那么,就是要求投影后的特征数据,尽可能分散开,不要重叠在一块。
因此,要用到方差来表示分散程度,方差越大,则投影后的数据越分散。
降低信息损失的同时,还要让找到的特征,尽可能地线性无关。
线性无关,在数学中可以用协方差来表示。
协方差可以表示两个特征的联合变动情况。
当协方差为0时,表示两个特征线性无关。
所以,PCA的目的,就是要找到一组新的维度,使得原始数据投影到新维度后,特征的方差达到最大(尽可能减少原始信息的损失),特征与不同特征之间的协方差为0(减少重复信息,线性无关)。
这就要借助一个数学工具:协方差矩阵
协方差矩阵
这个协方差矩阵,不仅包含了不同特征之间的协方差,还包含了相同特征的方差值。
主对角元素为特征的方差值,其余全是不同特征的协方差值。
根据PCA的核心要求,是要是线性变换到新维度后的特征数据的协方差值为0,方差最大。
那么假设线性变换前的原始特征数据为X,将原始特征数据X减去各特征值的均值 μ 前 μ_前 μ前,得到原始数据 X 1 X_1 X1
而原始特征数据的协方差矩阵可求出来,简称为 C = 1 m X 1 X 1 T C = \frac{1}{m}X_1X_1^T C=m1X1X1T
假设线性变换后的特征数据为Y,且将特征数据Y减去各特征值的均值 μ 后 μ_后 μ后,得到特征数据 Y 1 Y_1 Y1
而变换后的特征数据的协方差假设为D,
D
=
1
m
Y
1
Y
1
T
D = \frac{1}{m}Y_1Y_1^T
D=m1Y1Y1T,且变换后的协方差矩阵D应该是各对角矩阵
(注:这里的m表示的是样本量,特征数据变换,并不改变样本量)
假设,线性变换的矩阵为P,P是对 X 1 X_1 X1变换,得到 Y 1 Y_1 Y1
那么, Y 1 = P X 1 Y_1=PX_1 Y1=PX1
这里的C、 X 1 X_1 X1、都是已知的,但D、 Y 1 Y_1 Y1、P都是未知的,现在就是要根据已知,来求出未知的P,尤其是P非常关键
我们知道 D = 1 m Y 1 Y 1 T = 1 m P X 1 ( P X 1 ) T = 1 m P X 1 X 1 T P T = P ( 1 m X 1 X 1 T ) P T = P C P T D = \frac{1}{m}Y_1Y_1^T= \frac{1}{m}PX_1(PX_1)^T= \frac{1}{m}PX_1X_1^TP^T=P(\frac{1}{m}X_1X_1^T)P^T=PCP^T D=m1Y1Y1T=m1PX1(PX1)T=m1PX1X1TPT=P(m1X1X1T)PT=PCPT
所以可以看出,要找到一个矩阵P,满足 D = P C P T D=PCP^T D=PCPT,使矩阵C经过 P C P T PCP^T PCPT变换,使D为对角阵
这个公式就很眼熟,特征值分解,不就是这样的么
A = W Σ W T A = WΣW^T A=WΣWT,其中Σ是特征值组成的对角特征矩阵,W是对应的特征向量组成的矩阵,可以转换为 W T A W = Σ W^TAW = Σ WTAW=Σ
因此,对应的原始特征数据的协方差矩阵C,也有 W T C W = D W^TCW = D WTCW=D
所以,只要求出C的特征值矩阵Σ(即D)和特征向量组成的矩阵W(即P),即可!
所以步骤列为如下:
①计算原始特征数据减去各特征均值后的特征数据
X
1
X_1
X1
②计算特征数据
X
1
X_1
X1的协方差矩阵
C
=
1
m
X
1
X
1
T
C = \frac{1}{m}X_1X_1^T
C=m1X1X1T
③计算协方差矩阵C的特征值和特征向量组P,这个特征向量组P即为线性变换矩阵
④保留特征值较大的前k个值,得到新的P
④计算经过特征向量组P(线性变换)后的特征数据
Y
1
=
P
X
1
Y_1=PX_1
Y1=PX1
困惑:原始特征数据,是减去了各自的特征均值μ后,才进行的计算
而最终计算出来的 Y 1 Y_1 Y1,实际也是直接减去均值了的,那怎么能直接表示最终的特征数据呢?
难道 Y 1 Y_1 Y1不是应该还要加回原本减掉的均值,才能变回正常的特征数据 Y Y Y吗?
唉。。。。要发扬不求甚解的精神,以后有时间或者偶然能看到的话,再解答这个疑惑吧
反正,PCA的主体思想理解了,就完事了