第八章 降维

文章目录

  • 第八章 降维
  • 前言
  • 一、思维导图
  • 二、主要内容
    • 1、维度的诅咒
    • 2、降维的主要方法
    • 3、PCA
    • 4、内核PCA
    • 5、LLE
    • 6、其他降维技术
  • 三、降维技术
  • 四、总结

前言

我们模型的训练的时候会遇到很多由维度(特征)带来的困难,例如维度太多导致训练速度变慢,训练数据有很多无用的特征使得模型性能不好等。在面对这些困难的时候最直观的一个方法就是降维即删除掉一个无用的特征,但是特征并不能随便删除的需要做到在删除特征之后是对模型训练起到正向的作用,下面就让我们来研究一下降维(删除部分特征)的方法。


一、思维导图

二、主要内容

1、维度的诅咒

  • 我们前面提到的,我们在训练模型的时候会遇到成千上万个特征的训练数据,这样的数据会导致训练速度缓慢和其他一些预想不到的问题。再加上纬度越高实例与实例之间的距离越远,数据集越稀疏,所以训练出来的模型更加不可靠。这一系列的问题就称为维度的诅咒。

2、降维的主要方法

  1. 投影
    在实际情况中,我们的训练实例并不是均匀分布在所有实例上的,所以我们可以通过把高纬度的实例垂直映射到低纬度上来实现降维。
  2. 流行学习
    还有些情况是,低纬度的实例以弯曲或者扭曲的方式呈现在高纬度中的,我们也可以通过对展开这些弯曲的低纬实例来实现降维。

3、PCA

  1. 概念
    PCA是投影降维的一种具体的方法,PCA会寻找与维度相同数量的轴,每个轴代表一个PC(主要成分)然后再经过计算把数据投影到某一个低维度上。
  2. 保留差异性
    我们在高维数据投影到低纬超平面的时候为了保存最多的信息,我们需要保证投影之后的数据保存最多的差异性。
  3. 主要成分
    PCA生成的轴就称为主要成分,对于每一个主要成分PCA都会找到一个指向PC方向的零中心单位向量,整个向量会随着训练集的改变而 改变,但是始终会保持在同一个平面上。
  4. 向下投影到d维
    一旦确定了所有的主要成分之后我们就需要计算把实例向下投影到低维度。
  5. 可解释方差比
    可解方差比只是一个体现每个主要成分携带信息量的值。
  6. 选择正确的维度
    我们可以通过选择足够大的可解释方差来实现降维的同时还保存了很大部分的信息。也可以通过绘图的方式来找到一个合适的降维维度。
  7. PCA压缩
    经过PCA降维的数据减少了很多的空间,原理与图片的压缩类似,在逆向还原的时候依旧会损失掉一部分数据。
  8. 随机PCA
    在使用随机PCA的时候我们会以最快的速度得到一个降低维度最优值的近似值。当训练集的数量或者特征大于500,或者d小于训练集数量或者特征数80%的时候会默认使用随机PCA。
  9. 增量PCA
    我们在面对无法一次性把所有数据放入内存的情况,这个时候我们就需要使用增量PCA一部分一部分的计算。

4、内核PCA

  1. 概念
    在第五章中处理一些非线性的问题时,我们会使用核函数把数据映射到高维的空间中来进行线性回归,同样的我们可以把核概念应用到降维中来,对一些复杂的非线性数据进行降维。
  2. 选择内核并调整超参数
    方法一:我们可以使用降维与其他的模型进行结合通过验证模型性能的方式来验证降维的性能,从而实现选择内核与超参数的功能。
    方法二:由于我们把训练集映射到无限维的特征空间之后,还需要再使用PCA把数据映射到低维度,这个过程会产生一个误差,我可以通过找到这个误差的最小值来选择内核与超参数。

5、LLE

  • LLE是流形学习技术的具体方法。它首先测量每个实例月相邻实例的线性相关性,再寻找最好的方式保留这些线性相关的低维形式。简单来说就是把在高维中扭曲的低维图形展开来。

