全⾯理解主成分分析(PCA )和MNIST 数据集的Python 降维实现
注:本博⽂为原创博⽂,如需转载请注明原创链接
  这篇博⽂主要讲述主成分分析的原理并⽤该⽅法来实现MNIST 数据集的降维。
⼀、引⾔
  主成分分析是⼀种降维和主成分解释的⽅法。举⼀个⽐较容易理解的例⼦,如果将三维世界的可乐罐⼦踩⼀脚变成⼆维的,踩的过程就是降维。可以有很多种⽅法,⽐如将可乐罐⼦⽴起来从上向下踩,或者是将罐⼦平躺后再踩,甚⾄我们可以斜着踩或是选择不同的⾓度。那么如何踩这个可乐罐⼦可以保存更多的信息呢?显然不是竖着踩,⽽是平躺着踩下去才会保留可乐罐⼦的商标、颜⾊等⼀些重要信息。  正如上⾯这个例⼦,在实际的问题研究中,数据往往会涉及到很多的变量,将多变量的⼤量数据之间的规律研究得透彻这⽆疑是⼀件好事,但不可否认在⼀定程度上也加重了对数据进⾏分析和解释的任务量。⼀般情况,变量与变量之间是存在⼀定相关性的,提供的信息在⼀定情况下有所重叠。如果单独拿出个别的变量(指标)进⾏分析往往是孤⽴的,没有完全利⽤数据中的信息,会产⽣错误的结论。  由于各变量之间存在着⼀定的相关性,因此我们希望⽤较少的互不相关的新变量来反映原变量提供的绝⼤部分信息。主成分分析(Principal Component Analysis,简称PCA)是⼀种通过降维技术把多变量化为少数⼏个主成分的统计分析⽅法。
  所谓降维就是对⾼维的数据特性进⾏预处理的⼀种⽅法,将⾼维数据中的⼀些重要的特征保留下来并去除⼀些不重要的噪声,从⽽提升了数据处理的速度。
⼆、理解主成分分析的误区
  在详细介绍主成分分析的原理之前需要知道的误区:江淮iev7s
主成分分析不是抽取数据中的某些特征⽽是在原有的特征中通过某种数学思想重建新的特征。新特征的特点就是数量⽐原有特征要少但⼤概率涵盖了原有的⼤部分特征的信息。主成分分析剔除了原有数据中的噪声和冗余信息,并不是舍弃原有数据中的特征信息。主成分分析的⽬的就是最⼩化噪声,最⼤化提取有⽤的信息。
三、主成分分析的核⼼思想
1. 所谓主成分分析就是将样本的维特征映射到维上,这维全新的正交特征称为数据的个主成分。
2. 主成分分析把原有的数据变换到⼀个新的坐标系中,使得任何数据投影的最⼤化⽅差在第⼀个坐标(第⼀主成分)上,第⼆⼤⽅差在
第⼆个坐标(第⼆主成分)上,以此类推,次数为原始数据中特征的数⽬。
3. 对于条⽬2,第⼆个新坐标系(第⼆主成分)是与第⼀个坐标系(第⼀主成分)正交的空间中的⽅差最⼤化。对于⼆维数据,第⼆个坐
标系则垂直于第⼀坐标系。
4. 对于条⽬3,第三个坐标系(第三主成分)则分别与第⼀个和第⼆个坐标系正交且⽅差最⼤化。这就等价于线性代数中的施密特正交
化的过程。
5. 在整个过程中通常⽤⽅差占⽐来衡量每个主成分能够解释信息的⽐例,如果前个主成分⼏乎涵盖绝⼤部分的信息⽽后⾯的坐标系所含
的⽅差⼏乎为,那么就可以保留数据的前个主成分,实现了降维的过程。6. 在降维中的⽅差最⼤化就是投影误差最⼩化,这两个过程是等价的。
7. 到⽅差最⼤化的过程就是主成分分析的本质。最⼤化数据的⽅差则数据降维后就越分散,能够表征的信息量则越多,特征的区分度
就越明显。到的新维度就是变异(⽅差)最⼤的新维度。  如下⾯两幅图所⽰:
n k k k k 0k
  左右两幅图是同为个⼆维数据样本的分布,显然左图中直线代表的⽅向是覆盖数据的最⼤⽅差位置,
右图是将该数据集的投影到红线的⽅向,将会是⽅差最⼤化且投影误差最⼩化的坐标系⽅向,能够最⼤程度的涵盖数据的信息,是数据的第⼀主成分特征,下⾯的章节中会以代码的形式展⽰。
四、算法流程
1. 将数据进⾏“去中⼼化”。
2. 计算数据的协⽅差矩阵。
3. 计算协⽅差矩阵的特征值和所对应的特征向量。
4. 将特征值从⼤到⼩排序,保留前个特征值,即前个主成分。
5. 将数据转换到上述的个特征向量构建的新空间中。
五、所需的数学公式
  要理解主成分分析的整个数学原理则要先了解下述数学公式:
样本均值:
样本⽅差:
1000A
k k
k
=
xˉx
n
1
i=1
∑n
i
S=
2(x−
n−1
1
i=1
∑n
i)xˉ2
样本和样本的协⽅差:
  ⽅差是针对⼀维特征的不同样本的取值的运算,协⽅差是针对⼆维以上的特征的不同取值之间的运算。⽅差是协⽅差的特殊情况。  上述公式中的⽅差和协⽅差的除数是代表的是⽆偏估计。矩阵的特征值和特征向量:
  其中,是矩阵的特征向量,是矩阵的特征值,每个特征值所对应的特征向量相互正交。
  对于矩阵特征值和特征向量公式的理解:⼀个矩阵点乘⼀个向量就相当于对该向量进⾏旋转或者拉伸
等⼀系列线性变换。在我们求解矩阵的特征值和特征向量的时候就是要求解矩阵能够使得这些特征向量只发⽣伸缩变换,⽽变换的效果等价于特征向量与某个常量相乘。矩阵的特征值分解:
  是矩阵所对应的特征向量,是矩阵的特征值组成的对⾓矩阵。
六、主成分分析的应⽤实例和原理
  下⾯利⽤⼀个⽣活中的常见问题来讲解主成分分析的原理。  有A ,B ,C ,D ,E 五款汽车,其价格如下述表格所⽰:
车型价格(⼗万)
A 10
B 3
C 1
D 7E
2
放在⼀维坐标系上的表⽰如下:  款车的均值为:
为⽅便后续⽅差的计算,⾸先将数据进⾏“去中⼼化”,即,“去中⼼化”后的数据显⽰为:
X Y Cov(X ,Y )=E [(X −E [X ])(Y −E [Y ])]
=(x −)(y −)n −11i =1∑
n i x ˉi y
ˉn −1A ⋅v =λ⋅v
v A λA A λA =Q ΣQ −1
Q A ΣA 5=x ˉ=5
10+3+1+7+2雷诺新风景
4.6x −i x ˉ
新宝典
车型价格(⼗万)
A    5.4
B -1.6
C -3.6
D    2.4E
-2.6
“去中⼼化”后的点在坐标系的表⽰:
显然上述图⽚可以看做是以为中⼼的数据分布,这样做则更具有可观测性。通过上图可以清楚地看到和的售价⽐较⾼,,和的售价稍微低⼀些。  款车的⽅差为:
  现在⼜添加了这款车的使⽤年限属性,如下表所⽰:
车型价格(⼗万)
使⽤年限(年)
A 1016
B 39小米汽车动力电池专利获授权
C 14
D 712E
2
7
相应的坐标系表⽰为:
  款汽车的两个特征“去中⼼化”后的数据显⽰为:
车型价格(⼗万)
使⽤年限(年)
A    5.4  6.4
B -1.6-0.6
C -3.6-5.6
D    2.4  2.4E
-2.6
赛麟s7-2.6
相应的平⾯直⾓坐标系的表⽰如下:
  现在需要从这款车的两个特征中解析出⼀个新的特征来实现对数据的降维。  下⾯穿插⼀些数学知识点:
  ⾼中时候都学习过向量的知识。在⼆维世界⾥可以⽤两个正交基来表⽰任⼀点,即任何⼀个点都是两个正交基的线性组合:
0A D C E B 5S =2(5,4+41
2(−1.6)+2(−3.6)+2  2.4+2(−2.6))=214.3
555e ,e 12
  下图所⽰的向量是平⾯直⾓坐标系的两个标准正交基
  坐标系以为中⼼进⾏旋转则和的值也会发⽣变化。但是,⽆论坐标系旋转到何种⾓度,是不变的。当轴旋转到与向量共线时,点则⽆需
向量的表⽰,降成⼀维的点,如下图所⽰:
此时,上图点可以表⽰成:
直接去掉向量对点
并不影响:
上图点可以表⽰成:
  如果是两个点,情况就稍微复杂了点。有如下图所⽰的两个点,
则点和点的向量表⽰为:
  由上图可知,点和点在轴上投影的长度要多⼀写。为了降维,应该多分配给,少分配给。  对于上⾯的两个点,,在
轴的投影如下图所⽰:
  随着以为原点的坐标轴的不断旋转,和的值将不断发⽣变化,当旋转到如下图所⽰的情况,和
的值最⼤。  尽量多的分配给和,则要借鉴最⼩⼆乘法的思想:
  假设坐标系的正交基向量为,。设向量为,向量为。根据向量点积的公式有:
A ==(y x
十万左右的汽车)x e +1y e 2
e ,e 12O x y ∣OA∣=2
x +2y 2x OA A e 2A A =3.82e +10e 2
e 1A A A =3.82e 2
A =
(y 1x 1
)C
=
(y 2x 2
)A C w =x e +11y e ,v =12x e +21y e 22
A C x x ,x 12y ,y 12A =
(Y 1X 1
)B
=
(Y 2X 2
)x O X 1X 2X 1X 2X 1X 2max (X +X )
=12
22max X i =1∑
2
i
2
e =1(e 12e 11)e =2(e 22e 21
)OA a OB b X =1a ⋅e =1⋅(y 1x 1)=(e 12e 11
)x e +111y e 112