斯坦福机器学习公开课笔记(十一)--数据降维


公开课地址:https://class.coursera.org/ml-003/class/index 

授课老师:Andrew Ng

1、motivation 1:data compression(动机1-数据压缩)

所谓数据压缩就是对高维数据进行降维,从而减少数据存储容量。至于要进行数据压缩的原因,显然是数据量太大造成的,先看下面这个例子:


从上图中可以看到,我们对平面上二维点进行降维,让这些点都落在一条直线上,最后只需要保存这条直线而无需保存整个平面。从二维到一维,显然能减少数据的存储空间,不过这种方法有利也有弊,很显然降维以后数据就不那么准确了,而且在直线上我们这里只能记录每个数据点之间的位置关系,丢失了原有的部分信息。

除了二维降到一维,我们也可以让三维数据降到二维,和上面的做法类似,无非是让三维点投影到二维平面上:


2、motivation 2:data visualization(动机2-数据可视化)

考虑一个在国家之间比较的例子,比较的因素包括很多,诸如GDP,生活环境指数等等,如下表:


表中数据倒是很详细,但是我们无法用一幅图来表示,没有一种直观的感受。因此,我们需要采用数据降维的思想,先把数据降到二维,然后绘图:



但是需要注意,我们需要自己指定横纵坐标的两个维度分别代表什么,例如这里z1代表country size/GDPz2代表 per.person GDP. 这种指定因人而异,与所要分析的内容相关。

3、principal component analysis problem formulation(主成分分析问题形式)

主成分分析是一种降维的方法,通过分析数据点特征情况,把数据进行降维,实现从n维降到k维的目的:


需要注意的是,主成分分析并不是线性回归,尤其是针对二维数据降维时,如下图所示[蓝线为PCA]PCA衡量的是样本点到直线的正交距离(样本点到直线作垂线段),而线性回归衡量的是样本点与预测值直接的垂直距离(平行y轴):


更标准的解释是:PCA中为的是寻找一个面,将各样本点投影到这个面后使得各点间方差最大(跟y没有关系,是寻找最能够表现这些特征的一个平面);而线性回归是给出样本点并根据样本点去预测y

4、principle component analysis algorithm(主成分分析算法)

主成分分析算法首先要做的就是对数据进行预处理,比如前面讲的特征标准化:


接下来就是利用PCA算法进行计算了,假设要把n维的数据降到k维,首先要计算协方差矩阵,然后利用奇异值分解SVD来求得一个U矩阵,不懂SVD的看这里:

http://zh.wikipedia.org/wiki/%E5%A5%87%E5%BC%82%E5%80%BC%E5%88%86%E8%A7%A3


如果了解了SVD的知识,应该知道n维降维到k维,也就是选出这n个特征中最重要的k个,也就是选出特征值最大的k。上面的matlab命令中U矩阵的特征值已经按从大到小排好序,我们只需要选择最前面与其对应的的k个特征向量即可。于是我们得到Ureduce矩阵:


再将其与之前采用n维特征向量表示的样本点数据相乘,就得到了以k维特征向量表示的样本数据。很显然,这里我们并没有选择U中的全部向量,所以叫主成分分析。

5、reconstruction from compressed data(从压缩数据中恢复)

我们已经知道如何把数据进行压缩,但是有时候需要把数据进行恢复。恢复时采用逆运算即可:


Xapprox=Ureduce*Z就能求出恢复后的数据,注意这里是求不出原始数据的,只能是近似数据。

6、choosing the number of principle of components(选择主成分的数目)

进行主成分分析时,需要指定k的数目,由于数据的部分信息在压缩后就无法恢复了,所以我们在不想丢失太多信息的情况下尽可能压缩数据,这也是一个权衡的问题:


在设定一个阈值后,可以通过计算误差率来确定k值,比如当阈值设定为0.01时,表示保留了99%的方差。可以证明,如果采用matlab进行计算,上面的误差率可以换成S(参看SVD)来表示:


当阈值为0.01时:


7、advice for applying PCA(PCA应用建议)

我们已经知道数据集被划分为训练集、验证集和测试集三类,但是在使用PCA降维时需要注意只能针对训练集进行降维,选择的主分量只应用于训练集:


PCA的好处前面已经提到过:


需要注意,在过拟合的时候如果采用PCA进行降维消去过拟合的做法是错误的,而应该采用规格化参数来防止过拟合:


最后是在应用PCA之前,你应该确保在原始数据上进行了尝试,只有在这种尝试达不到你预期结果时才采用PCA

-----------------------------------------弱弱的分割线------------------------------------------------

这一讲的主要内容是对数据进行降维,最常见的方法应该是PCA。不过在实际应用中,有时候我们一眼就能看到哪些特征是多余的应该删除,但是用PCA算下来却不是如此。所以也不应该盲目信任PCA,尽量采用多种方法去尝试。个人觉得这一讲中SVD几乎没讲,其实SVD才应该是重点,那些之前学过矩阵分析而不懂SVD有何应用的童鞋,现在该明白SVD的作用所在了吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值