Stanford机器学习笔记-10. 降维(Dimensionality Reduction)

10. Dimensionality Reduction

Content  10. Dimensionality Reduction   10.1 Motivation     10.1.1 Motivation one: Data Compression     10.2.2 Motivation two: Visualization   10.2 Principal Component Analysis     10.2.1 Problem formulation     10.2.2 Principal Component Analysis Algorithm     10.2.3 Choosing the Number of Principal Components     10.2.4 Advice for Applying PCA  

10.1 Motivation

10.1.1 Motivation one: Data Compression

如果我们有许多冗余的数据,我们可能需要对特征量进行降维(Dimensionality Reduction)。

我们可以找到两个非常相关的特征量,可视化,然后用一条新的直线来准确的描述这两个特征量。例如图10-1所示,x1和x2是两个单位不同本质相同的特征量,我们可以对其降维。

图10-1 一个2维到1维的例子

又如图10-2所示的3维到2维的例子,通过对x1,x2,x3的可视化,发现虽然样本处于3维空间,但是他们大多数都分布在同一个平面中,所以我们可以通过投影,将3维降为2维。

图10-2 一个3维到2维的例子

降维的好处很明显,它不仅可以数据减少对内存的占用,而且还可以加快学习算法的执行。

注意,降维只是减小特征量的个数(即n)而不是减小训练集的个数(即m)。

10.2.2 Motivation two: Visualization

我们可以知道,但特征量维数大于3时,我们几乎不能对数据进行可视化。所以,有时为了对数据进行可视化,我们需要对其进行降维。我们可以找到2个或3个具有代表性的特征量,他们(大致)可以概括其他的特征量。

例如,描述一个国家有很多特征量,比如GDP,人均GDP,人均寿命,平均家庭收入等等。想要研究国家的经济情况并进行可视化,我们可以选出两个具有代表性的特征量如GDP和人均GDP,然后对数据进行可视化。如图10-3所示。

图10-3 一个可视化的例子

10.2 Principal Component Analysis

主成分分析(Principal Component Analysis : PCA)是最常用的降维算法。

10.2.1 Problem formulation

首先我们思考如下问题,对于正交属性空间(对2维空间即为直角坐标系)中的样本点,如何用一个超平面(直线/平面的高维推广)对所有样本进行恰当的表达?

事实上,若存在这样的超平面,那么它大概应具有这样的性质:

  • 最近重构性 : 样本点到这个超平面的距离都足够近;
  • 最大可分性:样本点在这个超平面上的投影能尽可能分开。

下面我们以3维降到2维为例,来试着理解为什么需要这两种性质。图10-4给出了样本在3维空间的分布情况,其中图(2)是图(1)旋转调整后的结果。在10.1节我们默认以红色线所画平面(不妨称之为平面s1)为2维平面进行投影(降维),投影结果为图10-5的(1)所示,这样似乎还不错。那为什么不用蓝色线所画平面(不妨称之为平面s2)进行投影呢? 可以想象,用s2投影的结果将如图10-5的(2)所示。

图10-4 样本在3维正交空间的分布

图10-5 样本投影在2维平面后的结果

由图10-4可以很明显的看出,对当前样本而言,s1平面比s2平面的最近重构性要好(样本离平面的距离更近);由图10-5可以很明显的看出,对当前样本而言,s1平面比s2平面的最大可分性要好(样本点更分散)。不难理解,如果选择s2平面进行投影降维,我们会丢失更多(相当多)的特征量信息,因为它的投影结果甚至可以在转化为1维。而在s1平面上的投影包含更多的信息(丢失的更少)。

这样是否就是说我们从3维降到1维一定会丢失相当多的信息呢? 其实也不一定,试想,如果平面s1投影结果和平面s2的类似,那么我们可以推断这3个特征量本质上的含义大致相同。所以即使直接从3维到1维也不会丢失较多的信息。这里也反映了我们需要知道如何选择到底降到几维会比较好(在10.2.3节中讨论)。

让我们高兴的是,上面的例子也说明了最近重构性和最大可分性可以同时满足。更让人兴奋的是,分别以最近重构性和最大可分性为目标,能够得到PCA的两种等价推导

一般的,将特征量从n维降到k维:

注意: PCA和线性回归是不同的,如图10-6所示,线性回归是以平方误差和(SSE)最小为目标,参见1.2.4节;而PCA是使投影(二维即垂直)距离最小;PCA与标记或者预测值完全无关,而线性回归是为了预测y的值。

图10-6 PCA不是线性回归

分别基于上述两种目标的具体推导过程参见周志华老师的《机器学习》P230。从方差的角度推导参见李宏毅老师《机器学习》课程Unsupervised Learning: Principle Component Analysis

两种等价的推导结论是:对协方差矩阵

