第十六章 主成分分析(PCA)

PCA

对于主成分分析方法的原理和涉及到的相关数学知识的学习,下面几篇文章讲解的非常好:

  1. 如何通俗易懂地讲解什么是 PCA 主成分分析?
  2. 如何通俗地理解协方差与相关系数?
  3. 如何通俗地理解奇异值?
  4. 如何理解拉格朗日乘子法和KKT条件?
  5. 如何通俗地理解协方差与相关系数?

上面几篇文章已经详细的介绍了主成分分析方法的基本概念和实现方法,但还有几点是上面没有涉及,需要继续讨论的:

  1. 经典的PCA方法是针对线性可分的数据进行降维的,其实质是对坐标系进行进行旋转变换,将数据投影到新坐标系的坐标轴上。那如果原始数据就不是线性可分的怎么办呢,我们如何将针对线性可分数据的PCA方法推广到线性不可分数据集上呢?这时就有了利用核方法的KernelPCA来对线性不可分数据进行降维。KernelPCA可以通过非线性映射将数据转换到一个高维空间中,在高维空间中使用PCA将其映射到另一个低维空间中,并通过线性分类器对样本进行划分。简言之,利用KernelPCA可以将线性不可分的数据降维到维度更低的线性可分空间中去,这也是采用核方法将非线性可分转为为线性可分问题的经典算法之一。
  2. PCA的结果容易受到每一维数据的大小的影响,如果我们对每一维数据乘以一个不同的权重因子之后再进行 PCA降维,得到的结果可能与直接进行PCA降维得到的结果相差比较大。要解决这个问题,可以考虑Normalization的方法,采用Batch Normalization或者Layer Normalization等方法,可能可以缓解不同维度之间量纲存在较大差异的问题。

KernelPCA

KernelPCA的核心思想其实是体现在计算协方差矩阵上的。传统的PCA方法在计算协方差时,采用的方法如下:

第十六章 主成分分析(PCA)_第1张图片

在KernelPCA中,向量的点积运算是通过核函数来实现的,通过核函数来近似求出高维空间的向量点积,公式如下:

第十六章 主成分分析(PCA)_第2张图片
通过采用核函数得到的高维空间的相似度矩阵为:

第十六章 主成分分析(PCA)_第3张图片

这个矩阵计算的是高维空间中的向量的相似度,但并没有显示计算新的特征空间也就没有在新特征空间做标准化处理,我们不能保证新特征空间下的特征平均值为0,所以要对K做中心化,对核相似度矩阵中心化的计算过程如下:
第十六章 主成分分析(PCA)_第4张图片

之后的步骤和线性PCA方法是一样的,对经过中心化的核矩阵进行奇异值分解,选择前 k k k个最大的特征值所对应特征向量。但和线性PCA不一样的一点是,这里的特征向量并不是主成分轴,而是将样本映射到这些轴上。

核技巧的内容可以看我的另一篇博客《统计学习方法(第二版)》学习笔记 第一章 统计学习及监督学习概论,KernelPCA的具体证明和实战可以参考大佬的博客非线性映射——核主成分分析

主成分选择

对具有 n n n个特征维度的样本集进行PCA降维后,可以得到 n n n个主成分,然后选择其中对应的特征值最大的前 k k k个主成分作为降维后保留的特征对原有数据进行变换,完成降维。而对 k k k值的选择,是没有公式可以计算的,一般都是通过规则来确定,比如我们通常取 k k k使得累积方差贡献率达到规定的百分比(70%~80%)以上,这里的贡献率其实就是前 k k k个最大特征值的和占所有特征值之和的比例。

我们可以通过崖底碎石图和累计贡献率图来对计算得到的特征值的规律进行可视化

  • 崖底碎石图:将特征值从大到小排列,并计算其中每个特征值占所有特征值之和的比例,将结果作为 y y y轴绘制到图像中。可以很明显的看出,一开始的特征值占所有特征值之和的比例很大,之后特征值所占比例逐渐减小。

第十六章 主成分分析(PCA)_第5张图片

  • 累积贡献率图:将特征值从大到小排列后,前 k k k个特征值之和占所有特征值之和的比例作为纵坐标,绘制出的图如下:

    第十六章 主成分分析(PCA)_第6张图片

因子负荷量

k k k个主成分与变量 x i x_i xi的相关系数称为因子负荷量,它表示第 k k k个主成分 y k y_k yk和变量 x i x_i xi的相关关系

累积方差贡献率反映了主成分保留信息的比例,但它不能反映对某个原有变量保留信息的比例,计算得到的 k k k个主成分 y 1 , y 2 , … , y k y_1,y_2,…,y_k y1,y2,,yk对原有变量 x i x_i xi的贡献率(保存的原有变量 x i x_i xi的信息的比例)的公式为:

第十六章 主成分分析(PCA)_第7张图片

你可能感兴趣的:(机器学习,机器学习,算法,pca降维,kernel,主成分分析)