斯坦福NG机器学习课程:Dimensionality_reduction笔记

Dimensionality_reduction

首先通过图形化描述引出为什么需要进行数据降维?以及数据降维的motivation。

Data compression

Data compression 降低维度:好处减少计算机内存、磁盘等硬件使用,更重要的是加速学习算法执行速度。例子

上面是很简单直观的降维的图形描述,分别有2维降维1维,三维降维2维。

习题:

Visualization

降低维度另一个目的:进行Visualization,维度太高我们无法用图形直观来进行可视化处理,所以降低维度到2维3维最大好处就有方便可视化。下面举例一个国家经济构成因素表

假设有50个特征,则特征向量为50维,这样表达一个data的特征很复杂。假设我们能把50维降到2维,则变为下面另外一张表格所示。

可视化的结果类似下图:

用二维数据尽可能表示出50维特征所携带的信息!下面习题中简单看到,我们需要降低维数,而且最希望降低到2维或者3维,这样我们可以很好很简单进行可视化。

习题:

PCA算法

前面这么多都是在描述降维,以及降维后带给我们的好处,但是没有提到如何进行降维的算法,现在引出PCA(principle component analysis)算法。

通常情况下 PCA之前先进行feature scaling 和mean normalization, PCA算法描述如下:

进行project 来降低n维到k维,最小化projection error。直观上理解为什么可以降维?因为我们在高维时可能很多维数据相互关联,所以我们没必要用那么多维去表达数据特征。降维我们可能在允许的一定范围内损失了一些信息,但是维度降低,避免维灾难,大大加速学习算法速度,这样是值得去做的。

特别注意区分两个不同问题:PCA与线性回归的关系?

PCA不是线性回归!首先需要区别就是两者优化目标函数都是不一致的。此外线性回顾是用来预测y变量的值,而PCA中没有涉及y值问题,只是进行降维,project到line或者surface上使得projection error最小。看图更好明白。

左边图示线性回归的cost function 它求得是真实值与预测值的差异,表现在图形上是垂直x轴上方向真实值与预测值差值,而右边是PCA算法,求得是真实值到直线的垂直距离,很明了两者所求的东西都是完全不一样的!

习题:

看上面这个简单例题,我们想利用PCA,最小projection error 直观上看到斜率为-1直线能满足,所以选择D

在PCA之前需要进行 数据预处理(data preprocessing),进行数据预处理类似监督学习中处理,只是这里是无监督学习,我们没有类标签。前面提到feature scaling 和mean normalization 下面描述具体怎么做这两个过程。

前面都在对PCA算法进行描述,接下来说PCA具体该怎么计算,看下图

上图所示:我们需要计算黑色圈内标记向量,以及投影到新的维度下的坐标值。课程中不会讲到这个计算问题证明,那些内容超出了课程要求(PS:在旧版本的视频中NG有详细对这部分内容进行推导,可能是数学推导过程比较复杂,讲解耗时大家听了也比较吃力,新的课程中NG删掉了数学推理过程,因为工具包实现PCA只需要很少代码,现在只是让大家了解其中原理,弱化里面具体数学推导过程),只讲到怎么操作能做到。

PCA算法流程:

计算分为两步:1. 计算协方差矩阵 2. 计算协方差矩阵特征向量 图片中eig函数与svd函数能实现相同功能。但是NG倾向于使用svd,这里说的是在octave实现层面东西啦。svd产生计算返回三个矩阵,我们只需要用到U矩阵。svd函数中文叫奇异值分解(详细内容可以参考:点击打开链接 )

下面图片显示如何由n维降维到k维的一个具体过程,其实就是矩阵计算过程。

选择U矩阵k列,其实中间就是矩阵运算,可以看到最终z为k维,这里只是描述操作流程,忽略了其中所有的数学证明!

PCA的summary

上图是PCA算法总的执行流程,没有证明这个流程得到是满足projection error最小化。因为数学证明比较复杂,但是在octave或者matlab中用比较少的代码就能实现。

习题:

Choosing thenumber of principal components

Choosing thenumber of principal components(通俗说就是确定上面说到的k,即最终降到多少维,我们肯定需要选择k的标准,我们想尽量降维,并且还能尽可能多的保留原来数据的信息)

选择k的标准见下图:

图片中显示了不同阈值下选择。

选择k的两种算法:

先看左边算法流程很简单就是多次尝试,先设定k=1计算不等式是否成立,成立就找到了最小的k,不成立增加k继续尝试,我们发现这个算法简单但是比较低效,需要多次尝试。

右边方法:得到S矩阵,利用数学证明得到结论,不需要像左边多次计算Ureduce 所以我们选择k的方法如下:

通过99% variance retained我们可以直观上对PCA效果有了解。

习题:最小化projection error的数学形式描述。

Reconstruction(重构)

前面提到了数据压缩,肯定就有数据重构(reconstruction from compressedrepresentation)

如上图,我们反向计算可以近似重构得到x的。

习题:PCA相关性质考察

Advice forApplying PCA (总结PCA):

首先讲的是在监督学习中加速,首先extract X ,PCA得到map后Z 新的训练数据,用新的训练数据进行学习算法,map同样可以应用到交叉验证集和测试集中去。说到是图像的例子,长宽都为100像素,总的为10000,应用PCA降维能大大加快学习算法速度。

