2.12 主成分分析(上)
声明:该文章翻译自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}}范数:
\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}范数是非负的,平方算子对于非负参数是单调递增的。
\boldsymbol{c^{\ast}}={\rm arg min}\Vert\boldsymbol{x}-g(\boldsymbol{c})\Vert_{2}^{2}这个函数可以简化为
(\boldsymbol{x-}g(\boldsymbol{c}))^{\rm T}(\boldsymbol{x-}g(\boldsymbol{c}))(根据 L2\boldsymbol{L^2}范数定义)
=\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})(根据分配律)
=\boldsymbol{x^{\rm T}x}-2\boldsymbol{x^{\rm T}}g(\boldsymbol{c})+g(\boldsymbol{c})^{T}g(\boldsymbol{c})(根据标量等于本身的转置)。
我们现在改变函数形式,省去第一项,因为该项不依赖于 c\boldsymbol{c}:
\boldsymbol{c^\ast}=\rm {arg min}-2\boldsymbol{x^{\rm T}}g(\boldsymbol{c})+g(\boldsymbol{c})^{T}g(\boldsymbol{c})
2.12 主成分分析(上)相关推荐
- 在macOS Sierria 10.12.2上升级默认的vim
在macOS安装软件,首选工具当然是HomeBrew,怎么安装请自行百度. vim在macOS Sierra(10.12.2)上的默认版本是7.4,但是我希望尽可能升级到最新的vim版本,并且尽量具有 ...
- UA MATH567 高维统计III 随机矩阵12 整数环上的区间的应用:DNA序列突变点侦测的统计量及假设检验
UA MATH567 高维统计III 随机矩阵12 整数环上的区间的应用:拐点侦测的统计量及假设检验 整数环上的区间作为随机变量的下标 最大值的概率不等式 应用:DNA序列突变点侦测 整数环上的区间作 ...
- 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 ...
- 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)小编为 ...
- 在CentOS 6.9 x86_64的nginx 1.12.2上开启标准模块ngx_http_auth_request_module实录
ngx_http_auth_request_module是是nginx的一个验证模块,它允许您的nginx通过发送请求到后端服务器(一般是应用服务器,例如tomcat,或者php等)进行请求, 并且根 ...
- 在CentOS 6.9 x86_64的nginx 1.12.2上安装第三方模块set-misc-nginx-module实录
set-misc-nginx-module模块是标准的HttpRewriteModule指令的扩展,提供更多的功能,如URI转义与非转义.JSON引述.Hexadecimal/MD5/SHA1/Bas ...
- 在CentOS 6.9 x86_64的nginx 1.12.2上开启ngx_http_geo_module模块实录
ngx_http_geo_module模块,默认情况下,nginx会加载,除非人为的 --without-http_geo_module. 这个模块提供了一个非常好用的geo指令,可以用它来创建变量, ...
- 12岁上中科大,17岁哈佛博士,31岁成哈佛教授,学神认识一下?
尹希,1983年12月出生:1996年考入中国科大少年班:2001年赴哈佛大学攻读物理学博士:2006年获得博士学位:2008年尹希受聘担任哈佛大学物理系副教授:2015年9月晋升哈佛大学物理系教授, ...
- 如何在 Ubuntu 14.04 和 12.04 上测试 systemd
本来,Ubuntu决定从Ubuntu 16.04 LTS开始使用systemd来替换当前的引导过程.Ubuntu 16.04预计在2016年4月发布,但是考虑到systemd的流行和需求,刚刚发布的U ...
最新文章
- 一个简单的HTTP通讯的例子,使用了CInternetSession,CHttpConnection,CHttpFile三个类
- CSS3的弹性盒子flex详解(2)
- c语言结果九位数,C语言实例:九位累进可除数
- while read line 用法详细介绍
- 排名前20位的在线编程课程,可促进您的职业发展
- detectmultiscale函数参数含义_OpenCV人脸识别--detectMultiScale函数
- WebService为手机开发提供服务
- 吾之工作要求:死板,教条,僵化
- EAGLE转Protel文件
- 罗技 logic C930c 摄像头 驱动 win7 64位 家庭中文版 无法使用
- 前端 HTML5+CSS3基础知识一
- 3D结构光摄像头深度算法介绍
- 关于UEFI启动+GPT分区 的一些经验
- 勃林格殷格翰与Lifebit合作识别全球传染病暴发;百济神州和Shoreline Biosciences达成合作 | 医药健闻...
- MIT JOS lab2内存管理实验记录
- 不可不知的JavaScript面向对象
- 夏普/sharp willcom d4 刷linux,IT豆
- antd vue 多个下拉 联动_antd中select下拉框值为对象选中的问题
- fl2440串口编程
- 社会底层是怎样炼成的(牛叔)
热门文章
- [Linux] Ubuntu下的文件比较工具--meld
- Android开发中的logcat工具使用方法
- VC 实现文件夹属性的获取与更改
- 略论bs架构设计的几种模式
- 原来浏览器原生支持JS Base64编码解码
- NGINX配置基于Node.js服务的负载均衡服务器
- c mysql 取错误信息_初始化 MYSQL 后为何得到一会错误信息?
- MySQL报错 Packet for query is too large,server向mysql发送的数据包大小超过mysql限制
- 灯塔谈话记录错误_如何保留灯塔报告的历史记录
- php 三元预算? :_项目预算:一种反模式