📜  PCA的数学方法

📅  最后修改于: 2022-05-13 01:55:11.124000             🧑  作者: Mango

PCA的数学方法

什么是PCA?

成分分析的主要指导原则是特征提取,即“数据集的特征应该较少,彼此之间的相似性也非常少。”在 PCA 中,从本质上非常不同的原始特征中提取一组新的特征。因此,一个n 维特征空间被转换为一个m 维特征空间。 ,其中维度彼此正交。

正交性的概念:

(为了理解这个话题,我们必须去了解线性代数中的向量空间概念)向量空间是一组向量。它们可以表示为称为BASIS VECTORS 的较小向量集的线性组合。所以向量空间中的任何向量“v”都可以表示为:

v = \sum_{i=1}^na_iu_i

其中a表示“n”个标量,u 表示基向量。基向量彼此正交。向量的正交性可以被认为是向量在二维向量空间中垂直的延伸所以我们的特征向量(数据集)可以转换成一组主成分(就像基向量一样)。

PCA的目标:

  1.  新特征是不同的,即新特征(在 PCA 的情况下,它们是主成分)之间的协方差为0
  2. 主成分是按照它捕获的数据的可变性的顺序生成的。因此,第一个主成分应该捕获最大的可变性,第二个应该捕获次高的可变性等。
  3. 新特征/主成分的方差之和应该等于原始特征的方差之和。

PCA的工作:

PCA 处理称为数据集协方差矩阵的特征值分解的过程。步骤如下:

  • 首先,计算数据集的协方差矩阵。
  • 然后,计算协方差矩阵的特征向量。
  • 具有最高特征值的特征向量表示存在最大方差的方向。所以这将有助于识别第一个主成分。
  • 具有次高特征值的特征向量表示数据具有最高剩余方差并且还与第一方向正交的方向。因此,这有助于识别第二个主成分。
  • 像这样, 识别具有前“k”个特征值的前“k”个特征向量以获得“k”个主成分。

PCA 的数值:

考虑以下数据集

x12.50.52.21.93.12.32.01.01.51.1
x22.40.72.92.23.02.71.61.11.60.9

步骤 1:标准化数据集

均值x_1        = 1.81 = x_{1mean}

均值x_2        = 1.91 = x_{2mean}

我们将更改数据集。

x_{1new} = x_1 + x_{1mean} 0.69-1.310.390.091.290.490.19-0.81-0.31-0.71
x_{2new} = x_2 + x_{1mean}0.49-1.210.990.291.090.79-0.31-0.81-0.31-1.01

步骤 2:找到特征值和特征向量

相关矩阵 c = C = \left(\frac{X \cdot X^T}{N-1}\right)

其中,X 是数据集矩阵(在这个数字中,它是一个 10 X 2 矩阵)

X^T         是 X 的转置(在这个数值中,它是一个 2 X 10 矩阵),N 是元素数 = 10

所以, C = \left(\frac{X \cdot X^T}{10 - 1}\right)= \left(\frac{X \cdot X^T}{9}\right)

{所以为了计算相关矩阵,我们必须将数据集矩阵与其转置相乘}

C = \begin{bmatrix} 0.616556 & 0.615444\\ 0.615444 & 0.716556 \end{bmatrix}

使用等式, | C - \lambda          我| = 0方程 (i)其中 { \lambda 是特征值,I 是单位矩阵 }

所以求解方程(i)

\begin{bmatrix} 0.616556 & 0.615444 \\ 0.615444 & 0.716556 \end{bmatrix} - \lambda \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}

\begin{vmatrix} 0.616556-\lambda & 0.615444 \\ 0.615444 & 0.716556-\lambda \end{vmatrix} =  0

取左边的行列式,我们得到

0.44180 - 0.616556\lambda - 0.716556\lambda + \lambda^2 - 0.37877 = 0

\lambda^2 - 1.33311\lambda + 0.06303 = 0

我们得到两个值\lambda        , 即( \lambda_1        ) = 1.28403 和 ( \lambda_2        ) = 0.0490834 。现在我们必须找到特征值的特征向量\lambda_1        \lambda_2

为了从特征值中找到特征向量,我们将使用以下方法:

首先,我们将使用等式找到特征值 1.28403 的特征向量 C \cdot X = \lambda \cdot X

\begin{bmatrix} 0.616556 & 0.615444 \\ 0.615444 & 0.716556 \end{bmatrix} \cdot \begin{bmatrix} x \\ y \end{bmatrix} = 1.28403 \cdot \begin{bmatrix} x \\ y \end{bmatrix}

\begin{bmatrix} 0.616556x + 0.615444y \\ 0.615444x + 0.716556y \end{bmatrix} = \begin{bmatrix} 1.28403x \\ 1.28403y \end{bmatrix}

求解矩阵,我们得到

0.616556x + 0.615444y = 1.28403x; x = 0.922049 y

(x 和 y 属于矩阵 X)所以如果我们让 y = 1,那么 x 就是 0.922049。所以现在更新后的 X 矩阵将如下所示:

X = \begin{bmatrix} 0.922049 \\ 1 \end{bmatrix}

其次,我们将使用等式找到特征值 0.0490834 的特征向量{与上一步相同的方法)

