一些特征选择方法(II)

LDA

PCA

参考:http://blog.codinglabs.org/articles/pca-tutorial.html
假设我们只有a和b两个字段,那么我们将它们按行组成矩阵 X X

X=(a1b1a2b2ambm) X = ( a 1 a 2 ⋯ a m b 1 b 2 ⋯ b m )

然后我们用 X X 乘以X X 的转置,并乘上系数 1/m 1 / m

1mXXT=(1mmi=1a2i1mmi=1aibi1mmi=1aibi1mmi=1b2i) 1 m X X T = ( 1 m ∑ i = 1 m a i 2 1 m ∑ i = 1 m a i b i 1 m ∑ i = 1 m a i b i 1 m ∑ i = 1 m b i 2 )

设我们有 m m n n 维数据记录,将其按列排成 n n m m 的矩阵 X X ,设C=1mXXT C = 1 m X X T ,则 C C 是一个对称矩阵,其对角线分别个各个字段的方差,而第i行j列和j行i列元素相同,表示i和j两个字段的协方差。

协方差矩阵对角化

设原始数据矩阵X X 对应的协方差矩阵为 C C ,而P P 是一组基按行组成的矩阵,设 Y=PX Y = P X ,则 Y Y X X P P 做基变换后的数据。设Y Y 的协方差矩阵为 D D ,我们推导一下D D C C 的关系:

D=====1mYYT1m(PX)(PX)T1mPXXTPTP(1mXXT)PTPCPT D = 1 m Y Y T = 1 m ( P X ) ( P X ) T = 1 m P X X T P T = P ( 1 m X X T ) P T = P C P T

协方差矩阵C是一个是对称矩阵,在线性代数上,实对称矩阵有一系列非常好的性质:

1)实对称矩阵不同特征值对应的特征向量必然正交。

2)设特征向量λ重数为r,则必然存在r个线性无关的特征向量对应于λ,因此可以将这r个特征向量单位正交化。
由上面两条可知,一个n行n列的实对称矩阵一定可以找到n个单位正交特征向量,设这n个特征向量为 e1,e2,,en e 1 , e 2 , ⋯ , e n ,我们将其按列组成矩阵:

E=(e1e2en) E = ( e 1 e 2 ⋯ e n )

则对协方差矩阵 C C 有如下结论:
ETCE=Λ=λ1λ2λn E T C E = Λ = ( λ 1 λ 2 ⋱ λ n )

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 降维最多降到类别数 k1 k − 1 的维数,而 PCA P C A 没有这个限制。

    3) LDA L D A 除了可以用于降维,还可以用于分类。

    4) LDA L D A 选择分类性能最好的投影方向,而 PCA P C A 选择样本点投影具有最大方差的方向。

你可能感兴趣的:(机器学习)