全文共 2210 字,19 幅图,

预计阅读时间 12 分钟。

本文所有思路都来自 Luis Serrano 的油管视屏「Principle Component Analysis (PCA)」,纯纯的致敬!

PCA 是无监督学习中的最常见的数据降维方法,但实际问题特征很多的情况,PCA 通常会预处理来减少特征个数。

1

提问:如果给我们 5 个人照相,照相机应该放在哪?

回答:放在图中打钩的地方,因为人脸面对照相机正面分布最开,最容易把所有人脸都照进来。

思考人脸分布最开 ≈ 数据方差最大

2

试想预测房价的场景,假如我们用 5 个特征来预测房价,它们是

  1. 房间面积

  2. 房间个数

  3. 卧室个数

  4. 周边好学校个数

  5. 周边犯罪率

但仔细一看,这 5 个特征可以抽象成 2 个,前三个都在讨论「尺寸」而后两个都在讨论「环境」。那么是否可以把这 5 维特征降到 2 维特征呢?

3

5 维数据太难可视化,人还是最容易可视化 2 维数据。

给定 2 维数据,如果向两条线上做投影,应该选择投影后数据分得更开的那条线。试想假如接下来做分类是不是更容易些?

将这 2 维特征实例化为房间面积房间个数,它们通常成正比关系。假设我们找到一条向上的直线,将这 2 维特征投影到该直线上,如下图。

特征房间面积房间个数有些重复了,因此把它们降到 1 维也没有丢失太多信息,如下图。

4

场景有了,直觉也有了,那么我们该看看 PCA 背后的数学原理了。其实非常简单,你只用知道均值方差协方差这三个基本统计概念就行了。原谅我这次必须要带点公式,但我相信现在小孩应该能懂。

均值

均值不要太简单,自己看图,我不解释了行吗?

方差

方差的概念稍微难些。方差是衡量数据和其均值的偏离程度。如上图上半部分,两组数据的均值都为 0 ,而第二组数据的方差 (50/3) 大于第一组数据的方差 (2/3),因此第二组数据更加分散些。

同理,看上图下半部分,数据投影到 x 轴上的方差大于数据投影到 y 轴上的方差。

最后给出计算 N 个数据的方差极简公式 (将每个数据的值减去其均值,平方后再求平均)

X 方差 = 加总(Xi - 均值)2 / N

Y 方差 = 加总(Yi - 均值)2 / N

接着来看两组数据,它们具有相同的方差 (投影到 x 轴和 y 轴),但是这两组数据的模式非常不同,一个趋势向下,一个趋势向上。

这样看来,光靠方差是不能准确描述不同的数据模式了,是时候该介绍协方差了。

协方差

首先给出计算 N 个数据的协方差极简公式 (将数据 X 值和 Y 值相乘,再求平均)

协方差 = 加总(Xi × Yi) / N

这样当

  • 协方差 > 0, 趋势向上,X 和 Y 正相关

  • 协方差 < 0, 趋势向下,X 和 Y 负相关

  • 协方差 ≈ 0, 无明显趋势,X 和 Y 不相关

最后把所计算的均值方差协方差汇总成协方差矩阵。

协方差矩阵

对于 2 维数据,它的协方差矩阵是 2×2 的对称矩阵。类比一下,

  • 对于 5 维数据,它的协方差矩阵是 5×5 的对称矩阵。

  • 对于 D 维数据,它的协方差矩阵是 D×D 的对称矩阵。

根据上面数据模式,我们计算出来他的协方差矩阵为

[ 9, 4

4, 3 ]

我们发现,

  • 数据在 x 轴上的方差 9 大于数据在 y 轴上的方差 3,合理!

  • X 和 Y 正相关,协方差为 4,合理!

5

我们知道矩阵其实就是线性转换,那么

矩阵 × 向量 1 = 向量 2

就是把向量 1 线性转换成向量 2。

不懂?没关系,跟着上图,试着用矩阵 [9, 4; 4, 3] 来转换几个标准点

  • (0, 0) → (0, 0)

  • (1, 0) → (9, 4)

  • (0, 1) → (4, 3)

  • (-1, 0) → (-9, -4)

  • (0, -1) → (-4, -3)

那么圆形被该矩阵转换成向上的椭圆形

6

在以上线性转换中,有两个非常重要的向量,它们方向不变,长度改变。这样的向量称为特征向量,对应向量的长度称为特征值。如下图所示。

红色和青色向量特征向量,它们方向不变。而黄色向量不是特征向量,它们方向变了

求特征向量和特征值的方法就不细说了,就是解一个方程

矩阵 × 向量 = 常数 × 向量

你看,等式左边是用矩阵相乘将向量做了线性转化,而等式右边是用常数相乘将向量做了放缩 (没改变向量的方向哦)。

7

讲完特征向量和特征值后,我们可以介绍 PCA 的操作了,一句话,PCA 将数据投影到特征向量 (主成分) 上,而特征值代表数据投影后的方差大小。

因此降维操作可是看成是选择特征值比较大的几个主成分作为特征。如上图,我们只保留了第一个主成分 (特征值 11),而去除了第二个主成分 (特征值 1)。

这样 2 维数据就变成了 1 维数据。因此第二个主成分的特征值 1 比第一个主成分特征值 11 小很多,那么将其去除不会丢失太多信息的。 从下面两图也可以看出。

总结

