机器学习——主成分分析(PCA,纯理解)

编程入门 行业动态 更新时间:2024-10-08 00:32:14

机器学习——主<a href=https://www.elefans.com/category/jswz/34/1766297.html style=成分分析(PCA,纯理解)"/>

机器学习——主成分分析(PCA,纯理解)

略略翻了下书,差点儿窒息在床上…
看了几个博主的笔记,有点儿头疼
不知道是不是神经裂开生成新突触,还是脑细胞坏死前最后的呐喊

重点看了三篇,觉得非常惊艳,易于理解的

先看了主成分分析的原理详解,但还是稀里糊涂的,什么协方差
再看了协方差,还看了协方差矩阵
理解后,再看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=m1​X1​X1T​

假设线性变换后的特征数据为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=m1​Y1​Y1T​,且变换后的协方差矩阵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=m1​Y1​Y1T​=m1​PX1​(PX1​)T=m1​PX1​X1T​PT=P(m1​X1​X1T​)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=m1​X1​X1T​
③计算协方差矩阵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的主体思想理解了,就完事了

更多推荐

机器学习——主成分分析(PCA,纯理解)

本文发布于:2024-02-06 19:22:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1751117.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:成分   机器   PCA

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!