Andrew Ng机器学习公开课笔记–Principal Components Analysis (PCA)

网易公开课,第14课
notes,10

之前谈到的factor analysis,用EM算法找到潜在的因子变量,以达到降维的目的

这里介绍的是另外一种降维的方法,Principal Components Analysis (PCA), 比Factor Analysis更为直接,计算也简单些

主成分分析基于,

在现实中,对于高维的数据,其中有很多维都是扰动噪音,或有些维是冗余的,对描述数据特征没有作用

比如我们在描述汽车速度的时候,用不同的单位mph or kph作为两维,其实只需要其中一维即可

那么如果对于一个高维数据,比如3维空间,大部分数据都集中于一个二维平面,那么我们用这个二维平面的两个主向量来替代3维向量,就达到降维的目的

并且这样的也尽可能的保留了原始变量的信息不丢失

推而广之,对于n维空间,数据点集中于一个k维的超平面,那么我们就可以说这个超平面的k个主向量为主成分

看NG说的直升机自动驾驶的例子,描述直升机驾驶员的水平
x1,表示驾驶技能;x2,表示驾驶的爱好和兴趣,这两个维度其实是极度相关的,如下图
可以看到其实所有点都是集中在u1这个axis附近的,所以我们可以用u1作为主成分来替代原先的x1和x2

其实可以看出,u1和u2是对x1和x2进行旋转的结果,旋转后发现其实数据集中在u1维度,无需u2
对于n维空间,旋转后,发现用其中的k维就可以很好的描述数据,那么这k维就是主成分,并且坐标轴都是正交的,即特征间是独立的
所以旋转后,选取得到的主成分也都是独立的

知道主成分分析的原理,下面的问题就是如何找到主成分?

首先做预处理,

1. 算出均值
2. 算出和均值间的偏差
3. 算法均方差
4. normalization 偏差,因为每维上的scale是不一样的,比如一维是体重80,一维是身高1.8,所以需要规范化

好,如何找到u?

One way to pose this problem is as finding the unit vector u so that when the data is projected onto the direction corresponding to u, the variance of the projected data is maximized.

即找到一个单位向量,让数据投影到u上的点的方差最大,即最分散

为什么?
首先我们的目的是找到那个子超平面,使得数据点尽量集中在这个超平面上,即点到这个超平面的距离尽可能的小
如下图,比较直观,如左图,当点到u向量距离最小时,方差是最大的
当选取右图的方向时,方差是最小的

再者,方差大,点比较分散,才便于去区分

形式化的表达出来,
部分参考,主成分分析(Principal components analysis)-最大方差解释

To formalize this, note that given a unit vector u and a point x, the length of the projection of x onto u is given by

所以所有点的方差和为,

其中,中间那块是x的协方差矩阵,
设,

上面的式子表示为,

两边同时乘上u

,这个是特征向量和特征值的公式
我们上面的目标是最大化的情况下求u,到这里转变为求x的协方差矩阵,特征值最大的特征向量u

这里简单解释一下特征向量和特征值

http://zh.wikipedia.org/wiki/%E7%89%B9%E5%BE%B5%E5%90%91%E9%87%8F

矩阵可以看作是线性变换,所以上面公式可以看成,对向量u进行线性变换,得到的向量仍然在同一方向上,只是发生伸缩(即数乘变换)
这样就称u为线性变换或矩阵的特征向量,而为对应于该特征向量的特征值

可以看到对于PCA的求解其实很简单,
只要先算出所有x之间的协方差矩阵, 然后求出这个矩阵的特征向量
最终按特征值排序,取前k个特征向量作为新的主成分向量即可

PCA的应用非常广泛,

压缩数据
可视化,高维数据无法可视化,降到2维或3维便于可视化
降低over-fitting, 用高维数据进行supervised learning,模型复杂度比较高,容易过拟合,通过PCA降维达到防止过拟合的作用
去噪音,比如对于脸部识别,100×100的pixel,就是10000特征,通过PCA降维可以找到主成分特征
异常检测,通过PCA可以找到由k个主成分组成的超平面,如果新的数据离该超平面很远,就说明可能是异常数据

Andrew Ng机器学习公开课笔记–Principal Components Analysis (PCA)

时间: 2024-10-14 16:46:18

Andrew Ng机器学习公开课笔记–Principal Components Analysis (PCA)的相关文章

Andrew Ng机器学习公开课笔记–Independent Components Analysis

网易公开课,第15课 notes,11 参考, PCA本质是旋转找到新的基(basis),即坐标轴,并且新的基的维数大大降低 ICA也是找到新的基,但是目的是完全不一样的,而且ICA是不会降维的 对于ICA,最经典的问题,"鸡尾酒会"问题 在鸡尾酒会,上很多人同时在说话,还有背景音乐,如果我们放若干个话筒进行声音采集 是否可以从采集到的数据中,分离出每个人独立的声音 假设有n个不同的人,m个时间采集点,一般会用和人数一样多的话筒,也是n个 is an n-dimensional vec

Andrew Ng机器学习公开课笔记 -- Mixtures of Gaussians and the EM algorithm

