PCA(主成分分析)

PCA,Principle Component Analysis,即主成分分析法,是特征降维的最常用手段。顾名思义,PCA 能从冗余特征中提取主要成分,在不太损失模型质量的情况下,提升了模型训练速度。

如上图所示,我们将样本到红色向量的距离称作是投影误差(Projection Error)。以二维投影到一维为例,PCA 就是要找寻一条直线,使得各个特征的投影误差足够小,这样才能尽可能的保留原特征具有的信息。

假设我们要将特征从 nnn 维度降到 kkk 维:PCA 首先找寻 kkk 个 nnn 维向量,然后将特征投影到这些向量构成的 kkk 维空间,并保证投影误差足够小。下图中中,为了将特征维度从三维降低到二位,PCA 就会先找寻两个三维向量 u(1)u^{(1)}u(1),u(2)u^{(2)}u(2) ,二者构成了一个二维平面,然后将原来的三维特征投影到该二维平面上:

算法流程

假定我们需要将特征维度从 nnn 维降到 kkk 维。则 PCA 的执行流程如下:

  1. 特征标准化,平衡各个特征尺度:
    xj(i)=xj(i)−μjsj,μj为特征j的均值,sj为特征j的标准差。x^{(i)}_j=\frac{x^{(i)}_j−μ_j}{sj},\ μ_j 为特征\ j\ 的均值,s_j\ 为特征\ j\ 的标准差。xj(i)​=sjxj(i)​−μj​​, μj​为特征 j 的均值,sj​ 为特征 j 的标准差。

  2. 计算协方差矩阵 ΣΣΣ :
    Σ=1m∑i=1m(x(i))(x(i))T=1m⋅XTX\Sigma = \frac 1m \sum_{i=1}^m(x^{(i)})(x^{(i)})^T =\frac1m\cdot X^TX Σ=m1​i=1∑m​(x(i))(x(i))T=m1​⋅XTX

  3. 通过奇异值分解(SVD),求取 ΣΣΣ 的特征向量(eigenvectors):
    (U,S,VT)=SVD(Σ)(U,S,V^T)=SVD(\Sigma)(U,S,VT)=SVD(Σ)

  4. 从 UUU 中取出前 kkk 个左奇异向量,构成一个约减矩阵 UreduceUreduceUreduce :
    Ureduce=(u(1),u(2),⋯,u(k))U_{reduce}=(u^{(1)},u^{(2)},⋯,u^{(k)})Ureduce​=(u(1),u(2),⋯,u(k))

  5. 计算新的特征向量: z(i)z^{(i)}z(i)
    z(i)=UreduceT⋅x(i)z^{(i)}=U^T_{reduce}⋅x^{(i)}z(i)=UreduceT​⋅x(i)

特征还原

因为PCA仅保留了特征的主成分,所以PCA是一种有损的压缩方式,假定我们获得新特征向量为:
z=UreduceTxz=U^T_{reduce}xz=UreduceT​x

那么,还原后的特征 xapproxx_{approx}xapprox​ 为:
xapprox=Ureducezx_{approx}=U_{reduce}zxapprox​=Ureduce​z

降到多少维才合适?

从 PCA 的执行流程中,我们知道,需要为 PCA 指定目的维度 kkk 。如果降维不多,则性能提升不大;如果目标维度太小,则又丢失了许多信息。通常,使用如下的流程的来评估 kkk 值选取优异:

  1. 求各样本的投影均方误差:
    min⁡1m∑j=1m∣∣x(i)−xapprox(i)∣∣2\min \frac 1m \sum_{j=1}^m||x^{(i)}-x^{(i)}_{approx}||^2minm1​j=1∑m​∣∣x(i)−xapprox(i)​∣∣2

  2. 求数据的总变差
    1m∑j=1m∣∣x(i)∣∣2\frac 1m \sum_{j=1}^m||x^{(i)}||^2m1​j=1∑m​∣∣x(i)∣∣2

  3. 评估下式是否成立:
    min⁡1m∑j=1m∣∣x(i)−xapprox(i)∣∣21m∑j=1m∣∣x(i)∣∣2≤ϵ\frac {\min \frac 1m \sum_{j=1}^m||x^{(i)}-x^{(i)}_{approx}||^2} {\frac 1m \sum_{j=1}^m||x^{(i)}||^2} ≤ϵm1​∑j=1m​∣∣x(i)∣∣2minm1​∑j=1m​∣∣x(i)−xapprox(i)​∣∣2​≤ϵ

其中, ϵϵϵ 的取值可以为 0.01,0.05,0.10,⋯0.01,0.05,0.10,⋯0.01,0.05,0.10,⋯0.01,0.05,0.10,⋯0.01,0.05,0.10,⋯0.01,0.05,0.10,⋯ ,假设 ϵ=0.01=0.01ϵ=0.01=0.01ϵ=0.01=0.01 ,我们就说“特征间 99% 的差异性得到保留”。

不要提前优化

由于 PCA 减小了特征维度,因而也有可能带来过拟合的问题。PCA 不是必须的,在机器学习中,一定谨记不要提前优化,只有当算法运行效率不尽如如人意时,再考虑使用 PCA 或者其他特征降维手段来提升训练速度。

不只是加速学习

降低特征维度不只能加速模型的训练速度,还能帮我们在低维空间分析数据,例如,一个在三维空间完成的聚类问题,我们可以通过 PCA 将特征降低到二维平面进行可视化分析。

