Stanford机器学习---第十讲. 数据降维

本文原始地址见http://blog.csdn.net/abcjennifer/article/details/8002329,在此添加了一些自己的注释方便理解

本栏目(Machine learning)包括单参数的线性回归、多参数的线性回归、Octave Tutorial、Logistic Regression、Regularization、神经网络、机器学习系统设计、SVM(Support Vector Machines 支持向量机)、聚类、降维、异常检测、大规模机器学习等章节。内容大多来自Standford公开课machine
learning中Andrew老师的讲解和其他书籍的借鉴。(https://class.coursera.org/ml/class/index

PS: 盼望已久的十一长假就要到了~祝大家国庆快乐,玩的开心!(*^__^*)

第十讲. 降维——Dimensionality Reduction

===============================

(一)、为什么要降维?

(二)、主成分分析Principal Component Analysis (PCA)

(三)、PCA 算法流程

(四)、从压缩数据中恢复原数据

(五)、怎样决定降维个数/主成分个数

(六)、应用PCA进行降维的建议

本章主要讲述应用PCA算法进行数据降维的原理

=====================================

(一)、为什么要降维?

  • About data:

我们需要一组关于XXX的数据,定义就铺天盖地的来了,百万级个特征拿过来,我们怎么进行机器学习啊?!李航老师在他的博客《机器学习新动向:从人机交互中》中提到,学习精度越高,学习确信度越高,学习模型越复杂,所需要的样本也就越多。样本复杂度满足以下不等式

由此可见,feature太多会造成模型复杂,训练速度过慢,因此我们引入降维。

  • About Visualization:

多维数据很难进行可视化分析,因此我们需要降维分析。

=====================================

(二)、About Principal Component Analysis (PCA)

  • PCA 目的:降维——find a low dimension surface on which to project data ~

如图所示,蓝色的点project到红色surface上得到绿点,寻找surface使得两点之间的orthogonal
distance总和最小,就是PCA的任务。

  • PCA 与 Linear Regression 的区别:

1. PCA衡量的是orthogonal distance, 而linear regression是所有x点对应的真实值y=g(x)与估计值f(x)之间的vertical distance距离

2. more general 的解释:PCA中为的是寻找一个surface,将各feature{x1,x2,...,xn}投影到这个surface后使得各点间variance最大(跟y没有关系,是寻找最能够表现这些feature的一个平面);而Linear
Regression是给出{x1,x2,...,xn},希望根据x去预测y,所以进行回归

=====================================

(三)、PCA 算法流程

假设有m个samples,每个数据有n维。

----------------------------------------数据预处理----------------------------------------

1. 计算各个feature的平均值,计μj ;(Xj(i)表示第i个样本的第j维特征的value)

μj = Σm Xj(i)/m

2. 将每一个feature
scaling:将在不同scale上的feature进行归一化;

3. 将特征进行mean normalization

令Xj(i)=
(Xj(i)j)/sj

这样呢,我们需要做的就是两件事:

第一,如何寻找这个surface?

第二,给定surface,怎样求点到surface投影的value?

--------------------------------------- PCA算法选取k个主分量----------------------------------------

4. 求n×n的协方差矩阵Σ:

5. 根据SVD求取特征值和特征向量:

[U,S,V] = SVD(Σ)

其中,SVD为奇异值分解(singular
value decomposition),在matlab中有函数[U,S,V] = svd(A) 返回一个与A同大小的对角矩阵S(由Σ的特征值组成),两个酉矩阵U和V,且满足= U*S*V‘。若A为m×n阵,则U为m×m阵,V为n×n阵。奇异值在S的对角线上,非负且按降序排列。

那么对于方阵Σ呢,就有

Σ = USV‘

ΣΣ‘ = USV‘*VS‘U‘ = U(ΣΣ‘)U‘

Σ‘Σ = VS‘U‘*USV‘ = V(Σ‘Σ)V‘

i.e. U是ΣΣ‘的特征向量矩阵;V是Σ‘Σ的特征向量矩阵,都是n*n的矩阵

由于方阵的SVD相当于特征值分解,所以事实上U = V, 即Σ = USU‘, U是特征向量组成的正交矩阵

我们的目的是,从n维降维到k维,也就是选出这n个特征中最重要的k个,也就是选出特征值最大的k个~so...goto next step

6. 按特征值从大到小排列,重新组织U

如果使用matlab的svd求得特征值,就可以直接跳过这步了,因为该函数返回值中,奇异值在S的对角线上按照降序排列。否则的话应进行排序,并按照该次序找到对应的特征向量重新排列。

7. 选择k个分量

按照第五、六步中讲的svd过后,我们得到了一个n×n的矩阵Σ和U,这时,我们就需要从U中选出k个最重要的分量;即选择前k个特征向量,即为Ureduce,
该矩阵大小为n×k

这样对于一个n维向量x,就可以降维到k维向量z了:

=====================================

(四)、从压缩数据中恢复原数据

我们已经知道,可以根据z(i) = Ureduce‘× x(i) 将n维向量x降维到k维向量z,那么有时我们需要恢复n维向量,怎么做呢?

由于Ureduce是正交矩阵(下面Ureduce简记为U),即U‘ = U-1, 所以

xapprox = (U‘)-1×z = (U-1)-1×z
= Uz

(PS:这里的逆操作为伪逆操作)

注意:这里恢复出的xapprox并不是原先的x,而是向量x的近似值。

=====================================

(五)、怎样决定降维个数/主成分个数

首先从一个general一点的思路去想呢,我们是希望,选出主成分之后进行数据分析,不会造成大量特征的丢失,也就是说可以用下式的error ratio表示经过压缩后的性能如何。

error ratio = 

然后呢,我们定义一个threshold(10% for example),如果error ratio<threshold,说明这样选取主成分是可以接受的,else not

从数学上可以证明,上面这个error ratio 可以表示为

所以,可以用下式进行k的合理选取:

=====================================

(六)、应用PCA进行降维的建议

1. PCA可以降维,那让我们联想到了之前说过拟合问题是由维度过高或者参数过多造成的,那么可不可以用PCA解决overfitting的问题呢?

Ans:NO!应用PCA提取主成分可能会解决一些overfitting的问题,但是呢,不建议用这种方法解决overfitting问题,还是建议用第三章中讲过的加入regularization项(也称为ridge
regression)来解决。

2. PCA中主成分分析应用到那部分数据呢?

Ans:Only Training Data!可以用Cross-Validation data 和 test Data进行检验,但是选择主分量的时候只应用training data.

3. 不要盲目PCA

Notice:only 当你在原数据上跑到了一个比较好的结果,又嫌它太慢的时候才采取PCA进行降维,不然降了半天白降了~

时间: 2024-08-05 17:26:43

Stanford机器学习---第十讲. 数据降维的相关文章

Stanford机器学习[第六讲]-朴素贝叶斯算法

引文:由于之前讲过了朴素贝叶斯的理论Stanford机器学习[第五讲]-生成学习算法第四部分,同时朴素贝叶斯的算法实现也讲过了,见机器学习算法-朴素贝叶斯Python实现.那么这节课打算讲解一下朴素贝叶斯算法的具体计算流程,通过一个具体的实例来讲解. PS:为了专注于某一个细节,本章节只抽取了视频的一部分来讲解,只讲解一个贝叶斯算法的计算流程,关于视频里面的具体内容请参考下面的视频链接. 讲解的实例是一个文本分类的例子,区分一句话是粗鲁的还是文明的,类别标签只有Yes或No,表示是粗鲁的和不是粗

Stanford机器学习---第十四讲.机器学习应用举例之Photo OCR

http://blog.csdn.net/l281865263/article/details/50278745 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学习系统设计.SVM(Support Vector Machines 支持向量机).聚类.降维.异常检测.大规模机器学习等章节.内容大多来自Standford公开课machine lear

Stanford机器学习---第八讲. 支持向量机SVM

本文原始文章见http://blog.csdn.net/abcjennifer/article/details/7849812,本文添加了一些自己的理解 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学习系统设计.SVM(Support Vector Machines 支持向量机).聚类.降维.异常检测.大规模机器学习等章节.所有内容均来自Sta

Stanford机器学习---第七讲. 机器学习系统设计

本文原始版本见http://blog.csdn.net/abcjennifer/article/details/7834256 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学习系统设计.SVM(Support Vector Machines 支持向量机).聚类.降维.异常检测.大规模机器学习等章节.所有内容均来自Standford公开课mach

Stanford机器学习---第六讲. 怎样选择机器学习方法、系统

原文见http://blog.csdn.net/abcjennifer/article/details/7797502  添加了一些自己的注释和笔记 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学习系统设计.SVM(Support Vector Machines 支持向量机).聚类.降维.异常检测.大规模机器学习等章节.所有内容均来自Stand

第三百五十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—数据收集(Stats Collection)

第三百五十四节,Python分布式爬虫打造搜索引擎Scrapy精讲-数据收集(Stats Collection) Scrapy提供了方便的收集数据的机制.数据以key/value方式存储,值大多是计数值. 该机制叫做数据收集器(Stats Collector),可以通过 Crawler API 的属性 stats 来使用无论数据收集(stats collection)开启或者关闭,数据收集器永远都是可用的. 因此您可以import进自己的模块并使用其API(增加值或者设置新的状态键(stat k

机器学习中使用的神经网络第十讲笔记

Geoffery Hinton教授的Neuron Networks for Machine Learning的第十讲介绍了如何combine模型,并进一步从实际应用的角度介绍了完全贝叶斯方法. Why it helps to combine models 这一小节,我们讨论在做预测时为什么要结合许多模型.使用多个模型可以在拟合真正的规则和拟合样本错误之间做一个很好的折中. 我们已经知道,当训练数据比较少时容易出现过拟合,如果我们平均一下许多不同模型的预测,那我们就可以降低过拟合的程度.对于回归来

机器学习--标准化和缺失值处理、数据降维

标准化和缺失值的处理 标准化 : 特点 : 通过对原始数据进行变换把数据变换到均值为0, 标准差为1的范围内. ## 对于归一化来说:如果出现异常点,影响了大值和小值,那么结果显然会发生改变 对于标准化来说:如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,从 而方差改变较小.在已有样本足够多的情况下比较稳定,适合现代嘈杂的大数据场景. ## 标准化API : API : sklearn.preprocessing.StandarScaler StandardScaler(

Coursera《machine learning》--(14)数据降维

本笔记为Coursera在线课程<Machine Learning>中的数据降维章节的笔记. 十四.降维 (Dimensionality Reduction) 14.1 动机一:数据压缩 本小节主要介绍第二种无监督学习方法:dimensionality reduction,从而实现数据的压缩,这样不仅可以减少数据所占磁盘空间,还可以提高程序的运行速度.如下图所示的例子,假设有一个具有很多维特征的数据集(虽然下图只画出2个特征),可以看到x1以cm为单位,x2以inches为单位,它们都是测量长