网易公开课,第12,13课 notes,7a, 7b,8 从这章开始,介绍无监督的算法 对于无监督,当然首先想到k means, 最典型也最简单,有需要直接看7a的讲义   Mixtures of Gaussians 如果要理解Mixtures of Gaussians,那先回去复习一下Gaussians Discriminant Analysis,高斯判别分析 首先高斯判别分析是生成算法, 所以不会直接拟合p(y|x), 而是拟合p(x|y)p(y), 即p(x,y) p(y)符合伯努力分布,

Andrew Ng机器学习公开课笔记–Reinforcement Learning and Control

网易公开课,第16课 notes,12 前面的supervised learning,对于一个指定的x可以明确告诉你,正确的y是什么 但某些sequential decision making问题,比如下棋或直升机自动驾驶 无法确切知道,下一步怎么样是正确的,因为这是一个连续和序列化的决策,比如直到最终直升机crash或下棋输了,你才知道之前的选择是不好的,但中间那么多步决策,到底是哪部分出了问题,可见这是个比较复杂的问题 强化学习,基本思路就是,既然不知道怎样是正确的,那就随便try,然后根据

Andrew Ng机器学习公开课笔记 -- 学习理论

网易公开课,第9课 notes,http://cs229.stanford.edu/notes/cs229-notes4.pdf 这章要讨论的问题是,如何去评价和选择学习算法 Bias/variance tradeoff 还是用这组图,学习算法追求的是generalization error(对未知数据的预测误差),而不是training error(只是对训练集) 最左边,underfit,我们说这种学习算法有较大的bias Informally, we define the bias of

线性回归、梯度下降 - Andrew Ng机器学习公开课笔记1.1

实例 首先举个样例.如果我们有一个二手房交易记录的数据集.已知房屋面积.卧室数量和房屋的交易价格,例如以下表: 假如有一个房子要卖,我们希望通过上表中的数据估算这个房子的价格. 这个问题就是典型的回归问题,这边文章主要讲回归中的线性回归问题. 线性回归(Linear Regression) 首先要明确什么是回归. 回归的目的是通过几个已知数据来预測还有一个数值型数据的目标值. 如果特征和结果满足线性关系,即满足一个计算公式h(x).这个公式的自变量就是已知的数据x,函数值h(x)就是要预測的目标

广义线性模型 - Andrew Ng机器学习公开课笔记1.6

转载请注明出处:http://www.cnblogs.com/BYRans/ 前面的文章已经介绍了一个回归和一个分类的例子.在逻辑回归模型中我们假设: 在分类问题中我们假设: 他们都是广义线性模型中的一个例子,在理解广义线性模型之前需要先理解指数分布族. 指数分布族(The Exponential Family) 如果一个分布可以用如下公式表达,那么这个分布就属于指数分布族: 公式中y是随机变量:h(x)称为基础度量值(base measure): η称为分布的自然参数(natural para

损失函数 - Andrew Ng机器学习公开课笔记1.2

线性回归中提到最小二乘损失函数及其相关知识.对于这一部分知识不清楚的同学可以参考上一篇文章<线性回归.梯度下降>.本篇文章主要讲解使用最小二乘法法构建损失函数和最小化损失函数的方法. 最小二乘法构建损失函数 最小二乘法也一种优化方法,用于求得目标函数的最优值.简单的说就是:让我们的预测值与真实值总的拟合误差(即总残差)达到最小. 在线性回归中使用最小二乘法构建了损失函数: 上一篇文章<线性回归.梯度下降>中提到求解使损失函数J(θ)取最小的θ值有两种方法:梯度下降(gradient

局部加权回归、欠拟合、过拟合 - Andrew Ng机器学习公开课笔记1.3

本文主要讲解局部加权(线性)回归.在讲解局部加权线性回归之前,先讲解两个概念:欠拟合.过拟合,由此引出局部加权线性回归算法. 欠拟合.过拟合 如下图中三个拟合模型.第一个是一个线性模型,对训练数据拟合不够好,损失函数取值较大.如图中第二个模型,如果我们在线性模型上加一个新特征项,拟合结果就会好一些.图中第三个是一个包含5阶多项式的模型,对训练数据几乎完美拟合. 模型一没有很好的拟合训练数据,在训练数据以及在测试数据上都存在较大误差,这种情况称之为欠拟合(underfitting). 模型三对训练

牛顿方法 - Andrew Ng机器学习公开课笔记1.5

牛顿方法(Newton's method) 逻辑回归中利用Sigmoid函数g(z)和梯度上升来最大化?(θ).现在我们讨论另一个最大化?(θ)的算法----牛顿方法. 牛顿方法是使用迭代的方法寻找使f(θ)=0的θ值,在这里θ是一个真实的值,不是一个参数,只不过θ的真正取值不确定.牛顿方法数学表达式为: 牛顿方法简单的理解方式为:先随机选一个点,然后求出f在该点的切线,即f在该点的导数.该切线等于0的点,即该切线与x轴相交的点为下一次迭代的值.直至逼近f等于0的点.过程如下图: 牛顿方法最大化