6、其他降维技术

  1. 随机投影
  2. 多维缩放
  3. lsomap
  4. t分布随机临近嵌入
  5. 线性判别分析

三、降维技术

1.减少数据集维度的主要动机是什么?主要缺点是什么?
主要动机为:1、加快模型的训练速度,删除掉一个无用的特征,2、数据可视化,寻找更加重要的特征。3、节省空间。
主要缺点为:1、会损失掉一部分数据导致模型性能降低。2、可能是计算密集型。3、使得模型训练的流水线更加复杂。4、转换之后的特征无法合理解释。

2.维度的诅咒是什么?
维度的诅咒指的是一些在低维空间内不会发生的问题在高维中发生。在机器学习中体现为,在高维空间中,实例与实例之间的距离很远,导致训练出来的模型容易过拟合与训练集。

3.一旦降低了数据集的维度,是否可以逆操作?如果可以,怎么做?如果不能,为什么?
一旦数据集实现了降维操作,很很难完美的逆向升维,因为在降维的过程中会损失掉一部分数据。虽有有些算法支持逆向生成一个相似的数据集,但是有些算法不支持。

4.可以使用PCA来减少高度非线性的数据集的维度吗?
对于大多数的数据集来说,PCA确实能够减少维度,包括高维度非线性的数据集。PCA能够做到减少掉一部分无用的维度,但是如果数据集不存在无用的维度,那么PCA的降维将会损失掉太多的信息。

5.假设你在1000维的数据集上执行PCA,将可解释方差比设置为95%。结果数据集将具有多少个维度?
结果的维度取决于数据集,数据集的维度可以在1到950个维度之间。如果数据集完美的一个对角线分割了数据集,那么PCA可以使得数据降到1维,如果训练数据很稀疏的分散在1000维上,那么PCA只能把数据降到950维。

6.在什么情况下,你将使用常规PCA、增量PCA、随机PCA或内核PCA?
常规的PCA是默认的选择,当你的数据集无法被内存容纳时,或者是需要不断的处理新增实例是用增量PCA,如果你想对训练集大大的降低维度时使用随机PCA,当处理非线性的数据集降维时,使用内核PCA。

7.如何评估数据集中的降维算法的性能?
能够很好的消除掉一些无用的特征,并且也没有丢失很多信息的降为算法算是好的算法。可以通过逆转换之后的重构误差来衡量降为算法的性。还是一个简单的方法,就是与一个预测器结合起来,衡量最终预测器的性能来衡量降为算法的性能。

8.链接两个不同的降维算法是否有意义?
这种方式是有意义的,常见的实例就是使用PCA消除一下无用的特征,然后再连接一种更慢的降为算法如LLE,最后得到的结果可能与单独使用LLE相同,但是时间要短得多。

四、总结

降维是我们在实际开发中总会遇到的问题,因为高维度的数据确实会给我们带来很多的困扰。这一章的主要内容总结一下就是:

  1. 什么是维度的诅咒
    高维的数据会导致模型过拟合数据,但是模型不准确,并且训练过程及其缓慢。
  2. 怎么解决维度的诅咒
    我们通过映射,把高维的数据垂直映射到低维中或是通过流行学习,把存在高维空间中的低维扭曲图形展开来两种方式实现降维来解决维度的诅咒。
  3. PCA与LLE
    PCA分别就是映射与流行学习的具体方法。

对文章有任何疑惑或者想要和博主一起学机器学习一起进步的朋友们可以添加 群号:666980220。需要机器学习实战电子版或是思维导图的也可以联系我。祝你好运!

项目地址: github

