Principal component analysis
January 8, 2018
PCA (Principal component analysis) 是一种给数据降维的方法。
利用PCA,能将一堆高维空间的数据映射到一个低维空间,并最大限度保持它们之间的可区分性。
可以看到,图中的数据点大致分布在一条直线上。
因此,我们能够将点投影到直线上,用直线上的点到原点的距离代替原来二维向量。
这样我们的数据就从 二维降到了一维。
推导过程 #
- 设输入数据为X ,X 为 (n * m) 的矩阵,每一行为一个sample。
如果我们要将 数据 转换到一个低维空间,我们应该对 X 做一次线性变换(即更换基底)。
- 设新的 基底 为 P , P 为一个 (m * k) 的矩阵,每一列为一个基底。
- 经过变换后,设新的数据为 Y, 则 $Y=XP$ 。
X 的协方差矩阵为 $X^TX$,我们希望经过变换后的 Y 的协方差矩阵($Y^TY$)
- 对角线上元素绝对值尽可能大
- 非对角线上元素绝对值绝对值尽可能小。
即我们希望,在新的基底下,各个feature的关联性很小,而在同一个feature上,能尽最大可能保持数据的variance。
Y的协方差矩阵的数学表达式:
$$C_Y = Y^TY = (XP)^T(XP) = P^TX^TXP$$
可以证明,为了使 $C_Y$ 满足上述条件,P 应为 $X^TX$ 的特征向量矩阵,其中 P 的每一列为一个特征向量。
那么,由矩阵对角化的知识,可以得到
$$C_Y = P^TX^TXP = D$$
其中D为一对角矩阵,对角线上元素为特征向量对应的特征值。
在这里,每个特征值还对应了新的feature的方差(variance),它的值的大小反映了新的feature用于区分数据的能力。方差小说明这个feature对大部分数据来说基本都一样(直观来说,既然大家都一样,我们就可以说这个feature是多余的)。
因此,我们可以将特征向量根据特征值排序,根据需要将原始数据转换为低维数据,并尽最大可能保持数据的有效性。
参考资料 #
Stackexhange
- How would you explain covariance to someone who understands only the mean?
- Making sense of principal component analysis, eigenvectors & eigenvalues
- Why is the eigenvector of a covariance matrix equal to a principal component?
- Intuition on the definition of the covariance
- Does the magnitude of covariance have any real meaning?
- Intuitive understanding covariance, cross-covariance, auto-/cross-correliation and power spectrum density
Wikipedia
Other
- A Tutorial on Principal Component Analysis’by Jonathon Shlens
- Principal Components Analysis