Lecture 14 Dimensionality Reduction 降维

14.1 降维的动机一:数据压缩 Data Compression

现在讨论第二种无监督学习问题:降维。 降维的一个作用是数据压缩,允许我们使用较少的内存或磁盘空间,也加快算法速度。

举例:
假设用两个特征描述同一个物品的长度,x1单位是厘米cm,x2单位是英寸inches。这将导致高度冗余,所以需要减到一维。


将数据从三维降至二维: 将三维向量投射到一个二维的平面上,强迫使得所有的数据都在同一个平面上,降至二维的特征向量。

这个过程可以用于把任何维度的数据降到任何想要的维度。事实工作中,不同的团队可能会给你几百或成千上万的特征,其中很容易出现冗余特征。

14.2 降维的动机二:数据可视化 Visualization

降维可以帮助我们将高维数据可视化。
假使有关于许多不同国家的数据,每一个特征向量都有 50 个特征(如 GDP,人均 GDP,平均寿命等)。如果要将这个 50 维的数据可视化是不可能的。将其降至 2 维,便可将其可视化了。

这样做的问题在于,降维算法只负责减少维数,新产生的特征的意义就必须由我们自己去发现了。

14.3 PCA问题的公式描述 Principal Component Analysis Problem Formulation

主成分分析(PCA)是最常见的降维算法。PCA 要做的是找到一个方向向量(Vector direction),当把所有的数据都投射到该向量上时,投射平均均方误差尽可能小。方向向量是一个经过原点的向量,投射误差是从特征向量向该方向向量所作垂线的长度。如下图:

主成分分析问题,要将n维数据降至k维,目标是找到向量u(1) ,u(2) ,...,u(k) 使得总的投射误差 Projected Error 最小:


主成分分析与线性回归的比较:

主成分分析最小化的是投射误差,不作任何预测。

线性回归最小化的是预测误差,目的是预测结果。
上图中,左边的是线性回归的误差(垂直于横轴投影),右边则是主要成分分析的误差(垂直于斜线投影)。

PCA 将n个特征降维到k个,可以用来进行数据压缩,如果 100 维的向量最后可以用 10维来表示,那么压缩率为 90%。同样图像处理领域的 KL 变换使用 PCA 做图像压缩。但 PCA 要保证降维后数据的特性损失最小。

PCA 的一大好处是对数据进行降维处理。我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度保持原有数据的信息。

PCA 的一个很大的优点是,它是完全无参数限制的。在 PCA 的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的。 但这同时也是缺点,如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高。

14.4 PCA算法 Principal Component Analysis Algorithm

使用PCA 从 n 维减少到 k 维:
1)均值归一化。计算出所有特征的均值,然后令 xj = xj − μj 。如果特征是在不同的数量级上,还需要将其除以标准差 σ2

2)计算协方差矩阵(covariance matrix) sigma Σ

3)计算协方差矩阵 Σ 的特征向量(eigenvectors):
在 Matlab 里我们可以利用奇异值分解(singular value decomposition)来得到特则向量矩阵 U,调用方式为 [U, S,V] = svd(sigma) 。(注:函数返回的矩阵 S 也有用,后续会讲到)

对于一个 n × n 维度的矩阵,U 是一个由 “与数据之间最小投射误差的方向向量” 构成的矩阵。 如果希望将数据从 n 维降至 k 维,只需要从 U 中选取前 k 个向量,获得一个 n × k 维度的矩阵,用Ureduce 表示,然后通过如下计算获得要求的新特征向量 z(i):

其中 Ureduce 为 n x k 维,x 为 n × 1 维,因此结果 z(i) 为 k × 1 维。 注:我们不对方差特征进行处理。

14.5 重建原始特征 Reconstruction from Compressed Representation

给定压缩后的低维数据 z(i) 怎么反向得到高维的 x(i) 数据? 即:如何根据压缩后的数据去重建原始数据?