\begin{bmatrix} 0.616556 & 0.615444 \\ 0.615444 & 0.716556 \end{bmatrix} \cdot \begin{bmatrix} x \\ y \end{bmatrix} = 0.0490834 \cdot \begin{bmatrix} x \\ y \end{bmatrix}

\begin{bmatrix} 0.616556x + 0.615444y \\ 0.615444x + 0.716556y \end{bmatrix} = \begin{bmatrix} 0.0490834x \\ 0.0490834y \end{bmatrix}

求解矩阵,我们得到

0.616556x + 0.615444y = 0.0490834x; y = -0.922053

(x 和 y 属于矩阵 X)所以如果我们让 x = 1,y 的结果是 -0.922053 所以现在更新后的 X 矩阵将如下所示:

X = \begin{bmatrix} 1 \\ -0.922053 \end{bmatrix}

特征值之和 ( \lambda_1        ) 和 ( \lambda_2        ) = 1.28403 + 0.0490834 = 1.33 = 总方差 {大部分方差来自\lambda_1        }

第 3 步:排列特征值

具有最高特征值的特征向量是主成分 的数据集。所以在这种情况下, lambda1 的特征向量是主成分。

{基本上为了完成数值,我们只需要解决到这一步,但是如果我们必须证明为什么我们选择了那个特定的特征向量,我们必须遵循从 4 到 6 的步骤}

第 4 步:形成特征向量

\begin{bmatrix} 0.677873 & 0.735179 \\ 0.735179 & -0.677879 \end{bmatrix}            这是数值的特征向量

其中第一列是特征向量\lambda_1        &第二列是特征向量\lambda_2

第 5 步:转换原始数据集

使用等式 Z = XV

\begin{bmatrix} 0.69 & 0.49 \\ -1.31 & -1.21 \\ 0.39 & 0.99 \\ 0.09 & 0.29 \\ 1.29 & 1.09 \\ 0.49 & 0.79 \\ 0.19 & -0.31 \\ -0.81 & -0.81 \\ -0.31 & -0.31 \\ -0.71 & -1.01 \end{bmatrix} \cdot \begin{bmatrix} 0.677873 & 0.735179 \\ 0.735179 & -0.677879 \end{bmatrix} = \begin{bmatrix} 0.8297008 & 0.17511574 \\ -1.77758022 & -0.14285816 \\ 0.99219768 & -0.38437446 \\ 0.27421048 & -0.13041706 \\ 1.67580128 & 0.20949934 \\ 0.91294918 & -0.17528196 \\ -1.14457212 & -0.04641786 \\ -0.43804612 & -0.01776486 \\ -1.22382.62 & 0.16267464 \end{bmatrix} = Z

第 6 步:重建数据

使用等式 X = Z*V^T               ( V^T         是 V) 的转置,X = 行零均值数据

\begin{bmatrix} 0.8297008 & 0.17511574 \\ -1.77758022 & -0.14285816 \\ 0.99219768 & -0.38437446 \\ 0.27421048 & -0.13041706 \\ 1.67580128 & 0.20949934 \\ 0.91294918 & -0.17528196 \\ -1.14457212 & -0.04641786 \\ -0.43804612 & -0.01776486 \\ -1.22382.62 & 0.16267464 \end{bmatrix} \cdot \begin{bmatrix} 0.677873 & 0.735179 \\ 0.735176 & -0.677879 \end{bmatrix} = \begin{bmatrix} 0.6899999766573 & 0.4899999834233 \\ -1.3099999556827 & -1.2099999590657 \\ 0.389999968063 & 0.9899999665083 \\ 0.0899999969553 & 0.2899999901893 \\ 0.61212695653593 & 0.35482096313253 \\ 0.4899999834233 & 0.7899999732743 \\ 0.189999935723 & -0.309999995127 \\ -0.8099999725977 & -0.8099999725977 \\ -0.3099999895127 & -0.3099999895127\\ -0.7099999759807 & -1.0099999658317 \end{bmatrix}

所以为了重建原始数据,我们遵循:

行原始数据集 = 行零均值数据 + 原始均值

\begin{bmatrix} 0.6899999766573 & 0.4899999834233 \\ -1.3099999556827 & -1.2099999590657 \\ 0.389999968063 & 0.9899999665083 \\ 0.0899999969553 & 0.2899999901893 \\ 0.61212695653593 & 0.35482096313253 \\ 0.4899999834233 & 0.7899999732743 \\ 0.189999935723 & -0.309999995127 \\ -0.8099999725977 & -0.8099999725977 \\ -0.3099999895127 & -0.3099999895127\\ -0.7099999759807 & -1.0099999658317 \end{bmatrix} + \begin{bmatrix} 1.81 & 1.91 \end{bmatrix} = \begin{bmatrix} 2.49 & 2.39 \\ 0.5 & 0.7 \\ 2.19 & 2.89 \\ 1.89 & 2.19 \\ 3.08 & 2.99 \\ 2.30 & 2.7 \\ 2.01 & 1.59 \\ 1.01 & 1.11 \\ 1.5 & 1.6 \\ 1.1 & 0.9 \end{bmatrix}

所以对于第一特征值的特征向量,可以像原始数据集一样重构数据。因此我们可以说数据集的主成分是 \lambda_1            是 1.28403 然后是 \lambda_2        即 0.0490834