PCA是使用得最普遍的降维算法,是一种非监督式线性降维算法,要将数据降维到PCA - 图1维子空间,包括两个步骤:

  • 找出最能保存数据方差的超平面(包括k个基向量)
  • 将数据投影到该超平面

PCA - 图2个基向量又称为主成分。经过数学计算可知,这些基向量分别是数据矩阵最大的PCA - 图3的特征值所对应的单位特征向量。

注:PCA假设数据最初是以原点为中心

实际上包括两个思路:

  1. 最大重构性
  2. 最大可分性

其中最大可分性就对应上述步骤,方差最大化。今天花了几乎一整天推导,发现细节化之后就很容易绕进去,然后作出了几点改进:

  • 不必列出具体的样本数,用随机变量代替
  • 将运算高度向量化,部分步骤推导的形式可以具体化之后确定

1. 数据定义

全程并不会讨论具体的样本个数。

原数据:随机变量PCA - 图4其中PCA - 图5为随机变量维度。

为了后续计算便捷,原数据是经过了中心化的,有:PCA - 图6%3D0#card=math&code=E%28%5Cmathbf%20x%29%3D0)

投影(降维)后的数据PCA - 图7PCA - 图8为投影后的维度。

投影矩阵(转移矩阵)为PCA - 图9,其中PCA - 图10为基向量,有PCA - 图11

于是有:PCA - 图12

2. 基于最大可分性

基本思想:将源数据的维数从PCA - 图13降到PCA - 图14PCA - 图15),并最大程度上保持方差。即将数据从原空间映射到由k个线性无关向量张成的子空间

PCA - 图16中各分量按方差从大到小进行排序,如果有PCA - 图17,则称PCA - 图18为第一主成分,PCA - 图19为第PCA - 图20主成分。就PCA - 图21的方差:

PCA - 图22%20%26%3D%20E(z_i-E(z_i))%5E2%20%5C%5C%0A%26%3D%20E(z_i)%5E2%5C%5C%0A%26%3D%20E(w_i%5ETX)%5E2%20%5C%5C%0A%26%3D%20E(w_i%5ETXX%5ETw_i)%5C%5C%0A%26%3D%20w_i%5ETE(XX%5ET)w_i%5C%5C%0A%26%3D%20w_i%5ET%5CSigma%20w_i%0A%5Cend%7Balign%7D%0A#card=math&code=%5Cbegin%7Balign%7D%0AD%28z_i%29%20%26%3D%20E%28z_i-E%28z_i%29%29%5E2%20%5C%5C%0A%26%3D%20E%28z_i%29%5E2%5C%5C%0A%26%3D%20E%28w_i%5ETX%29%5E2%20%5C%5C%0A%26%3D%20E%28w_i%5ETXX%5ETw_i%29%5C%5C%0A%26%3D%20w_i%5ETE%28XX%5ET%29w_i%5C%5C%0A%26%3D%20w_i%5ET%5CSigma%20w_i%0A%5Cend%7Balign%7D%0A)

对该主成分,优化目标为:

PCA - 图23%0A#card=math&code=%5Carg%5Cmax_%7Bw_i%7D%20D%28z_i%29%0A)

利用拉格朗日乘子法,拉格朗日函数为:

PCA - 图24%0A#card=math&code=w_i%5ET%5CSigma%20w_i%20-%20%5Clambda%20%28w%5ETw-1%29%0A)

上式对PCA - 图25进行求导并令整式为0,(对矩阵求导)有:

PCA - 图26

化简有:

PCA - 图27

代入PCA - 图28#card=math&code=D%28z_i%29)可得PCA - 图29%3D%5Clambda#card=math&code=D%28z_i%29%3D%5Clambda)。方差为协方差矩阵PCA - 图30的特征值,投影向量为对应的单位化特征向量

为保留最多的方差信息,并降维到PCA - 图31,可对协方差矩阵进行特征值分解,将特征值从大到小排列,取前PCA - 图32个,对应的单位化特征向量即构成投影矩阵(转移矩阵)。

3. 基于最大重构性思想

实际上指的是,原向量与在投影超平面上的投影向量之后距离最小,也是最小平方误差

向量PCA - 图33的投影坐标为:PCA - 图34%5ET#card=math&code=zi%20%3D%20%28x_i%5ETW%29%5ET),投影向量为![](https://g.yuque.com/gr/latex?%5Chat%20x_i%3D%5Csum%7Bj%3D1%7D%5Edz%7Bij%7Dw_j#card=math&code=%5Chat%20x_i%3D%5Csum%7Bj%3D1%7D%5Edz_%7Bij%7Dw_j),优化目标为:

PCA - 图35

优化处理之后最终可以得到跟基于最大可分性完全相同的结果。

4. 计算步骤

  1. 将数据进行预处理(通常为中心化标准化
  2. 确定要降维成的维数PCA - 图36(即k个主成分)
  3. 计算数据的协方差矩阵
  4. 对协方差矩阵进行特征值分解,将对角矩阵元素按从大到小排列,取对角矩阵的前PCA - 图37项,对应的特征向量为降维子空间的基向量

另外的计算方式:

  • 可以采用相关矩阵替代上面的协方差矩阵,顺便可以去掉对数据的预处理步骤
  • 采用奇异值分析代替特征值分解,对数据矩阵的转置代替上面的协方差矩阵。