当 x 为 2 维,z 为 1 维,z = UreduceT * x, 则相反的方程为: xappox = Ureduce ⋅ z,  这时有 xappox ≈ x。

14.5 选择主成分的数量k Choosing The Number Of Principal Components

主要成分分析最小化投射的平均均方误差,怎么选择适当降维目标 k 值(即主成分的数量)呢?

我们的目标是:在『平均均方误差与训练集方差的比例尽可能小』的情况下,选择尽可能小的 k 值。

如果希望比例小于 1%, 就意味着原本数据的偏差有 99% 都保留下来了。 另外,还可以使用5%(对应95%的偏差), 10%(对应90%的偏差) 这些比例。

通常95%到99%是最常用的取值范围。(注:对于许多数据集,通常可以在保留大部分差异性的同时大幅降低数据的维度。这是因为大部分现实数据的许多特征变量都是高度相关的。)

具体做法:

a) 先令 k = 1,然后进行主要成分分析,获得Ureduce 和z,然后计算比例是否小于1%。
b) 如果不是的话,再令k = 2,如此类推,直到找到可以使得比例小于 1%的最小k 值。

事实上还有一些更好的方式,在 Matlab中有一个“svd”函数。 其中,SVD代表为奇异值分解(singular value decomposition),函数调用 [U, S, V] = svd(sigma) 返回一个与 Σ(即ppt中的Sigma) 同大小的对角矩阵 S(由Σ的特征值组成),两个酉矩阵 U 和 V ,且满足 Σ = U * S * V'。若 A 为 m×n 矩阵,则 U 为 m×m 矩阵,V 为 n×n 矩阵。奇异值在 S 的对角线上,非负且按降序排列,对角线之外的其它元素都是 0。

对于方阵 Σ,有

因为我们的目的是从 n 维降到 k 维,也就是选出这 n 个特征中最重要的 k 个,也就是选出特征值最大的 k 个。所以得到矩阵 S 后,我们可以直接用它来计算平均均方误差与训练集方差的比例,而不用一遍遍重复计算误差和方差:

14.7 PCA的应用建议 Advice for Applying PCA

假使我们正在针对一张 100×100 像素的图片进行某个计算机视觉的机器学习,即总共有 10000 个特征。使用 PCA 算法的步骤如下:

1. 运用 PCA 将数据压缩至 1000 个特征
2. 对训练集运行学习算法
3. 在预测时,采用之前学习得到的 Ureduce 将输入的特征 x 转换成特征向量 z ,然后再进行预测

注: 如果有交叉验证数据集,也采用对训练集学习而来的Ureduce

正确用法,压缩和可视化:

错误的用法:

1. 将其用于减少过拟合(通过减少特征的数量)

这样做非常不好,不如使用正则化处理。原因在于 PCA 只是近似地丢弃掉一些特征,它并不考虑任何与结果变量有关的信息,因此可能会丢失非常重要的特征。而当进行正则化处理时,会考虑到结果变量,不会丢掉重要的数据。

2. 在项目开始时便将PCA考虑进去

最好还是从所有原始特征开始,只在有必要的时候(算法运行太慢或者占用太多内存)才考虑采用 PCA。

部分公式参考:Rachel-Zhang

