相关博文:

吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA)

主成分分析(PCA)的推导与解释

主要内容:

一.向量內积的几何意义

二.基的变换

三.协方差矩阵

四.PCA求解

一.向量內积的几何意义

1.假设A、B为二维平面xoy内两个向量,A为(x1, y1),B为(x2, y2),那么A、B的內积为:AB = |A||B|cosΘ = x1*x2 + y1*y2,结果为一个标量。

2.那么A、B內积的几何意义又是什么呢?单从“|A||B|cosΘ”或者“x1*x2 + y1*y2”这两式子或许还不能发现其中的意义,那么可以在坐标轴上画出这两个向量:

可以看出,|A|cosΘ实际上就是向量A在向量B方向上的投影。假如B为单位向量,即|B| = 1,那么A、B的內积就是A向量在B向量上的投影。

综上:假设B向量为单位向量,那么A、B的內积为:A向量在B向量上的投影,且AB = |A||B|cosΘ = x1*x2 + y1*y2。

二.基的变换

1.基变换,就是用新的正交轴去代替旧的正交轴(原定固定),旧的正交轴就是我们日常所使用的XOY坐标轴,其基向量为 i(1,0) 和 j(0,1)。

注意:基向量必须为单位向量且两两正交(我目前的认知)。

2.例如,有一个向量a在旧坐标轴表示为 (3, 2),我们重新构建一个坐标轴,其基向量分别为 (1/√2,1/√2)和(-1/√2,1/√2)。那么向量a在新坐标轴上表示为 (5/√2,-1/√2)。

3.更一般地:

(注意,新坐标轴的基向量的表示仍然是基于旧坐标轴而言的。)

4.问:为什么新坐标轴的基向量的模要为1且要两两正交?

答:两两正交的单位基向量组成了“标准正交向量组”,将他们按列排成一个矩阵,此矩阵就是“正交矩阵”,同时也可以称为是变换矩阵,即可将向量从旧的坐标轴表示转化为新的坐标轴表示,这个过程就成为“正交变换”,而正交变换不改变向量的內积,从而不改变向量的模、夹角和距离,即不改变形状,而只不过是换了另一种表示。

5.课本上正交矩阵的定义:加入矩阵A满足 A' A = I,则称A为正交矩阵。那么为什么正交矩阵与自身的转置做乘法,会得到一个单位矩阵呢?

答:首先,A'实质上是n个行向量,每一个行向量就是对应的新坐标系的基向量,那么:

1)当这个行向量(在A'上)与自己对应的列向量(在A上)做內积时,结果必定为1(根据內积的几何意义:內积为投影,自己对自己的投影当然就为1了)。

2)当这个行向量(在A'上)与自己别的列向量(在A上)做內积时,结果必定为0,因为这n个向量两两正交,所以內积为0。

综上:只有当“自己与自己”做內积时,结果为1,其他情况为0,所以正交矩阵A满足:A' A = I。

三.协方差矩阵

1.假如我们想重新构建一个能高效表达数据信息的坐标系,所谓“高效”就是信息尽量集中在少数几个或一小部分坐标轴中,而其他坐标轴几乎不含有信息(之后在PCA中就可以去掉这些坐标轴,即减少特征,从而实现降维)。那么怎么衡量坐标轴上信息的多少呢?可以用方差。一般地,在某个坐标轴上,假设数据的方差越大,那么我们可以认为数据在这个坐标轴上所含有的信息量越大。

2.假如,我们想从n维降到k维,那么是不是意味着只需要挑选出前k个方差最大的坐标轴(或者是特征)作为新的坐标系就可以呢?

答:非也!方差最大的轴作为第一维是可以肯定的,但是方差第二大的轴选作第二维却未必。因为方差第二大的轴可能与方差第一大的轴有很强的关联性,转成机器学习的语言就是:两个特征有很强的关联性,这就代表了两个轴之间有很大一部分的信息是重叠了的,即使两者都含有很多信息。对此,能够表示两个不同特征之间关联性的“好汉”是协方差矩阵。

3.协方差矩阵上,对角线表示的是每个特征的方差;而对角线外的表示两个不同特征之间的相关性,大于0时表示两者正相关,小于0则负相关,且绝对值越大,则相关性越强。特别地,当等于0时,表示两特征不相关,即相互独立。(推荐博文以更好地理解协方差矩阵:终于明白协方差的意义了

4.如何求协方差矩阵?

1)首先对特征进行归一化。为何要归一化?因为特征之间的取值范围的差异可能很大,为了排除这个因素的干扰,需要将它们全都归到一个梯度上去,从而使得方差或者协方差才有可比性。(但我看到《机器学习实战》上的代码没有归一化,不知为何?)

2)假设经过归一化的输入数据为X,协方差矩阵为Σ,那么:

