LDA
PCA
参考:http://blog.codinglabs.org/articles/pca-tutorial.html
假设我们只有a和b两个字段,那么我们将它们按行组成矩阵
X
X
:
然后我们用 X X 乘以的转置,并乘上系数 1/m 1 / m :
设我们有 m m 个维数据记录,将其按列排成 n n 乘的矩阵 X X ,设,则 C C 是一个对称矩阵,其对角线分别个各个字段的方差,而第i行j列和j行i列元素相同,表示i和j两个字段的协方差。
协方差矩阵对角化
设原始数据矩阵对应的协方差矩阵为
C
C
,而是一组基按行组成的矩阵,设
Y=PX
Y
=
P
X
,则
Y
Y
为对
P
P
做基变换后的数据。设的协方差矩阵为
D
D
,我们推导一下与
C
C
的关系:
协方差矩阵C是一个是对称矩阵,在线性代数上,实对称矩阵有一系列非常好的性质:
1)实对称矩阵不同特征值对应的特征向量必然正交。
2)设特征向量λ重数为r,则必然存在r个线性无关的特征向量对应于λ,因此可以将这r个特征向量单位正交化。
由上面两条可知,一个n行n列的实对称矩阵一定可以找到n个单位正交特征向量,设这n个特征向量为
e1,e2,⋯,en
e
1
,
e
2
,
⋯
,
e
n
,我们将其按列组成矩阵:
则对协方差矩阵 C C 有如下结论:
PCA算法
总结一下PCA的算法步骤:
设有m条n维数据。
1)将原始数据按列组成n行m列矩阵X
2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
3)求出协方差矩阵C=1mXXT
4)求出协方差矩阵的特征值及对应的特征向量
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6)Y=PX即为降维到k维后的数据
LDA
L
D
A
用于降维,和
PCA
P
C
A
有很多相同,也有很多不同的地方,因此值得好好的比较一下两者的降维异同点。
首先我们看看相同点:
1)两者均可以对数据进行降维。
2)两者在降维时均使用了矩阵特征分解的思想。
3)两者都假设数据符合高斯分布。
我们接着看看不同点:
1) LDA L D A 是有监督的降维方法,而 PCA P C A 是无监督的降维方法
2) LDA L D A 降维最多降到类别数 k−1 k − 1 的维数,而 PCA P C A 没有这个限制。
3) LDA L D A 除了可以用于降维,还可以用于分类。
4) LDA L D A 选择分类性能最好的投影方向,而 PCA P C A 选择样本点投影具有最大方差的方向。