【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 14—Dimensionality Reduction 降维的更多相关文章

  1. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 15—Anomaly Detection异常检测

    Lecture 15 Anomaly Detection 异常检测 15.1 异常检测问题的动机 Problem Motivation 异常检测(Anomaly detection)问题是机器学习算法 ...

  2. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 16—Recommender Systems 推荐系统

    Lecture 16 Recommender Systems 推荐系统 16.1 问题形式化 Problem Formulation 在机器学习领域,对于一些问题存在一些算法, 能试图自动地替你学习到 ...

  3. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 13—Clustering 聚类

    Lecture 13 聚类 Clustering 13.1 无监督学习简介  Unsupervised Learning Introduction 现在开始学习第一个无监督学习算法:聚类.我们的数据没 ...

  4. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 12—Support Vector Machines 支持向量机

    Lecture 12 支持向量机 Support Vector Machines 12.1 优化目标 Optimization Objective 支持向量机(Support Vector Machi ...

  5. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 11—Machine Learning System Design 机器学习系统设计

    Lecture 11—Machine Learning System Design 11.1 垃圾邮件分类 本章中用一个实际例子: 垃圾邮件Spam的分类 来描述机器学习系统设计方法.首先来看两封邮件 ...

  6. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 10—Advice for applying machine learning 机器学习应用建议

    Lecture 10—Advice for applying machine learning 10.1 如何调试一个机器学习算法? 有多种方案: 1.获得更多训练数据:2.尝试更少特征:3.尝试更多 ...

  7. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 1_Introduction and Basic Concepts 介绍和基本概念

    目录 1.1 欢迎1.2 机器学习是什么 1.2.1 机器学习定义 1.2.2 机器学习算法 - Supervised learning 监督学习 - Unsupervised learning  无 ...

  8. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 18—Photo OCR 应用实例:图片文字识别

    Lecture 18—Photo OCR 应用实例:图片文字识别 18.1 问题描述和流程图 Problem Description and Pipeline 图像文字识别需要如下步骤: 1.文字侦测 ...

  9. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 17—Large Scale Machine Learning 大规模机器学习

    Lecture17 Large Scale Machine Learning大规模机器学习 17.1 大型数据集的学习 Learning With Large Datasets 如果有一个低方差的模型 ...

随机推荐

  1. CCF 集合竞价

    题目: 问题描述 某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量. 该程序的输入由很多行构成,每一行为一条记录,记录可能有以下几种: 1. buy p s ...

  2. Mac上获取文件md5 值

    mac 上获取一个文件的md5值如下 在terminal 上输入下面命令行即可: 方法一: //备注 AccountPassword/check 是全路径 也可以相对路径,我这里是相对路径,用来测试用 ...

  3. 《selenium2 python 自动化测试实战》(11)——selenium安装版本

    先和大家说一下selenium环境的问题,大家可以在cmd里先看一下自己的selenium版本: 回车,就可以安装了. 本来想和大家说如何跳过验证码进行登录的,结果好多朋友加我问我环境配置的问题,所以 ...

  4. LeetCode String Compression

    原题链接在这里:https://leetcode.com/problems/string-compression/description/ 题目: Given an array of characte ...

  5. vue踩坑记录

    一.element resetFields 方法报错 网上查的解决方案 resetForm(formName) { this.$nextTick(() => { this.$refs[formN ...

  6. RK3288 查看ddr频率

    转载请注明出处:https://www.cnblogs.com/lialong1st/p/8515135.html RK3288 查看 ddr 当前频率的方式有两种,第一种是通过 adb 查看,第二种 ...

  7. mysql binlog_format row and Statement 比较

    两种模式的对比: Statement 优点 历史悠久,技术成熟: 产生的 binlog 文件较小: binlog 中包含了所有数据库修改信息,可以据此来审核数据库的安全等情况: binlog 可以用于 ...

  8. 微软Azure平台 cloud service动态申请证书并绑定证书碰到的坑

    我们有一个saas平台 部分在azure的cloud service 使用lets encrypt来申请证书.每一个商家申请域名之后就需要通过Lets encrypt来得到证书并绑定证书. 主要碰到的 ...

  9. 生产者-消费者问题:介绍POSIX线程的互斥量和条件变量的使用

    全局初始化互斥量和条件变量(不全局也行,但至少要对线程启动函数可见,这样才能使用.) static pthread_cont_t cond = PTHREAD_COND_INITIALIZER; st ...

  10. 兼顾FPGA和单片机

    当今,FPGA和单片机的应用非常广泛,在有FPGA知识的基础上,笔者认为可以把FPGA作为主要的学习目标,单片机作为辅助技能.其实二者是相互促进的.不管是FPGA还是单片机的开发其实都是基于较强的逻辑 ...