主成分分析的原理(数学推导式)
时间: 2024-10-31 14:08:41 浏览: 28
主成分分析(PCA,Principal Component Analysis)是一种常用的无监督降维技术,它的基本目标是将高维数据投影到低维空间中,同时最大化保留原始数据的方差信息。其核心思想是通过线性变换找到数据的主要方向,即特征向量,这些方向代表了数据方差最大的方向。
数学上,假设我们有n个样本点x_i (i=1...m),每个样本点都是p维的向量,那么数据矩阵X可以表示为:
X = [x_1, x_2, ..., x_m]
主成分分析的目标是最小化协方差矩阵S的特征值问题:
minimize tr(S^2) 或 maximize tr(S)
其中S = X^T * X / m 是数据的样本均值中心后的协方差矩阵。
解这个问题得到的最大特征值对应的单位特征向量u_1,就是第一个主成分的方向。接着计算新的数据矩阵Y = X * u_1,并去除第一维度的信息,再对剩下的数据做同样的处理,依次得到后续的主成分u_2, u_3...直到第k个。
数学推导公式如下:
1. 第一主成分u_1: 求解cov(X)的特征向量,使得cov(X) * u_1 = λ_1 * u_1,λ_1为最大特征值。
2. 对于每个样本点x_i,沿着u_1方向的得分z_i = x_i * u_1。
3. 更新数据矩阵X -> Z,然后去除u_1的影响,继续求第二、第三主成分等。
相关问题
PCA变换的数学原理推导
PCA(Principal Component Analysis,主成分分析)是一种基于线性代数的数据降维算法。其目的是通过将原始数据映射到新的坐标系上,使得数据在新的坐标系下的方差最大,从而找到数据的主要特征。下面是PCA的数学原理推导:
假设有样本集 $X=\{ x_1,x_2,\cdots,x_n \}$,其中每个样本 $x_i \in \mathbb{R}^d$,现在我们希望将原始数据映射到一个新的坐标系上,使得数据在新的坐标系下的方差最大。设新的坐标系为 $\{ w_1,w_2,\cdots,w_d \}$,其中每个 $w_i$ 是一个长度为 $d$ 的向量。
首先,我们需要对原始数据进行中心化,即将每个样本减去均值,得到新的样本集 $X'=\{ x_1',x_2',\cdots,x_n' \}$,其中 $x_i' = x_i - \frac{1}{n}\sum_{j=1}^n x_j$。
接下来,我们需要找到一个向量 $w_1$,使得将样本 $X'$ 投影到 $w_1$ 上的方差最大。具体来说,对于每个样本 $x_i'$,它在 $w_1$ 上的投影为 $x_i' \cdot w_1$,则样本集 $X'$ 在 $w_1$ 方向上的方差为:
$$
\begin{aligned}
\mathrm{Var}(X'w_1) &= \frac{1}{n} \sum_{i=1}^n (x_i' \cdot w_1 - \bar{x}' \cdot w_1)^2 \\
&= \frac{1}{n} \sum_{i=1}^n [(x_i' - \bar{x}') \cdot w_1]^2 \\
&= \frac{1}{n} \sum_{i=1}^n (w_1^T(x_i' - \bar{x}'))^2 \\
&= \frac{1}{n} \sum_{i=1}^n w_1^T(x_i' - \bar{x}')(x_i' - \bar{x}')^Tw_1 \\
&= w_1^T\left(\frac{1}{n} \sum_{i=1}^n (x_i' - \bar{x}')(x_i' - \bar{x}')^T\right)w_1 \\
&= w_1^TSw_1
\end{aligned}
$$
其中,$\bar{x}'$ 是样本集 $X'$ 的均值向量,$S$ 是样本集 $X'$ 的协方差矩阵,$w_1$ 是一个单位向量。根据上述式子,我们可以看出,$w_1$ 的方向与样本集 $X'$ 的协方差矩阵 $S$ 的主特征向量相同,因为 $w_1$ 的方向确定后,$\mathrm{Var}(X'w_1)$ 就只与 $S$ 的特征值有关,而特征值最大的方向就是协方差矩阵 $S$ 的主特征向量。
因此,我们可以通过求解样本集 $X'$ 的协方差矩阵 $S$ 的特征值和特征向量,找到 $w_1$ 的方向。具体来说,设 $S$ 的特征值和特征向量分别为 $\lambda_1,\lambda_2,\cdots,\lambda_d$ 和 $v_1,v_2,\cdots,v_d$,则 $w_1$ 的方向为 $v_1$。
接着,我们需要找到下一个向量 $w_2$,使得它与 $w_1$ 垂直,并且将样本集 $X'$ 投影到 $w_1$ 和 $w_2$ 构成的平面上的方差最大。具体来说,对于每个样本 $x_i'$,它在 $w_1$ 和 $w_2$ 构成的平面上的投影为 $(x_i' \cdot w_1, x_i' \cdot w_2)$,则样本集 $X'$ 在 $w_1$ 和 $w_2$ 构成的平面上的方差为:
$$
\begin{aligned}
\mathrm{Var}(X'w_1w_2) &= \frac{1}{n} \sum_{i=1}^n (x_i' \cdot w_1 - \bar{x}' \cdot w_1)^2 + (x_i' \cdot w_2 - \bar{x}' \cdot w_2)^2 \\
&= \frac{1}{n} \sum_{i=1}^n [(x_i' - \bar{x}') \cdot w_1]^2 + [(x_i' - \bar{x}') \cdot w_2]^2 \\
&= \frac{1}{n} \sum_{i=1}^n (w_1^T(x_i' - \bar{x}'))^2 + (w_2^T(x_i' - \bar{x}'))^2 \\
&= w_1^T\left(\frac{1}{n} \sum_{i=1}^n (x_i' - \bar{x}')(x_i' - \bar{x}')^T\right)w_1 + w_2^T\left(\frac{1}{n} \sum_{i=1}^n (x_i' - \bar{x}')(x_i' - \bar{x}')^T\right)w_2 \\
&= w_1^TSw_1 + w_2^TSw_2
\end{aligned}
$$
由于 $w_1$ 已经确定,因此我们只需要找到一个与 $w_1$ 垂直的向量 $w_2$,使得 $\mathrm{Var}(X'w_1w_2)$ 最大。我们可以通过最大化 $w_2^TSw_2$ 来实现这一点。
具体来说,我们可以定义一个投影矩阵 $P = \begin{bmatrix} w_1 & w_2 \end{bmatrix}$,将样本集 $X'$ 投影到 $w_1$ 和 $w_2$ 构成的平面上,得到新的样本集 $Y = \{ y_1,y_2,\cdots,y_n \}$,其中 $y_i = P^Tx_i'$。则样本集 $Y$ 的协方差矩阵为 $S_Y = \frac{1}{n}YY^T$。我们需要找到一个单位向量 $w_2$,使得 $w_2^TS_Yw_2$ 最大。根据拉格朗日乘数法,可以得到:
$$
S_Yw_2 = \lambda w_2
$$
其中,$\lambda$ 是 $S_Y$ 的特征值。因此,$w_2$ 的方向与 $S_Y$ 的主特征向量相同。由于 $S_Y$ 是对称矩阵,$w_1$ 和 $w_2$ 的方向就是 $S_Y$ 的前两个主特征向量。以此类推,我们可以找到 $d$ 个主成分,从而将原始数据映射到 $d$ 维空间中。
总结一下,PCA 的步骤如下:
1. 对原始数据进行中心化,得到新的样本集 $X'$。
2. 求解样本集 $X'$ 的协方差矩阵 $S$ 的特征值和特征向量。
3. 选择前 $d$ 个特征向量,构成新的坐标系 $\{ w_1,w_2,\cdots,w_d \}$。
4. 将样本集 $X'$ 投影到新的坐标系上,得到新的样本集 $Y$。
阅读全文