最全PCA-特征提取_pca特征提取(1),腾讯面试算法题

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

在前面的文章中,我们讨论了所谓的维数诅咒,表明在高维空间分类器倾向于过度拟合训练数据。接下来产生的问题是哪些特征应该保留,哪些应该从高维特征向量中删除。

如果此特征向量的所有特征是统计独立的,可以简单地从这个向量中消除最小的判别特征。通过各种贪婪特征选择方法可以找到最小的判别特征。然而,在实践中,许多特征互相依赖或依赖于底层未知变量。因此,一个特征可以由一个值表示多种类型信息的组合。除去这样的一个特征将删除更多的信息。在接下来的段落中,我们介绍PCA作为特征提取来解决这个问题,并从两个不同的角度介绍其内部运作。

PCA-一种去相关方法

通常,特征都是相关的。例如,我们想用一幅图中每个像素的红,绿和蓝分量进行分类(例如,检测狗与猫)。对红光最敏感的图像传感器也能捕捉一些蓝光和绿光。类似地,对蓝光和绿光最敏感传感器对红光也表现出一定程度的敏感度。其结果是,一个像素的R,G,B分量是统计相关的。因此,简单地从特征向量中消除R分量也隐含删除了有关G和B信道的信息。换句话说,消除特性之前,我们想改变整个特征空间从而获得底层不相关分量。

考虑下面二维特征空间的例子:
这里写图片描述
图1所示的特征x和y明显是相关的。事实上,它们的协方差矩阵是:
这里写图片描述
另一篇文章中,我们讨论了协方差矩阵的几何解释。我们看到协方差矩阵可以被分解为白色不相关数据上的一系列旋转和缩放操作,其中,旋转矩阵用协方差矩阵的特征向量定义。因此,直观来看,图1中所示的数据D通过旋转每个数据点可以去相关,使得特征向量V成为新的基准轴:
这里写图片描述
所得到数据的协方差矩阵现在是对角的,这意味着新的轴是不相关的:
这里写图片描述
实际上,本实施例中图1所示的原始数据通过线性组合两个一维高斯特征向量x1N(0,1)和x2N(0,1)生成:
这里写图片描述
由于特征x和y是一些底层未知成分x1和x2的线性组合,直接消除x或y会除去来自x1和x2的一些信息。相反,用协方差矩阵的特征向量来旋转数据,使我们能够直接恢复独立成分x1和x2。这可以看作是:原始数据协方差矩阵的特征向量是(每列表示一个特征向量):
这里写图片描述
首先要注意的一点是,在此情况下V是旋转矩阵,对应于45度(cos(45)=0.7071)的旋转,从图1可以明显的看到。其次,将V看做一个线性变换矩阵得到一个新的坐标系,使得每个新特征x’和y’用原始特征x和y的线性组合来表示:
这里写图片描述
换言之,特征空间的去相关对应于未知的,不相关成分x1和y1的恢复(如果变换矩阵是不正交的,多一个未知的比例因子)。一旦这些成分被恢复,降低特征空间的维数就变得很容易了,只需要简单地删除x1或x2即可。

在上述例子中,我们以一个二维问题开始。如果我们想降低维数,问题仍然是是否消除x1(x’)或y1(y’)。尽管这样的选择可能取决于许多因素,如分类问题的数据可分性,但是PCA简单地假定最有趣的特征具有最大方差。这种假设是基于信息论的角度,由于最大方差的维对应于最大熵的维,编码了大部分信息。最小的特征向量将简单地表示噪声成分,而最大的特征向量往往对应于定义数据的主要成分。

由主成分分析降低维数,然后投影数据到协方差矩阵的最大特征向量上。对于上面的例子,所得到的一维特征空间如图3所示:
这里写图片描述
显然,上面的例子很容易推广到更高维的特征空间。例如,在三维情况下,我们既可以将数据投影到两个最大特征向量定义的平面来获得2D特征空间,也可以将其投影到最大特征向量来获得1D特征空间。结果示于图4:
这里写图片描述
Figure 4. 3D data projected onto a 2D or 1D linear subspace by means of Principal Component Analysis.
一般情况下,主成分分析使我们获得原始N维数据的一个线性M维子空间,其中M小于等于N。此外,如果未知,不相关的成分满足高斯分布,则PCA实际上充当了独立成分分析的角色,因为不相关的高斯变量在统计上是独立的。但是,如果底层成分不是正态分布,PCA仅仅产生去相关的变量,这些变量不一定是独立的。在这种情况下,非线性降维算法可能是一个更好的选择。

PCA-正交回归方法

在上述的讨论中,我们以获得独立成分(如果数据不是正态分布,至少是不相关成分)为目标来减少特征空间的维数。我们发现,这些所谓的“主成分”是由我们数据协方差矩阵的特征值分解获得的。然后将数据投影到最大特征向量从而降低维数。

现在,我们不考虑找不相关成分。相反,我们现在尝试通过找到原始特征空间上的一个线性子空间来实现降维数,我们可以将我们的数据映射的这个子空间上使得映射误差最小化。在二维情况下,这意味着我们试图找到一个向量,映射到这个向量上的数据对应于一个映射误差,而这个误差比任何其他可能向量所映射数据的映射误差低。接下来的问题是如何找到这个最佳向量。

