矩阵乘法对应一个变换。该变换是把任意一个向量变成另一方向或长度都大多不同的新向量。在这个变换过程中,原向量主要发生旋转变换,伸缩变换。如果矩阵对某一个向量或某些向量只发生伸缩变换,不对这些向量发生旋转变换,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值。
例如现在有一个M*N的矩阵A,我们想要把其变换到新的M*N矩阵B,那么就有A*C= B,其中C是N*N的变换矩阵。而我们仅仅希望A进行伸缩变换,那么C就是A的特征向量构成的矩阵,特征值决定了其在对应的特征向量的伸缩比例。
现有M个N维观测样本A(M*N维,每行代表一个样本),我们同样希望将其变换到新的样本矩阵B(M*N维)。那么就有A * C = B,其中C是N*N的变换矩阵。现在我们希望从A变换到B仅仅发生伸缩变换,伸缩变换体现了每个样本在变换后仅仅沿着某个方向进行伸缩,而伸缩比例体现了每个样本在在该方向上的离散程度。这样,变换矩阵C的特征向量构成的矩阵对A的变换仅仅有伸缩变换。那么,该怎么确定变换矩阵C呢?我们关心的仅仅是变换矩阵的特征向量,而不关心变换矩阵C。对样本矩阵A求解协方差,得到其协方差矩阵D,D刚好是N*N,可以作为一个变换矩阵C。这样求解出D的特征向量构成矩阵E作为变换矩阵就能实现A*E=B仅仅对A沿着某些方向进行伸缩变换。当然,对于E可以选择若干维N*d(d<N),从而实现将原始数据集降维即仅仅使用N维空间的d维子空间。
在做类别预测时,伸缩性可以保证新的样本(在d维子空间中的样本)在较大特征值对应下的特征向量伸缩比例大(分散大),从而使得在该方向具有可分性。
PCA就是利用上述这种思想。其具体步骤分为
1. 将样本数据集按行存放构成样本矩阵Amn
2.将数据样本集中心化即去掉各维度的均值。
2. 求解该矩阵的协方差矩阵D(作为变换矩阵的一种选择)
3.求解该协方差矩阵D的特征值以及对应的特征向量。并按特征值大小排序
4.取前d(d<=n)维构成新的转换矩阵E(n*d)。当d<n时,实现降维
5.将原始样本映射到新的d维子空间中Bmd = A * E.
以上是我的初步理解。若有错误欢迎指正。后期将进行更改提供具有推导过程和应用举例。