边境的悍匪—机器学习实战:第八章 降维相关推荐

  1. 机器学习实战:PCA降维 样本协方差

    先用matlab试试样本协方差: >> X=[1,3;2,4;0,6] X = 1     3      2     4      0     6 注意,行表示样本点,列表示属性列向量.以 ...

  2. 机器学习实战——第八章(回归):回归——预测数值型数据

    前言 接着上一篇继续学习. 首先感谢博主:Jack-Cui 主页:http://blog.csdn.net/c406495762 回归博文地址:https://blog.csdn.net/c40649 ...

  3. 【白话机器学习】算法理论+实战之PCA降维

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,在这简单的先捋一捋, 常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支 ...

  4. 机器学习实战(十二)降维(PCA、SVD)

    目录 0. 前言 1. 主成分分析PCA(Principal Component Analysis) 2. 奇异值分解SVD(Singular Value Decomposition) 3. 低维空间 ...

  5. 机器学习实战-65:主成因分析降维算法(Principal Component Analysis)

    机器学习实战-65:主成因分析降维算法(PCA) 深度学习原理与实践(开源图书)-总目录,建议收藏,告别碎片阅读! 机器学习分为监督学习.无监督学习和半监督学习(强化学习).无监督学习最常应用的场景是 ...

  6. 《机器学习实战:基于Scikit-Learn、Keras和TensorFlow第2版》-学习笔记(8):降维

    · Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition, by Aurélien Géron ...

  7. 白话机器学习算法理论+实战之PCA降维

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,比如我之前写过的一篇十大机器学习算法的小总结,在这简单的先捋一捋, 常见的机器学习算法: 监督学习算法:逻辑 ...

  8. 《机器学习实战》学习笔记第八章-回归

    目录 线性回归 标准回归 局部加权线性回归 预测鲍鱼的年龄 缩减系数来"理解"数据 岭回归 lasso 前向逐步回归 预测乐高玩具套件的价格 获取数据 线性回归 回归的目的就是预测 ...

  9. 机器学习实战课后习题(八)

    机器学习实战课后习题第八章答案 课本:handson-ml2 1.减少数据集维度的主要动机是什么?主要缺点是什么? 1.降维的主要动机是: 为了加速后续的训练算法(在某些情况下,也可能为了消除噪声和冗 ...

  10. 机器学习实战读书总结

    机器学习实战读书总结 蒟蒻退役ACMer 1403mashaonan终于读完了新买的Machine Learning in Action(机器学习实战) 立的年前读完这本书的flag没有完成(主要是1 ...

最新文章

  1. 每位开发人员都应铭记的10句编程谚语 (我超喜欢,转载了)
  2. bootstrap怎么用_不用自己写css,不用bootstrap,写样式有tailwindcss就足够了
  3. UA MATH564 概率论 多元随机变量的变换 理论与应用1
  4. CVPR 2021 involution:超越convolution和self-attention的神经网络新算子
  5. vue路由守卫判断用户是否登录,如果没登陆就跳转到登录
  6. ios多线程Android,iOS 关于多线程
  7. 用内核对象进行线程同步
  8. 95-070-040-源码-源码调试-FLINK源代码调试方式
  9. JavaScript Cookie
  10. 微博广告推荐策略工程架构体系演进
  11. Spring DelegatingFilterProxy 过滤器 的原理及运用
  12. VS2008环境下编译使用SGI STL(using stlport 5.2.1)
  13. web 前端签名插件_10款前端开发神器,助你成前端高手?
  14. C#坦克大战流程设计与源代码(1):基本对象类规划
  15. Linux切换jdk版本
  16. 服务器如何连接多屏显示器,电脑设置两个显示器多屏显示
  17. 使用python解析pdf文件
  18. stc12c5a60s2单片机c语言,STC12C5A60S2单片机的DS18B20的C程序
  19. 谷歌play支付_Google Play的新功能
  20. svn提交代码报错:svn: E175002: Unexpected HTTP status 502 ‘Bad Gateway‘

热门文章

  1. Module parse failed: Unexpected token (1:0) You may need an appropriate load
  2. Stream篇(五)
  3. 智能眼镜的“减熵式增长”
  4. 如何修改静态 IP 地址和动态 IP 地址
  5. 杜鹏的个人博客 Flex使用Blazeds与Java交互及自定义对象转换详解
  6. InfoQ在ETE大会上对Android工程师Jake Wharton的采访
  7. Hongda -接小球游戏
  8. matlab求解常微分方程的实验,实验五 - - 用matlab求解常微分方程
  9. Kuangbin专题八生成树
  10. zbox的测试例——selectAll+selectInverse