Principal Component Analysis (PCA)主成分分析

什么是主成分分析?

功能:降维以及特征构建

  1. PCA被用于减少数据维度,但不损失太多信息
  2. PCA被用于机器学习、信号处理和图像压缩

PCA的目的

通过对变量的线性结合,来解释或者总结一组数据量较大的变量的方差、协方差结构。

PCA的背景

假设有两个属性A1、A2,n个训练样本。x表示A1的值,y表示A2 的值
A1的方差为:

var(A1)=ni=1(xix¯)2n1

A1和A2 的协方差为:
cov(A1,A2)=ni=1(xix¯)(yiy¯)n1

  • 如果方差为正,则这两个维度同时增长
  • 如果方差为负,一者增加,另一者减少
  • 如果方差为零,两者相互独立

协方差矩阵
假设有n个属性,A1,A2,…,An
协方差矩阵:

Cn×n=(ci,j),where ci.j=cov(A,Aj)

Principal Component Analysis (PCA)主成分分析

特征向量

  • M为n×n的矩阵
    如果存在n×n,那么v是m的特征向量
    λ是与特征向量相关的特征值

  • 对于M的任意特征向量v和尺度a

    M×av=λav

  • 于是我们可以选择长度为1的特征向量

    v21+...+v2n=1

  • 如果矩阵M有任意n个特征向量,那么他们两两正交

  • 因此,特征向量可以用作三维向量空间的新基础

二维数值示例

  1. 减去平均值

    • 从每个数据维度,将所有的x都减去他们的平均值,y亦如此。这样可以产生一个平均值为零的数据集。
    • 该步骤简化了方差和协方差级计算。减去平均值并不影响方差与协方差。
    • 给一组原始数据集set,我们可以通过分别减去他们的平均值产生新的数据集:

    Principal Component Analysis (PCA)主成分分析

  2. 计算协方差矩阵
    Principal Component Analysis (PCA)主成分分析
    由于在本例中的协方矩阵中,差非对角线元素均为正,故x与y成正相关,即x增长的时候y也增长。

  3. 计算协方差的特征值以及特征向量
    Principal Component Analysis (PCA)主成分分析
    Principal Component Analysis (PCA)主成分分析

    • 特征向量被绘制成对角点线(如图)
    • 特征向量相互垂直
    • 一条特征向量穿过数据点,就像绘制最适合这些数据点的直线一样
    • 另一条特征向量相比之下,显得不那么重要。
  4. 降维和 Feature Vector
    特征值最高的特征向量就是这组数据的主要成分principle component
    本例中,拥有较大特征值的特征向量正是位于数据中间的那条点线
    下一步是根据特征值进行排序,由高到低,即根据成分的重要性进行排序。
    现在,你可以决定忽视重要性较低的成分,这可能会导致丢失一些信息,但由于特征值较小,故丢失不多。

    步骤:

    • n维数据
    • 计算n为数据的特征向量和特征值
    • 仅选择前p个特征向量(从高到低排序)

Principal Component Analysis (PCA)主成分分析

Feature Vector

FeatureVector=eig1,eig2,...,eign

Feature Vector 要么包含全部特征向量,要么仅包含我们之前选择的p个重要成分。
5.导出新数据
FinalData=RowFeatureVectorxRowZeroMeanData

RowZeroMeanData是经过换位(排序)的的特征向量矩阵
RowZeroMeanData是经过平均值调整的数据,即在数据集在每列当中包含不同的维度

Principal Component Analysis (PCA)主成分分析
Principal Component Analysis (PCA)主成分分析
Principal Component Analysis (PCA)主成分分析


数据重构

  • 当数据重构的时候,很明显,我们会失去一些我们选择放弃的维度。
  • 我们可以根据
    TransformedData=RowFeatureVector×RowDataAdjust

    -得出调整后的数据数据
    RowDataAdjust=RowFeatureVector1×TransformedData=RowFeatureVectorT×TransformedData
  • 以及原始数据
  • RowDataOriginal=RowDataAdjust+OriginalMean

    Principal Component Analysis (PCA)主成分分析

主成分分析步骤

根据n维数据得出N个数据向量,找到kn个正交向量(主成分)是数据降维已达到最佳效果。
1. 正态化输入数据:使得每个属性都落到一个相同的范围
2. 计算k个正交的向量
3. 每一个输入数据(向量)都是k个主成分向量的线性组合
4. 根据主成分的重要性进行降序排序
5. 淘汰弱成分以降维
只适用于数字数据