回到开始的场景,来总结一下 PCA 的完整操作。

  1. 一开始我们有 5 维特征,分别是房间面积房间个数卧室个数周边好学校个数周边犯罪率

  2. 这 5 维特征可以体现在一个 5D 图中,虽然我们无法精准的把它画出来。

  3. 计算协方差矩阵,5 维特征得到 5×5 的对称矩阵。

  4. 求出特征向量特征值,将特征值从大到小排序,去除明显比较小 (这个需要点主观判断) 的,假设去除了后三个,保留了前两个。

  5. 这 2 维特征可以体现在一个 2D 图中,我们人类终于可以可视化它了。

  6. 当然原来「5 维特征的数据表」缩减成了「2 维特征的数据表」,希望这 2 维体现的是抽象的尺寸特征环境特征,就像开头那张图一样。

觉得好就帮我传播这个看不懂算我输系列咯,谢谢大家!

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习在线手册深度学习在线手册AI基础下载(pdf更新到25集)备注:加入本站微信群或者qq群,请回复“加群”获取一折本站知识星球优惠券,请回复“知识星球”

喜欢文章,点个在看

AI入门:不用任何公式把主成分分析讲清楚相关推荐

  1. AI入门:不用任何公式把Embedding讲清楚

    全文共 2014 字,16 幅图, 预计阅读时间 20 分钟. 本文受 Jay Alammar 2019年在 QCon 做的演讲启发,纯纯的致敬! Embedding 中文是嵌入,一种把对象 (obj ...

  2. AI入门:不用任何公式把推荐系统讲清楚

    全文共 2573 字,13 幅图, 预计阅读时间 14 分钟. 文末有彩蛋! 我还是推荐系统小白,因此对此课题理解相当浅显,但一定很好懂.这才是学一样新东西的正确开始方式. 01 故事的背景包括 4 ...

  3. 【AI入门学习方法】

    原博文 一. 目的 本文的目的是给出一个简单的,平滑的,易于实现的学习方法,帮助 "普通" 程序员踏入AI领域这个门.这里,我对普通程序员的定义是:拥有大学本科知识:平时工作较忙: ...

  4. 【AI】封杀这个公式,AI智商将为零【转】

    封杀这个公式,AI智商将为零 原创 2017-12-11 Alpha狼 量子学派 转自  Alpha狼  微信公众号 量子学派 本文节选自<人类最美的54个公式> 我思故我在 引 我思故我 ...

  5. 20天学会UI设计(PS+AI)入门教程

    PS.AI是UI设计师必不可少的两项技能,对于想要学习UI设计的人来说,首先就是要学会使用PS和AI.如何才能快速学会这两样呢?下面给大家分享20天学会UI设计(PS+AI)入门教程. 课程介绍 本套 ...

  6. AI 入门怎么学?这份学习指南请收好!

    万事开头难!AI 入门对很多初学 AI 的同学来说是一大难题.搜集了一大堆入门资料,Python.数学.深度学习应有尽有,但就是无从下手,总是在第一章与放弃之间徘徊. 那么,AI 应该如何入门呢? 一 ...

  7. 合适学习人工智能的小白的一本书《极简AI入门:一本书读懂人工智能思维与应用》

    今天看了一本书<极简AI入门:一本书读懂人工智能思维与应用> 对于初学人工智能的小白来说,应该是非常容易看得懂的,书里罗列了人工智能需要学习的各个技能,可以把这本书当作学习人工智能的目录( ...

  8. 学人工智能要看什么书?AI入门到进阶10本必看书

    学习人工智能可以从多个方面入手,从基础到进阶,不同的书籍可以帮助你建立不同的技能和知识体系.以下是我推荐的10本必看书: 学人工智能要看什么书?AI入门到进阶10本必看书 <Python编程从入 ...

  9. UI设计(PS+AI)入门教程【视频+素材】

    最近几天很多粉丝私信问我,有没有UI设计教程可以分享一些UI设计教程吗,于是小编就整理了一整套的UI设计入门教程. 今天免费分享给大家,希望对大家学习UI设计过程中有所帮助 PS.AI是UI设计师必不 ...

最新文章

  1. springboot学习笔记:12.解决springboot打成可执行jar在linux上启动慢的问题
  2. 一、win7下安装yii2
  3. 圆弧半径计算图解_刀尖圆弧半径补偿G40,G41,G42 左补偿右补偿你真的能搞清楚吗...
  4. 路径.git下的文件
  5. 什么是网络单纯型算法
  6. 西游中算命先生袁守诚泄露了天机,为何却是泾河龙王被砍头?
  7. 200行Python实现简单的区块链系统
  8. 恶搞c语言小程序,用C语言做的 一个整人的小程序
  9. Html隐藏占空间与隐藏不占空间
  10. macbook边缘磕碰如何修复
  11. 自定义View时,用到Paint Canvas的一些温故,PropertyAnimation中的ObjectAnimator(动画三,“大大姐”的旋转跳跃)...
  12. 2018桂林J - Stone Game(博弈)
  13. 图片的缩放和拖拽功能
  14. 嵌入式linux qos tc,iptables和tc脚本实现智能QOS
  15. JavaScript 杨辉三角 杨辉三角 II
  16. Win11怎么打开3D查看器
  17. android程序字体大小,Android如何动态调整应用字体大小详解
  18. Python爬虫百度新闻标题
  19. python合法标识符_Python isidentifier()判断是否为Python的合法标识符
  20. 2023届-计算机视觉算法岗实习面经

热门文章

  1. 钢琴快案例及手风琴案例
  2. Apache 各启动方式的差别
  3. mysql merge表介绍
  4. (笔试题)最大覆盖点
  5. 基于phantomJS实现web性能监控
  6. TopFreeTheme精选免费模板【20130701.特别版】
  7. 如何循序渐进向DotNet架构师发展
  8. 【论文阅读整理】A Survey on Device-free Indoor Localization and Tracking in the Multi-resident Environment
  9. Quartus II14.1安装教程
  10. 光流 | 基于光流法实现视觉里程计Visual Odometry(源代码)