复习矩阵相关:
实对称阵的不同特征值对应的特征向量一定是正交的,解释:因为在特征值分解的过程其实就是对协方差矩阵进行对角化,去除线性相关信息,也就是冗余信息,所以才会说它的特征向量一定是正交的!
ps:求特征值的过程就是去除线性相关的过程,去除冗余特征的过程,对角化方阵的过程。
PCA介绍
PCA就是降维,通常在数据特征特别多,可能会存在冗余特征,这时候PCA降维就派上用场了。
ps:主要通过去除线性相关的特征在基本不损失精度的情况下来进行时间和空间的优化。
它主要思路是通过构建n维特征的协方差矩阵,然后进行协方差矩阵分解,得到特征值和对应的特征向量,在对特征值的绝对值进行从大到小排序,选择前topk即可,就会得到一个n*k维特征向量组合成的矩阵,再把它和m*n的(样本维数,特征维数)矩阵相乘,就得到m*k维的矩阵了,就达到了降维的效果!
ps:协方差矩阵是A的转置乘上A得到的。
ps:去冗余特征就是PCA的目的。求协方差矩阵的特征值和对应的特征向量就是最关键的过程。
PCA的目标
target 1:使协方差矩阵的对角线元素(特征的方差)尽可能大,因为越大说明特征越离散,特征作用就越强,能把样本分得很好!
target 2:使协方差矩阵对角线之外的元素(协方差,衡量两两特征之间的相关性)为零(进行对角化),因为我需要优化冗余的特征啊!
ps:要使对角线元素尽可能大,使对角线之外的元素为零,这样可以去除特征之间的线性相关性。
PCA深入解释
PCA降维只是消去了变量之间的线性相关性,而没有消去变量之间在更高维度上的相关性,所以说线性不相关不能等同于独立,独立的条件是更强的。
ps:去除了特征的线性相关性质离特征的独立其实还存在着很远的距离。
ps:特征值分解构建协方差矩阵的时候需要计算乘方项会造成精度损失,所以有时效果不好。
ps:引进SVD矩阵分解不需要直接计算乘方项。
引进SVD
SVD奇异值分解:对原矩阵A进行分解,但是原矩阵可以不是方阵
(m*n原矩阵)=(m*m方阵,左奇异矩阵向量正交)(m*n,实对角矩阵,对角线元素是奇异值)(n*n方阵,右奇异矩阵向量正交),分解出奇异值的过程就是奇异值分解!
ps:方阵u包含着左奇异向量,方阵v包含着右奇异向量,对角矩阵m*n包含奇异值。
ps:奇异值经过研究可以类比特征值的作用,可以代表这个矩阵的所有信息。
引出相关系数和余弦距离
ps:相关系数是对协方差矩阵的标准化形式。
ps:相关系数可以看成去均值化的余弦距离。
ps:去均值化可以把特征拉伸到一个维度,使算法的数值迭代计算更快。
小结
1.PCA是通过特征去冗余的方式来进行降低维度。
ps:是一个黑盒降维,降维后的东西没有什么物理含义。
ps:通过降维可能对模型的效果没甚么提升,主要还是空间和时间上进行了很大的优化。
*******ps:内存上的优化是毋庸置疑的,但是时间上的优化就不一定了,因为你让这个分布可能更加难学了,不一定去掉了这个冗余特征就快的。
2.PCA的特征值分解与SVD的奇异值分解:特征值分解涉及到乘方会有精确度的问题,奇异值分解避免了乘方直接进行矩阵的分解。
ps:奇异值分解(对向量进行伸缩和旋转两个维度的变换)比特征值分解(只进行了伸缩变换)多了一个空间分解。