例如下表中,我们有将近几十个特征来描述国家的经济水平,但是你仔细观察发现,我们很难直观的看出各个国家的经济差异。

借助于 PCA,我们将特征降低到了二维,并在二维空间进行观察,很清楚的就能发现美国和新加坡具有很高的经济水平:

参考资料

  • 强大的矩阵奇异值分解(SVD)及其应用

7.2 PCA-机器学习笔记-斯坦福吴恩达教授相关推荐

  1. 4.4 机器学习系统设计--垃圾邮件分类-机器学习笔记-斯坦福吴恩达教授

    机器学习系统设计–垃圾邮件分类 假定我们现有一封邮件,其内容如下: From: cheapsales@buystufffromme.com To: ang@cs.stanford.edu Subjec ...

  2. 7.5 程序示例--PCA for 数据可视化-机器学习笔记-斯坦福吴恩达教授

    程序示例–PCA for 数据可视化 我们有一张小鸟的图片,这是一个三通道彩色图像: 我们将图片的像素按颜色进行聚类,并在三维空间观察聚类成果: 似乎在三维空间可视化不是那么直观,借助于PCA,我们将 ...

  3. 7.4 程序示例--PCA for 加速学习-机器学习笔记-斯坦福吴恩达教授

    程序示例–PCA for 加速学习 现在,我们手上有一个人脸数据集,每张图片大小为 32×32 ,以像素为特征,则每个特征向量的维度就为 1024 维: 考虑使用 PCA 进行降低特征维度到 100 ...

  4. 7.3 程序示例--PCA 模型-机器学习笔记-斯坦福吴恩达教授

    程序示例–PCA 模型 # coding: utf8 # pca/pca.pyimport numpy as npdef normalize(X):"""数据标准化处理A ...

  5. 3.12 程序示例--多分类问题-机器学习笔记-斯坦福吴恩达教授

    多分类问题 我们手上包含有手写字符的数据集,该数据集来自斯坦福机器学习的课后作业,每个字符图片大小为 20×20 ,总的样本规模为 5000×400 , 我们的神经网络设计如下,包含 1 个隐含层,隐 ...

  6. 10.1 掌握大数据-机器学习笔记-斯坦福吴恩达教授

    掌握大数据 在算法分析与优化一节中,我们就提到,在机器学习界流传着这样一句话: It's not who has the best algorithm that wins. It's who has ...

  7. 9.1 基于内容的推荐系统-机器学习笔记-斯坦福吴恩达教授

    基于内容的推荐系统 推荐系统是机器学习最重要的应用之一,你所知道的淘宝.亚马逊.facebook.豆瓣这些网站都把推荐系统作为了核心.在某个电影资讯的网站,有那么一份用户对于电影的打分(1 - 5 分 ...

  8. 8.1 概述-机器学习笔记-斯坦福吴恩达教授

    概述 异常检测(Anomaly Detection)是机器学习里面的一个常见应用,机器通过训练,将知道什么样的样本是正常样本,从而具备识别异常样本的能力. 飞机制造商在飞机引擎从生产线上流入市场前,会 ...

  9. 6.6 二分 K-Means 算法-机器学习笔记-斯坦福吴恩达教授

    二分 K-Means 算法 该算法补充自 <机器学习实战> 一书 常规的 K-Means 算法的误差通常只能收敛到局部最小,在此,引入一种称为二分 K-Means(bisecting km ...

  10. 6.3 优化-机器学习笔记-斯坦福吴恩达教授

    优化 和其他机器学习算法一样,K-Means 也要评估并且最小化聚类代价,在引入 K-Means 的代价函数之前,先引入如下定义: μc(i)=样本x(i)被分配到的聚类中心μ^{(i)}_c=样本\ ...

最新文章

  1. i春秋30强挑战赛pwn解题过程
  2. 罗斯蒙特电磁流量计8723说明书_罗斯蒙特8732EM电磁流量计变送器如何接线!
  3. 浅谈代码的执行效率(2):编译器的威力
  4. Java 洛谷 P1219 八皇后
  5. 教你自己制作Vista与DOS双系统
  6. 活跃用户数怎么计算_【数据运营】|如何做好活跃用户的运营?
  7. 百度人脸识别 人脸识别模型_当我说人脸识别很容易时,他们笑了。 但是可以。...
  8. oracle 触发器写法|oracle trigger 语法
  9. Java IO之File
  10. 接收二进制数据_漫话TCP/IP:数据链路层-以太网(1)
  11. OpenGL中的坐标变换、矩阵变换【转载】
  12. 香农编码的gui编码_编码香农编码
  13. python多行注释快捷键
  14. dependency
  15. 带遮挡效果的轮廓线(描边)在3D实时渲染中的一种实现
  16. 豌豆荚搜索手机中的游戏app形成列表的原理
  17. GBF ASIA亚太电池展
  18. cocos获取图片像素
  19. 虚拟机字符界面大小调整
  20. 我的世界游侠联机教程

热门文章

  1. 微信小程序 -字体图标
  2. 算法_Longest Palindromic Substring(寻找最长回文字串)
  3. 如何阅读学术论文、聆听学术报告 —— 叶志明
  4. Spark任务调度流程及调度策略分析
  5. Windows XP环境下Apache2.2.21和Tomcat7.0.26下的整合
  6. 加密和解密.net配置节
  7. HDU 1846 Brave Game
  8. 稀疏数据分析:马蹄估计量及其理论性质
  9. UA MATH636 信息论5 信道编码简介
  10. WPF基础入门 - 1