考虑图5所示的例子。三种不同的映射向量,以及所得到的一维数据。在接下来的段落中,我们将讨论如何确定哪些映射向量最小化映射误差。在寻找这个向量之前,我们必须定义这个误差函数。
这里写图片描述
Figure 5 Dimensionality reduction by projection onto a linear subspace

一个众所周知的用一条线来拟合2D数据的方法是最小二乘回归。给定自变量x和因变量y,最小二乘回归对应于f(x)=ax+b,使得残差的平方之和这里写图片描述最小化。换句话说,如果x为自变量,那么得到的回归函数f(x)是可以预测因变量y且使得平方误差最小的线性函数。由此产生的模型f(x)是在图5中用蓝线画出,并且被最小化的误差示于图6。

这里写图片描述
然而,在特征提取的情况下,可能会问,为什么我们会定义x为自变量,特征y为因变量。事实上,我们可以很容易地定义y为自变量,并找到一个线性函数f(y)来预测因变量x,使得这里写图片描述是最小化的。这对应于水平映射误差的最小化,并导致不同的线性模型,如图7:
这里写图片描述
显然,自变量和因变量的选择改变了所得到的模型,使得普通的最小二乘回归是对称的回归。这样的原因是最小二乘回归假定自变量是无噪声的,而因变量是有噪声的。然而,在分类的情况下,所有的特征通常是有噪声的观测,使得x和y都应被视为自变量。事实上,我们希望得到一个模型f(x,y),它同时最小化水平和垂直的映射误差。这对应于找到一个模型,使得正交映射误差最小化,如图8。
这里写图片描述
由此产生的回归被称为总体最小二乘回归或正交回归,假定两个变量都是不完善的观察。一个有趣的观察是所获得的向量(表示最小化正交映射误差的映射方向)对应于数据的最大主成分:
这里写图片描述
换言之,如果我们想通过把原始数据映射到一个向量上使得平方映射误差在所有方向上最小来减少维数,那么我们可以简单地映射数据到最大特征向量。这正是我们前一节所谓的PCA,这样的映射也消除了特征空间的相关性。

PCA实际应用:特征脸

上述实例出于可视化的目的限于两个或三个维度,当特征的数量和训练样本相比不可忽略时,降低维数通常会变得非常重要。举个例子,假设我们要执行面部识别,即基于带有标记的面部图像训练数据集来确定人的身份。一个办法是把图像上每个像素的亮度作为特征。如果输入图像的大小是32×32,这意味着该特征向量包含1024个特征值。判断新的图像通过计算这1024维矢量与我们训练数据集中特征向量之间的欧氏距离完成。然后最小距离告诉我们正在寻找的那个人。

然而,如果我们只有几百训练样本,在1024维空间中运行会变得有问题。此外,欧氏距离在高维空间中行为比较奇怪。因此,我们可以利用PCA方法通过计算1024维特征向量协方差矩阵的特征向量来降低特征空间的维数,然后映射每个特征向量到最大特征向量。

因为2D数据的特征向量是2维的,三维数据的特征向量是3维的,1024维数据的特征向量是1024维。换句话说,为了可视化,我们可以重塑每个1024维特征向量到一个32×32的图像。图10展示了由剑桥人脸数据集的特征分解获得的前四个特征向量:
这里写图片描述

每个1024维特征向量可以映射到N个最大的特征向量,并可以表示为这些特征脸的线性组合。这些线性组合的权重确定人的身份。因为最大特征向量表示数据中的最大方差,所以这些特征脸描述信息量最大的图像区域(眼睛,鼻子,嘴等)。只考虑前N(例如,N = 70)个特征向量,特征空间的维数大大减少了。

剩下的问题是现在使用了多少个特征脸,或者在一般情况下,应保留多少个特征向量。去除过多的特征向量可能会删除特征空间里的重要信息,而消除太少会留给我们维数的诅咒。遗憾的是,对这个问题没有明确的回答。尽管交叉验证技术可用于获得超参数的估计值,但选择维数的最佳数目仍然是一个问题,目前主要用一个经验(学术术语,意思是没有太多的“试错法”)方式来解决。注意,当消除特征向量时,这对检查保留多少原始数据的方差(以百分比表示)是有用的,用保留特征值的总和除以所有特征值的总和。

PCA配方

基于前面的章节,我们现在可以列出应用PCA进行特征提取的简单配方:
1)中心化数据
在另一篇文章中,我们表明协方差矩阵可以写为一系列线性操作(缩放和旋转)。特征分解提取这些变换矩阵:特征向量表示旋转矩阵,而特征值代表缩放因子。但是,协方差矩阵不包含数据变换相关的任何信息。事实上,为了表示变换,我们需要仿射变换而不是线性变换。

因此,应用PCA来旋转数据以获得不相关轴之前,任何现有的移位都需要用每个数据点减去数据的平均值。这只是对应于集中数据,使得其平均值为零。

2)标准化数据

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

如果你需要这些资料,可以戳这里获取

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值