参考来源:https://www.pianshen.com/article/8345891130/
PCA作用:用于数据预处理,降低数据维度
PCA目的:去除无用数据,减少计算量
既然是降维,就要考虑降低哪些维度以及保存哪些维度,一个简单的想法是:
保留重要的,这样可以更好的保留原始数据的信息,以防信息缺失
所以怎样才能知道哪里的信息重要呢?
确定信息的重要性,首先要确定何为信息。
根据信息论的内容,信息是用来衡量不确定性大小的,也就是说越是不确定、未知的事务其包含的信息量越大,比如我们需要区分汽车种类,所拥有的数据包含车标、轮胎样式等,如果给定的数据集中其轮胎样式均是同一个品牌,则我们无法得到任何的区分信息(获得的信息量=0),从而也就无法区分汽车品类,而如果数据集中包含不同的车标,根据车标我们可以很容易的推断出车的种类。
更近一步,如果一个特征其包含的数据全部集中在一个点或者一个范围之内(方差较小 --> 数据点距离均值点不分散),则我们无法使用这个特征进行分类,从而也就得到这个特征不重要,相反如果一个特征让数据很分散(方差大),使得我们易于分类则表明此特征很重要。
所以进行特征降维时删除的应该是不重要的的特征,即方差较小的特征,也即不利于分类的特征。
另外当我们已经确定了一个重要的特征,则与之具备线性相关关系的特征就可以进行忽略了,因为一旦具备线性相关关系,则表明一个特征可以通过另外一个特征线性表达出来。
假设我们有数据集D其大小为m x n(m为样本个数,n为特征数,即样本维度)
我们假设使用矩阵P (维度为 n x k) 来变换数据D使得其维度降为n x k
而使用什么样的矩阵P来进行放缩呢?
还是回到我们刚刚谈论的,我们要保留特征方差较大的,而且不需要线性相关的
而根据线性代数相关的知识可以得到,具备这种性质的有一种矩阵叫 协方差矩阵,其同一元素的协方差为其方差,我们要找最大的 k 个,其非对角线元素则表示两个特征之间的关系,由上,我们希望其为0。
补充知识:矩阵的迹:矩阵的对角线之和(https://baike.baidu.com/item/%E7%9F%A9%E9%98%B5%E7%9A%84%E8%BF%B9/8889744?fr=aladdin)
所以由上我们想得到的变换之后的Y (Y=DP,Y为降维后的数据) 其协方差应该是:
根据协方差定义:
要得到一个最优的,及对角线上的方差是最大的,也即对角线的方差和是最大的即迹的值最大:
由拉格朗日乘子法:
我们构建函数 :
假设 (近似)则满足定义:
要想求函数的极值,则需要求导,
令其为0,则
而上则等同于的特征值特征向量,所以可得依照原始数据的协方差矩阵,寻找其特征向量组成P矩阵就是要找的变换矩阵,而特征值反应了特征向量的程度,所以选取前k大的特征值组成的特征向量进行PCA降维可保存重要信息。