PCA算法应用:

我们需要应用PCA往往是加速学习算法,因为现在硬件已经不是太大问题,主要是考虑速度。

Bad use of PCA

PCA用来prevent overfitting 是bad!!使用。它不是一个好的解决overfitting的方法。为了解决overfitting更好的肯定是利用正则化项来解决。PCA没有用到类标签,PCA就是找一个lower 维来近似高维数据,这样肯定丢失了信息!

如果你的主要目的是加速学习算法,那么PCA很可能是一个好的选择。如果为了解决overfitting问题肯定选择加入正则化项来解决。

PCA在机器学习系统中使用情形。首先不使用PCA,当内存无法进行、算法速度慢到无法得到结果尝试使用PCA。

习题:PCA使用的一些指导性建议!

这堂课NG有意弱化了其中关键步骤SVD的数学推导证明,如果感兴趣大家可以看SVD_tutorial,欢迎大家批评指正!

时间: 2024-10-10 16:12:38

斯坦福NG机器学习课程:Dimensionality_reduction笔记的相关文章

斯坦福NG机器学习课程:Anomaly Detection

Anomaly Detection Problem motivation: 首先描述异常检测的例子:飞机发动机异常检测 直观上发现,如果新的发动机在中间,我们很大可能认为是OK的,如果偏离很大,我们就需要更多检测确定是否为正常发动机. 下面进行数学形式上的描述,通过概率密度进行估计,如下图: 对正常的数据进行建模,求Xtest的概率,当处于中心位置时概率比较大,并且大于设定的阈值,我们判定为OK状态,在远离中心状态,概率比较小,小于设定阈值我们判定为anomaly点. Anomaly detec

斯坦福NG机器学习:K-means笔记

K-means 聚类算法: K-means聚类算法 算法流程,我们首先有训练集,但是训练集我们没有类标签,我们想把数据聚类成一些cluster ,这是一种无监督学习方法.具体步骤:1. 首先初始化cluster centroid 2. 迭代的找每一个数据集点到最近cluster centroid,然后把该点给到最近cluster centroid所在的cluster,然后在更新cluster centroid 直到算法收敛. 算法也可如下图描述:分为两部分cluster assignment 和

Andrew Ng机器学习课程笔记(五)之应用机器学习的建议

Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.html 前言 学习了Andrew Ng课程,开始写了一些笔记,现在写完第5章了,先把这5章的内容放在博客中,后面的内容会陆续更新! 这篇博客主要记录了Andrew Ng课程第五章应用机器学习的建议,主要介绍了在测试新数据出现较大误差该怎么处理,这期间讲到了数据集的分类,偏差,方差,学习曲线等概念,帮

Andrew Ng机器学习课程笔记(二)之逻辑回归

Andrew Ng机器学习课程笔记(二)之逻辑回归 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7364598.html 前言 学习了Andrew Ng课程,开始写了一些笔记,现在写完第5章了,先把这5章的内容放在博客中,后面的内容会陆续更新! 这篇博客主要记录了Andrew Ng课程第二章逻辑回归的笔记,主要介绍了梯度下降法,逻辑回归的损失函数,多类别分类等等 简要介绍:逻辑回归算法是分类算法,我们将它作为分类算法使用.

Andrew Ng机器学习课程笔记(四)之神经网络

Andrew Ng机器学习课程笔记(四)之神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365730.html 前言 学习了Andrew Ng课程,开始写了一些笔记,现在写完第5章了,先把这5章的内容放在博客中,后面的内容会陆续更新! 这篇博客主要记录Andrew Ng课程第四章和第五章的神经网络,主要介绍前向传播算法,反向传播算法,神经网络的多类分类,梯度校验,参数随机初始化,参数的更新等等 1.神经网络概述

斯坦福大学机器学习课程原始讲义(含公开课视频) (转载)

http://blog.csdn.net/v_july_v/article/details/7624837 斯坦福大学机器学习课程原始讲义 本资源为斯坦福大学机器学习课程原始讲义,为Andrew Ng 所讲,共计20个PDF,基本涵盖了机器学习中一些重要的模型.算法.概念,此次一并压缩上传分享给大家,朋友们可以直接点击右边下载:斯坦福大学机器学习课程原始讲义.zip. 斯坦福大学机器学习公开课视频 与之配套的则是斯坦福大学的机器学习公开课的视频: 1. 网易翻译的公开课视频:http://v.1

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机器学习课程10补充

Andrew Ng机器学习课程10补充 VC dimension 讲到了如果通过最小化训练误差,使用一个具有d个参数的hypothesis class进行学习,为了学习好,一般需要参数d的线性关系个训练样本.到这里需要指出一点,这个结果是基于empirical risk minimization得到的,而对于那些大部分的discriminative的学习算法采用的通过最小化training error或者training error的近似值,前面推导的结论并不总是可以用,而对于non_ERM 学

Andrew Ng机器学习课程17(2)

Andrew Ng机器学习课程17(2) 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:主要介绍了利用value iteration和policy iteration两种迭代算法求解MDP问题,还介绍了在实际应用中如何通过积累"经验"更新对转移概率和reward的估计的学习模型,并结合两种迭代算法进行求解的完整过程. 2015-10-11 艺少 版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/lg1