进行特征值分解,将求得的特征值进行降序排序,再取前k个特征值对应的特征向量构成

其中

10.2.2 Principal Component Analysis Algorithm

下面总结在matlab中实现PCA的全部算法(假设数据已被中心化)

Sigma = (1/m) * X' * X;    % compute the covariance matrix [U,S,V] = svd(Sigma);      % compute our projected directions Ureduce = U(:,1:k);        % take the first k directions Z = Ureduce' * X;          % compute the projected data points

10.2.3 Choosing the Number of Principal Components

如何选择k(又称为主成分的个数)的值?

首先,试想我们可以使用PCA来压缩数据,我们应该如何解压?或者说如何回到原本的样本值?事实上我们可以利用下列等式计算出原始数据的近似值Xapprox:

Xapprox = Z * Ureduce (m*n = m*k * k*n )

自然的,还原的数据Xapprox越接近原始数据X说明PCA误差越小,基于这点,下面给出选择k的一种方法:

结合PCA算法,选择K的算法总结如下:

这个算法效率特别低。在实际应用中,我们只需利用svd()函数,如下:

10.2.4 Advice for Applying PCA

  1. PCA通常用来加快监督学习算法。
  2. PCA应该只是通过训练集的特征量来获取投影矩阵Ureduce,而不是交叉检验集或测试集。但是获取到Ureduce之后可以应用在交叉检验集和测试集。
  3. 避免使用PCA来防止过拟合,PCA只是对特征量X进行降维,并没有考虑Y的值;正则化是防止过拟合的有效方法。
  4. 不应该在项目一开始就使用PCA: 花大量时间来选择k值,很可能当前项目并不需要使用PCA来降维。同时,PCA将特征量从n维降到k维,一定会丢失一些信息。
  5. 仅仅在我们需要用PCA的时候使用PCA: 降维丢失的信息可能在一定程度上是噪声,使用PCA可以起到一定的去噪效果。
  6. PCA通常用来压缩数据以加快算法,减少内存使用或磁盘占用,或者用于可视化(k=2, 3)。

参考:《机器学习》  周志华

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据挖掘DT机器学习

数据处理的统计学习(scikit-learn教程)

Scikit-learn 是一个紧密结合Python科学计算库(Numpy、Scipy、matplotlib),集成经典机器学习算法的Python模块。 一、统...

4585
来自专栏Spark学习技巧

从数学到实现,全面回顾高斯过程中的函数最优化

作者: Jonathan Landy 机器之心编译 参与:白悦、蒋思源 高斯过程可以被认为是一种机器学习算法,它利用点与点之间同质性的度量作为核函数,以从输入的...

38410
来自专栏智能算法

GBDT(梯度提升决策树)算法(详细版)

一、前言 通过之前的文章GBDT算法(简明版)对GBDT的过程做了大概的讲解,我们可以了解到GBDT是一种迭代的决策树算法,由多棵决策树组成,所有树的结论累加起...

51011
来自专栏AI研习社

教你从零开始检测皮卡丘-CNN目标检测入门教程(下)

本文为大家介绍实验过程中训练、测试过程及结果。算法和数据集参见《从零开始码一个皮卡丘检测器-CNN目标检测入门教程(上)》 训练 Train 损失函数 Lo...

2773
来自专栏JasonhavenDai

统计学习方法之K近邻法1.k近邻法(k-nearest neighbor,k-NN)2.k近邻模型3.k近邻算法的实现

1.k近邻法(k-nearest neighbor,k-NN) k近邻算法是一个基本分类和回归方法,k-NN的输入时实例的特征向量,对应于特征空间的点,输出是...

2795
来自专栏数据派THU

推导和实现:全面解析高斯过程中的函数最优化(附代码&公式)

2484
来自专栏决胜机器学习

机器学习(二) ——线性回归、代价函数与梯度下降基础

机器学习(二) ——线性回归、代价函数与梯度下降基础 (原创内容,转载请注明来源,谢谢) 一、线性回归 线性回归是监督学习中的重要算法,其主要目的在于用一个...

4036
来自专栏专知

【干货】贝叶斯线性回归简介(附完整代码)

1505
来自专栏程序生活

文本分类(下)-卷积神经网络(CNN)在文本分类上的应用

原先写过两篇文章,分别介绍了传统机器学习方法在文本分类上的应用以及CNN原理,然后本篇文章结合两篇论文展开,主要讲述下CNN在文本分类上的应用。前面两部分内容主...

802
来自专栏marsggbo

Andrew Ng机器学习课程笔记--week8(K-means&PCA)

Unsupervised Learning 本周我们讲学习非监督学习算法,会学习到如下概念 聚类(clustering) PCA(Principal Comp...

1799

扫码关注云+社区