网络知识 娱乐 主成分分析PCA

主成分分析PCA

原文链接

PCA简介

如图所示,这是一个二维点云,我们想找出方差最大的方向,如右图所示,这个最大方向的计算,就是PCA做的事情。在高维情况下,PCA不光可以计算出最大方差方向,还可以计算第二大,第三大方向等。

PCA(Principal Components Analysis),中文名也叫主成分分析。它可以按照方差大小,计算出相互正交的方向,这些方向也叫主方向。它常用于对高维数据进行降维,也就是把高维数据投影到方差大的几个主方向上,方便数据分析。

PCA的计算很简单:

  • 第一步计算数据的协方差矩阵:Cov = ∑ (Di – C) X (Di – C),其中Di是第i个数据,C是数据的平均值
  • 然后计算协方差矩阵的特征值和特征向量,特征向量就是主方向,按照特征值的大小,从大到小依次排列

下面介绍PCA的一些应用。


三维人体模型参数化

如图是一些拟合好的三维人体模型。它是通过扫描了几千个人体,然后用人体模板网格去拟合这些扫描数据得到的。这些拟合后的人体网格,有相同的网格拓扑结构。

假设人体网格有N个顶点,则一个人体的几何可以由3N个浮点数来表示,记这个向量为Si。

如果有K个人体数据,记{Si}的平均向量为ES,Ui = Si - ES,那么{Ui}刻画了这K个人体几何的变化量。

这个一个高维向量,我们可以用PCA对{Ui}进行降维,比如降到k维。设PCA的主方向为D1, D2, ..., Dk, 那么人体几何S = ES + W1 * D1 + W2 * D2 + ... + Wk * Dk,可以用一组权重W = {W1, W2, ..., W3}来表示人体几何。通过设置W可以合成新的人体几何,如图所示,红色的人体是合成的数据,红色之间的人体是相邻人体的顶点线性插值得到的。

W的设置并不直观,我们常见的人体参数有身高,体重,三维等。设这些有意义的参数为C = {C1, C2, ...., Cm}。我们可以用这些人体数据拟合一个C到W的线性映射M,记为MC = W。如下左图所示,这是人体是通过身高,体重参数设置得到的。因为这个参数映射是线性的,我们也可以对已有的人体进行参数编辑。比如设已有的人体参数为W,我们想给他一个delta参数变化,比如身高变化,体重变化等,记为ΔC,则ΔW = MΔC,那么变化后的人体参数为W + ΔW。如下右图所示,中间红色的人体是原始几何,其它的是编辑了身高体重后的人体几何。

这个人体参数化的方法,源自一篇2003年的Siggraph论文《The space of human body shapes: reconstruction and parameterization from range scans》。这个方法是三维人体参数化的一个开始,它很简单直观,也存在不少问题。以后有机会,我们再介绍一些前沿的人体参数化的方法。


PCA讨论

  • PCA是一种线性的降维方法,计算简单直观。
  • 因为其线性的性质,遇到一些严重非线性的情况时,会出现一些问题。
  • PCA抗噪性不强

有兴趣的读者,欢迎参考视频版本