5.得到协方差矩阵,即知道了每两两特征之间的相关性,那这对于选取k个信息最大的特征又有和帮助呢?请看下回(节)分解。

四.PCA求解

1.假设归一化后的输入数据X的协方差矩阵为Cx,为了能够更加高效地表示数据,我们重新构造出一个坐标系(基向量仍然为n个,后面再挑选出最好的k个),假设这个坐标系的基向量所构成的矩阵为P(n个列向量),可知P为正交矩阵(在手写的那一大段文字有解释)。接下来将X从原来的坐标系转换到新的坐标系,那么新的坐标表示为:Y = X*P。

2.假设Y的协方差矩阵为Cy,那么我们的目标就是:求出这个正交变换P(也就是求出这个新的坐标系),使得协方差矩阵Cy上除了对角线之外的其他元素都为0,从而使得每两两特征之间都互不相关,于是就可以单凭数据在特征上的方差选出含信息量最大的那k个特征。

3.有了目标之后,就尝试从公式下手:

4.从形式上看,不就是要我们对Cx对角化吗?更准确地:因为Cx为是实对称矩阵,所以必定有正交矩阵P满足条件(定理来的)。

至于对角化,我们只需要求出Cx的特征向量,就可以组合成正交矩阵P了。而这些特征向量,就是我们重新构建出来的那n个在新坐标系上的坐标轴,即新特征。

5.那么又怎么从中挑选出含信息量最大的k个坐标轴呢?

答:这就要回看协方差矩阵Cy,它是一个对角矩阵,对角线上的元素就是Cy的特征值,更重要的是:他们就是在新坐标系上每个坐标轴(应该叫做特征比较合适)的方差,那么只需对这些方差排个序,选出前k个特征值对应的特征向量,以此组成新的维度更少的坐标系、组成新的更少的特征,从而实现降维,这就是PCA。

《机器学习实战》学习笔记第十三章 —— 利用PCA来简化数据的更多相关文章

  1. 【机器学习实战】第13章 利用 PCA 来简化数据

    第13章 利用 PCA 来简化数据 降维技术 场景 我们正通过电视观看体育比赛,在电视的显示器上有一个球. 显示器大概包含了100万像素点,而球则可能是由较少的像素点组成,例如说一千个像素点. 人们实 ...

  2. 机器学习实战 - 读书笔记(13) - 利用PCA来简化数据

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第13章 - 利用PCA来简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. ...

  3. 《机器学习实战》学习笔记——第14章 利用SVD简化数据

    一. SVD 1. 基本概念: (1)定义:提取信息的方法:奇异值分解Singular Value Decomposition(SVD) (2)优点:简化数据, 去除噪声,提高算法的结果 (3)缺点: ...

  4. 【机器学习实战学习笔记(1-1)】k-近邻算法原理及python实现

    笔者本人是个初入机器学习的小白,主要是想把学习过程中的大概知识和自己的一些经验写下来跟大家分享,也可以加强自己的记忆,有不足的地方还望小伙伴们批评指正,点赞评论走起来~ 文章目录 1.k-近邻算法概述 ...

  5. 【机器学习实战学习笔记(2-2)】决策树python3.6实现及简单应用

    文章目录 1.ID3及C4.5算法基础 1.1 计算香农熵 1.2 按照给定特征划分数据集 1.3 选择最优特征 1.4 多数表决实现 2.基于ID3.C4.5生成算法创建决策树 3.使用决策树进行分 ...

  6. [汇编学习笔记][第十三章int指令]

    第十三章int指令 13.1 int指令 格式: int n, n 为中断类型码 可以用int指令调用任何一个中断的中断处理程序(简称中断例程). 13.4 BIOS和DOS 所提供的中断例程 BIO ...

  7. 利用PCA来简化数据

    13.2.2 在NUmpy中实现PCA 将数据转换成前N个主成分的伪代码大致如下: 去除平均值 计算协方差矩阵 计算协方差矩阵的特征值和特征向量 将特征值从大到小排列 保留最上面的N个特征向量 将数据 ...

  8. 学习笔记 第十三章 使用CSS3新布局

    第13章   使用CSS3新布局 [学习重点] 设计多列布局 设计弹性盒布局样式 使用CSS3布局技术设计适用移动需求的网页 13.1  多列布局 CSS3使用columns属性定义多列布局,用法如下 ...

  9. JavaScript高级程序设计学习笔记第十三章--事件

    事件冒泡: IE 的事件流,事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档).例如: <!DOCTYPE html> <htm ...

