声明:该文章翻译自MIT出版的《DEEP LEARNING》,博主会定期更新文章内容。由于博主能力有限,中间有过错之处希望大家给予批评指正,一起学习交流。

一个简单的机器学习算法,主成分分析(PCA) 可以只使用基本的线性代数知识推导出来。

假设我们有mm个点 {x(1),...x(m)}\{\boldsymbol{x^{(1)},...x^{(m)}}\}的集合,它们都属于Rn\rm R^{n}。假设我们想对这些点应用有损压缩,例如,我们想找到一种方式,用更少的存储来保存这些点,但这样做可能会丢失精度。我们希望尽可能减少精度的损失。

我们编码这些点的一种方式是将它们表示成低维版本。对每个点x(i)∈Rn\boldsymbol{x^{(i)}}\in\rm R^{n},我们找到一个对应的码向量c(i)∈Rl\boldsymbol{c^{(i)}}\in \rm R^{l}。如果ll 比nn 小,那么存储这些点比原始数据耗费更少的存储。我们想找到一些编码函数,可以对输入产生一个码,f(x)=cf(\boldsymbol{x})=\boldsymbol{c} 还有一些解码函数,对于给定的码重构它的输入,即,x≈g(f(x))\boldsymbol{x}\approx g(f(\boldsymbol{x}))

PCA 是根据解码函数的选择定义的。特别地,为了使解码器简单,我们选择矩阵乘法将码映射回 RnR^{n}。让 g(c)=Dcg(\boldsymbol{c})=\boldsymbol{Dc} ,其中D∈Rn×l\boldsymbol{D}\in \rm R^{n\times l} 是定义解码地矩阵。
为解码器计算最优码是非常棘手的问题。为了让编码容易,PCA限制 D\boldsymbol{D}的列是相互正交的。(注意 D\boldsymbol{D}不是一个正交矩阵除非 l=nl=n)

到目前为止讨论的问题,有许多可行的解决方法,因为如果我们按比例减小所有点的 cic_{i},那么我们可以增加 D:,i\boldsymbol{D_{:,i}}的规模。为了给出一个唯一的解,我们限制 D\boldsymbol{D}的所有列都有单位范数。

为了将这个基本想法转成我们可以实现的算法,我们要做的第一件事是搞清楚如何对每个输入点 x\boldsymbol{x}产生最优码点 c∗\boldsymbol{c^{\ast}}。一种方式是最小化输入点x\boldsymbol{x}和它的重构g(c∗)g(\boldsymbol{c^{\ast}})之间的距离。我们可以使用范数来衡量这个距离。在主成分算法里,我们使用 L2\boldsymbol{L^{2}}范数:

c∗=argmin∥x−g(c)∥2

\boldsymbol{c^{\ast}}=\rm {arg min}\Vert\boldsymbol{x}-g(\boldsymbol{c})\Vert_{2}我们可以转换成 L2\boldsymbol{L}^{2}范数的平方而不是 L2\boldsymbol{L}^{2}范数本身,因为都是最小化到相同的 c\boldsymbol{c}值。这是因为 L2\boldsymbol{L}^{2}范数是非负的,平方算子对于非负参数是单调递增的。

c∗=argmin∥x−g(c)∥22

\boldsymbol{c^{\ast}}={\rm arg min}\Vert\boldsymbol{x}-g(\boldsymbol{c})\Vert_{2}^{2}这个函数可以简化为

(x−g(c))T(x−g(c))

(\boldsymbol{x-}g(\boldsymbol{c}))^{\rm T}(\boldsymbol{x-}g(\boldsymbol{c}))(根据 L2\boldsymbol{L^2}范数定义)

=xTx−xTg(c)−g(c)Tx+g(c)Tg(c)

=\boldsymbol{x^{\rm T}x}-\boldsymbol{x^{\rm T}}g(\boldsymbol{c})-g(\boldsymbol{c})^{T}\boldsymbol{x}+g(\boldsymbol{c})^{T}g(\boldsymbol{c})(根据分配律)

=xTx−2xTg(c)+g(c)Tg(c)

=\boldsymbol{x^{\rm T}x}-2\boldsymbol{x^{\rm T}}g(\boldsymbol{c})+g(\boldsymbol{c})^{T}g(\boldsymbol{c})(根据标量等于本身的转置)。
我们现在改变函数形式,省去第一项,因为该项不依赖于 c\boldsymbol{c}:

c∗=argmin−2xTg(c)+g(c)Tg(c)

\boldsymbol{c^\ast}=\rm {arg min}-2\boldsymbol{x^{\rm T}}g(\boldsymbol{c})+g(\boldsymbol{c})^{T}g(\boldsymbol{c})

