整理自己所学的内容,而不是专业的数学或统计学生,欢迎指正和讨论! 呃!
一.原理理解
打印组件分析(PCA )是一种降维方法,旨在减少特征数量,最大限度地保留数据中的有用信息。 我把它理解为坐标轴的旋转,把原来的n个维度转换成k个相互垂直的维度,用这些维度来描述我们的数据。
因为特征(因子) n )通常小于观测或样本(观测/采样)的数量(m ),主成分分析最终将最多n个主成分,即碎石图中的BBS
每个人举的第一个例子一定会告诉我一维下降,所以我也拿一个例子。 在这之中我们完成了mean normalisation。 Gene1和Gene2两个原始维的绿点是原始数据的分布形态,我们要降维的话,要寻找一条线尽可能多的复盖variation,要么投影距离最短,要么从投影点(绿叉)到原点发现这条红色虚线的是我们的PC1。
假设PC1线的斜率为0.25,则可以说一个PC1由四个Gene1和一个Gene2组成。 所以可以说主要成分是feature们的线性组合。
在该直角三角形中,设斜边的长度为1的话,1部分的PC1由0.97部分的Gene1和0.242部分的Gene2组成(比例不变),这两个数可以称为loading score )
上一步最大化的:将各投影点到原点的距离的平方和ssd称为该主成分的特征值,将ssd/n-1称为该主成分的variation。 在这个例子中,假设PC1的variation=15,PC2=3,则一共15 3=18. PC1占15/18=83%,pc2占17%。 这就是碎石图。
PC2和PC1垂直的各主要成分与相互垂直相同,如下图所示。
如果有更多的feature,我们也会按照这个顺序找到更多的主要成分和更多的轴。
如果“像我一样”需要复习矩阵的特征值eigenvalue和特征值eigenvector的话,这个视频非常清晰。 【工程数学基础】1_特征值和特征值_哔哩哔哩((((干杯)-Bilibiliww.Bilibili
二. python实现PCA
1 )标准化数据(矩阵x )
2 )求解cov(XT )的特征值和特征向量
ew,ev=NP.LinaLG.EIG(NP.cov ) (x.t ) ) ) ) ) ) ) ) )。
python中求特征值和本征向量的函数: numpy.Linalg.EIG(a ) )。
(ew )本征值。
ev :特征向量。
3 )为了降低到k维,按照ew从大到小的顺序取ev的前k列得到矩阵v (维为n*k )。 新矩阵为X*v )维为m*k ),实现了n维到k维的转换。
三.利用RSudio实现PCA
使用prcomp函数:
impPrComp=prcomp(data )
gscreeplot(impprcomp )可以将说明方差描绘成碎石图
impPrComp$sdev是特征值的平方根。
impPrComp$rotation是载荷得分。 ((因为其中有13个feature,所以共有13个主要成分) ) ) ) ) ) ) ) ) )。
gbiplot(impprcomp,alpha=.05,choices=c ) 2,3 ) )绘制第二和第三主要分量。
原理部分看这个视频就明白了【中文】主成分分析法(PCA ) |分步分析读就明白了! _哔哩哔哩(-) (((((((((() ) )干杯)~-bilibili www.bilibili.com
我只能理解到此为止了。 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