freeCodeCamp/guide/chinese/machine-learning/principal-component-analysis/eigen-faces/index.md

2.2 KiB
Raw Blame History

title localeTitle
Eigen Faces 自己的面孔

特征面孔

大纲

  • 问题
  • 解决方法
  • 数据集
  • 数学分析
  • 影像重建

问题

我们通常使用数据协方差矩阵的特征值和特征向量来计算我们的主成分。如果由于内存问题而无法计算协方差矩阵怎么办?

解决方法

我们现在使用一个技巧。我们使用多个图像而不是使用协方差矩阵的图像尺寸。这开辟了另一个优势。现在我们拥有了所有图像的特征向量我们所需要的只是这些m图像能够重建世界上的任何图像。

定义数据集

考虑我们有大小为nx n的灰度图像。 m的数量级为100n的数量级为10000.我们的目标是选择正确表示图像所有特征的k个分量。 我们现在创建一个矩阵X我们在那里按行存储展平的图像n ^ 2 x 1。因此X的尺寸为n ^ 2 x m。

数学分析

计算这个矩阵的协方差是事情变得有趣的地方。 矩阵X的协方差定义为点XXT其维数为n ^ 2 xn ^ 2.对于如此大的数据集,这显然会超出内存。 现在考虑以下方程组。 dotXTXV =λV其中V是特征向量λ是相应的特征值。 预先乘以XXXTXV=λ点X.V 因此我们发现协方差矩阵的特征向量只是图像矩阵和点XTX的特征向量的点积。

因此我们计算点XTX其维数仅为mxm并使用该矩阵的特征向量来构造特征向量 原始矩阵。 点XTX的m个特征值连同它们对应的特征向量对应于点XXT的m个最大特征值以及它们对应的特征向量。我们的要求 特征向量只是第一个k个本征向量及其相应的特征值。我们现在计算一个特征脸矩阵这只是对它们加权的图像 特征向量。每个k图像的权重现在将是点XT特征脸前k个值

影像重建

这种方法可以帮助我们仅使用m个图像的k个特征来表示任何图像。可以使用这些权重来重建任何图像。 要获得任何图像, 图像i=点特征脸k权重[i]。T