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