2.12 主成分分析(上)相关推荐

  1. 在macOS Sierria 10.12.2上升级默认的vim

    在macOS安装软件,首选工具当然是HomeBrew,怎么安装请自行百度. vim在macOS Sierra(10.12.2)上的默认版本是7.4,但是我希望尽可能升级到最新的vim版本,并且尽量具有 ...

  2. UA MATH567 高维统计III 随机矩阵12 整数环上的区间的应用:DNA序列突变点侦测的统计量及假设检验

    UA MATH567 高维统计III 随机矩阵12 整数环上的区间的应用:拐点侦测的统计量及假设检验 整数环上的区间作为随机变量的下标 最大值的概率不等式 应用:DNA序列突变点侦测 整数环上的区间作 ...

  3. ubuntu dpkg mysql_ubuntu-12.04 – 在Ubuntu 12.04上无法启动MySQL5.5 – “dpkg:依赖问题”...

    这似乎是12.04上的一个常见问题.我在 this thread尝试过,包括: sudo apt-get clean sudo apt-get autoclean sudo apt-get remov ...

  4. c语言fmin最小公倍数,已知函式f(x)=2分之1cos的平方x加2分之根号3sinxcosx加1,X属于R 。求在[π/12,π/4]上的最大最小值...

    已知函式f(x)=2分之1cos的平方x加2分之根号3sinxcosx加1,X属于R .求在[π/12,π/4]上的最大最小值以下文字资料是由(历史新知网www.lishixinzhi.com)小编为 ...

  5. 在CentOS 6.9 x86_64的nginx 1.12.2上开启标准模块ngx_http_auth_request_module实录

    ngx_http_auth_request_module是是nginx的一个验证模块,它允许您的nginx通过发送请求到后端服务器(一般是应用服务器,例如tomcat,或者php等)进行请求, 并且根 ...

  6. 在CentOS 6.9 x86_64的nginx 1.12.2上安装第三方模块set-misc-nginx-module实录

    set-misc-nginx-module模块是标准的HttpRewriteModule指令的扩展,提供更多的功能,如URI转义与非转义.JSON引述.Hexadecimal/MD5/SHA1/Bas ...

  7. 在CentOS 6.9 x86_64的nginx 1.12.2上开启ngx_http_geo_module模块实录

    ngx_http_geo_module模块,默认情况下,nginx会加载,除非人为的 --without-http_geo_module. 这个模块提供了一个非常好用的geo指令,可以用它来创建变量, ...

  8. 12岁上中科大,17岁哈佛博士,31岁成哈佛教授,学神认识一下?

    尹希,1983年12月出生:1996年考入中国科大少年班:2001年赴哈佛大学攻读物理学博士:2006年获得博士学位:2008年尹希受聘担任哈佛大学物理系副教授:2015年9月晋升哈佛大学物理系教授, ...

  9. 如何在 Ubuntu 14.04 和 12.04 上测试 systemd

    本来,Ubuntu决定从Ubuntu 16.04 LTS开始使用systemd来替换当前的引导过程.Ubuntu 16.04预计在2016年4月发布,但是考虑到systemd的流行和需求,刚刚发布的U ...

最新文章

  1. 一个简单的HTTP通讯的例子,使用了CInternetSession,CHttpConnection,CHttpFile三个类
  2. CSS3的弹性盒子flex详解(2)
  3. c语言结果九位数,C语言实例:九位累进可除数
  4. while read line 用法详细介绍
  5. 排名前20位的在线编程课程,可促进您的职业发展
  6. detectmultiscale函数参数含义_OpenCV人脸识别--detectMultiScale函数
  7. WebService为手机开发提供服务
  8. 吾之工作要求:死板,教条,僵化
  9. EAGLE转Protel文件
  10. 罗技 logic C930c 摄像头 驱动 win7 64位 家庭中文版 无法使用
  11. 前端 HTML5+CSS3基础知识一
  12. 3D结构光摄像头深度算法介绍
  13. 关于UEFI启动+GPT分区 的一些经验
  14. 勃林格殷格翰与Lifebit合作识别全球传染病暴发;百济神州和Shoreline Biosciences达成合作 | 医药健闻...
  15. MIT JOS lab2内存管理实验记录
  16. 不可不知的JavaScript面向对象
  17. 夏普/sharp willcom d4 刷linux,IT豆
  18. antd vue 多个下拉 联动_antd中select下拉框值为对象选中的问题
  19. fl2440串口编程
  20. 社会底层是怎样炼成的(牛叔)

热门文章

  1. [Linux] Ubuntu下的文件比较工具--meld
  2. Android开发中的logcat工具使用方法
  3. VC 实现文件夹属性的获取与更改
  4. 略论bs架构设计的几种模式
  5. 原来浏览器原生支持JS Base64编码解码
  6. NGINX配置基于Node.js服务的负载均衡服务器
  7. c mysql 取错误信息_初始化 MYSQL 后为何得到一会错误信息?
  8. MySQL报错 Packet for query is too large,server向mysql发送的数据包大小超过mysql限制
  9. 灯塔谈话记录错误_如何保留灯塔报告的历史记录
  10. php 三元预算? :_项目预算:一种反模式