Andrew Ng-ML-第十五章-降维
1.数据压缩
数据压缩不仅能够减小存储空间,并且能够加速学习算法。那么什么是数据压缩呢?下面给出了一个简单的例子:
图1.数据压缩的概念
举了两个例子,一个是横轴x1是厘米,纵轴特征x2是英尺,这明显是冗余的,但是在真正的实施过程中,这并不常见,这并不是一个好例子。
另一个例子是,横轴是驾驶员的技术,纵轴是驾驶员的快乐程度,曲线的含义是驾驶员的能力,那么比较明显的是,可以舍去驾驶员的快乐程度这个特征。即将数据集从2维转向1维。
图2.二维数据压缩
在图中,将绿线投影到一个轴上,那么如果点的排列方式能够一一对应,并且反映原来的顺序,那么就可以用其中一个特征来表示两个,从x(1)二维转换到z(1)一维,从而实现了数据压缩。这种方法能让算法运行的更快,同时也能够减少数据存储空间。
图2.三维数据压缩
在实际中,有将1000维压缩到100维的,但是不方便进行画图展示。如图中,三维的可以观察出数据基本上同一平面内,所以图2中就新构建了一个二维的平面图,将数据都投影到二维平面上,将三维降低到二维。
2.可视化
图3.高维数据
比如得到了各个国家的一个高维数据图,有很多指标,那么如何来进行可视化呢?如下图,选取几个指标来表示国家,比如两个:
图4.二维数据可视化
比如横轴表示国家的大小/GDP,纵轴表示,人均GDP的数量,从图中可对点进行现实意义的分析。
3.主成分分析问题规划1
图5.主成分问题规划
将数据从二维到一维,需要找到一个向量的方向,将其他点投影,这个方向是满足最小化投影误差。那么就可将数据降维。
从三维降到二维,需要两个投影向量组成一个平面,将其他点投影,作最小化投影误差。
从n维降到k维,就需要选k个向量进行投影,并且最小化投影误差。
那么从左图中看,PCA似乎和线性回归很像,那么二者之间有何关系呢?
实际两者是完全不同的算法,PCA是找到一个低维的平面进行数据的投影,以便最小化投影误差。
4.主成分分析问题规划2
图6.数据预处理
首先求出m个数据的均值每个维度的均值,并且对i个数据,每个对应的维度都变成平均的,图中下边给的公式是在有监督学习中,每个数据的i维-均值,并且除以s_j,通常是max-min或者是均方误差。这样让不同含义的数据都能够进行归一,又可以比较的值。
图7.主成分分析算法
首先,第一个公式中,左边的Σ不是求和符号,而是表示矩阵,那么它是一个n*n的矩阵,也就是协方差矩阵。
然后再计算协方差矩阵Σ的特征向量,可以使用svd函数。令协方差矩阵是正定矩阵。现在就可以用[U,S,V]是用svd命令来计算协方差矩阵。
图8.算法
取U的前k列,得到一个U_reduce是n*k的,那么用它的T*训练集中的每个x,最终会得到一个k维的向量,这个就是投影压缩之后的。
Andrew Ng-ML-第十五章-降维的更多相关文章
- 15第十五章UDF用户自定义函数(转载)
15第十五章UDF用户自定义函数 待补上 原文链接 本文由豆约翰博客备份专家远程一键发布
- 《Linux命令行与shell脚本编程大全》 第十五章 学习笔记
第十五章:控制脚本 处理信号 重温Linux信号 信号 名称 描述 1 HUP 挂起 2 INT 中断 3 QUIT 结束运行 9 KILL 无条件终止 11 SEGV 段错误 15 TERM 尽可能 ...
- CSS3秘笈复习:十三章&十四章&十五章&十六章&十七章
第十三章 1.在使用浮动时,源代码的顺序非常重要.浮动元素的HTML必须处在要包围它的元素的HTML之前. 2.清楚浮动: (1).在外围div的底部添加一个清除元素:clear属性可以防止元素包围浮 ...
- Gradle 1.12用户指南翻译——第四十五章. 应用程序插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- Gradle 1.12 翻译——第十五章. 任务详述
有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com ...
- Gradle 1.12用户指南翻译——第二十五章. Scala 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
- Gradle 1.12用户指南翻译——第三十五章. Sonar 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- “全栈2019”Java多线程第三十五章:如何获取线程被等待的时间?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- “全栈2019”Java多线程第二十五章:生产者与消费者线程详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
随机推荐
- Python在mysql中进行操作是十分容易和简洁的
首先声明一下,我用的是Windows系统! 1.在Python中对mysql数据库进行操作首先要导入pymysql模块,默认情况下,Python中是没有安装这个模块的, 可以在Windows的命令行中 ...
- 【大数据系列】hive修改默认的derby数据库
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml- ...
- C#TreeView节点选中后失去焦点时改变节点背景色
C#TreeView节点选中后失去焦点时改变节点背景色 在使用TreeView控件时候,单击一个节点,当鼠标聚焦到别的地方的时候,之前点击的这个节点就看不清楚了 举例截图 单击后 ...
- C#、Java实现按字节截取字符串包含中文汉字和英文字符数字标点符号等
C#.Java实现按字节截取字符串,字符串中包含中文汉字和英文字符数字标点符号等. 在实际项目应用过程中,尤其是在web开发时可能遇到的比较多,就以我的(JiYF笨小孩管理系统)为例,再发布文章时候, ...
- Android 自动化测试 robotium
转:http://xiaomaozi.blog.51cto.com/925779/908886 Android 的开发可以说已经遍地都是,不说精致的app,只要看些书,看点教学视频,学习二至三个月,都 ...
- Android ADB命令?这一次我再也不死记了!【简单说】
https://www.jianshu.com/p/56fd03f1aaae adb的全称为Android Debug Bridge.是android司机经常用到的工具.但是问题是那么多命令写代码已经 ...
- CSS学习之定位
CSS相对定位 设置为相对定位(relative)的元素会偏移某个距离,元素仍保持其未定位前的形状,他原本所占的空间仍然保留 相对定位是一个非常容易掌握的概念,如果对一个元素进行相对定位 ...
- 墨菲定律:当你觉得一个地方可能有bug,那么这个地方就会有bug----顺带了解下Tomcat那少有人注意的localhost.log
一.问题概述 题目有点长,但应该值得后端java们了解下有点小坑的localhost.log,让我长话短说. 博主是搞java后端的.后台是很简单的spring mvc + spring框架. 今天测 ...
- [Offer收割]编程练习赛13 B.最大子矩阵[枚举]
#1502 : 最大子矩阵 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个NxM的矩阵A和一个整数K,小Hi希望你能求出其中最大(元素数目最多)的子矩阵,并且该 ...
- 【CF840D】Destiny 分治(线段树)
[CF840D]Destiny 题意:给你一个长度为n的序列,q次询问,每次指定l r k,求[l,r]中出现次数$>\frac {r-l+1} k$的所有数中最小的那个数. $n,q\le 3 ...