随机推荐

  1. 2016.6.21 eclipse配置server locations时按钮为灰色

    我在使用eclipse配置Tomcat服务器的时候发现,默认情况下Tocmat把我们部署的项目放在了workspaces下面,需要手动修改将其放在tomcat的安装路径下的webapp内. 从图中可以 ...

  2. 重读金典------高质量C编程指南(林锐)-------第五章 常量

    5.1  为什么需要常量 1)为了便于用户理解,增加程序的可读性. 2)在程序的很多地方都用到同一个常量,用某一个宏常量来定义可以减少错误. 规则:尽可能的使用含义直观明确的常量来表示程序中多次出现的 ...

  3. js 小总结

    数组操作 创建数组:var standTerm = new Array("维护","维修"); var arr = new Array(); 数组长度:leng ...

  4. websocket使用ssl 证书,开启加密服务

    参考文章:https://fzambia.gitbooks.io/centrifugal/content/deploy/certificates.html TLS certificates TLS/S ...

  5. Oracle 中session和processes的初始设置

    http://blog.163.com/succu/blog/static/193917174201252911727149/ 1.sessions   在初始化参数所设定的限制中,最为人所知的估计就 ...

  6. 双向数据绑定---AngularJS的基本原理学习

    Angular JS (Angular.JS) 是一组用来开发Web页面的框架.模板以及数据绑定和丰富UI组件.它支持整个开发进程,提供web应用的架构,无需进行手工DOM操作. AngularJS非 ...

  7. mysql忘记root密码且忘了安装目录如何修改root密码

    问题背景 很久之前在本机上安装mysql,也没用过(主要是用Oracle),导致root密码忘记.更严重的是,连自己的安装目录都忘记了. 遇到的问题 1.在任务管理器可以找到mysql的服务已经起来, ...

  8. linux下开启ftp的21号port

    1.先执行vsftpd服务: #service vsftpd start 2.通过iptables开放21号port (1) 先查看iptables设置: #iptables -nL Chain IN ...

  9. 【WPF学习笔记】[转]周银辉之WPF中的动画 && 晓风影天之wpf动画——new PropertyPath属性链

    (一)WPF中的动画 动画无疑是WPF中最吸引人的特色之一,其可以像Flash一样平滑地播放并与程序逻辑进行很好的交互.这里我们讨论一下故事板. 在WPF中我们采用Storyboard(故事板)的方式 ...

  10. 抽钻石vs中奖门 概率问题

    在概率问题中,假设跟着日常经验与感觉走.常常会得到错误的答案.以下"抽钻石"的故事非常可以说明这一点. 题目一:某天电视台举办了这种一个游戏节目.主持人首先拿出三个盒子.已知这三个 ...