Principal component analysis

January 8, 2018
机器学习

PCA (Principal component analysis) 是一种给数据降维的方法。

利用PCA,能将一堆高维空间的数据映射到一个低维空间,并最大限度保持它们之间的可区分性。

Example

可以看到,图中的数据点大致分布在一条直线上。

因此,我们能够将点投影到直线上,用直线上的点到原点的距离代替原来二维向量。

这样我们的数据就从 二维降到了一维。

Projection

推导过程 #

  • 设输入数据为X ,X 为 (n * m) 的矩阵,每一行为一个sample。

如果我们要将 数据 转换到一个低维空间,我们应该对 X 做一次线性变换(即更换基底)。

  • 设新的 基底 为 P , P 为一个 (m * k) 的矩阵,每一列为一个基底。
  • 经过变换后,设新的数据为 Y, 则 $Y=XP$ 。

X 的协方差矩阵为 $X^TX$,我们希望经过变换后的 Y 的协方差矩阵($Y^TY$)

  1. 对角线上元素绝对值尽可能大
  2. 非对角线上元素绝对值绝对值尽可能小。

即我们希望,在新的基底下,各个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

  1. How would you explain covariance to someone who understands only the mean?
  2. Making sense of principal component analysis, eigenvectors & eigenvalues
  3. Why is the eigenvector of a covariance matrix equal to a principal component?
  4. Intuition on the definition of the covariance
  5. Does the magnitude of covariance have any real meaning?
  6. Intuitive understanding covariance, cross-covariance, auto-/cross-correliation and power spectrum density

Wikipedia

  1. Covariance
  2. Cross product
  3. Covariance matrix

Other

  1. A Tutorial on Principal Component Analysis’by Jonathon Shlens
  2. Principal Components Analysis