降维的基本知识点总结

降维方法分为线性和非线性降维,非线性降维又分为基于核函数和基于特征值的方法。

  • 线性降维: PCA、ICA、LDA、LFA、LPP
  • 非线性降维:
    • 基于核函数的方法:KPCA、KICA、KDA
    • 基于特征值的方法: ISOMAP、LLE、LE、LPP、LTSA、MVU
      或者降降维方法如下图分类:

降维的作用

  • 降低时间复杂度和空间复杂度。
  • 节省了提取不必要的特征开销
  • 去掉数据集中夹杂的噪音。
  • 较简单的模型在较小的数据集上具有更高的鲁棒性。
  • 当数据能有较少的特征进行解释,我们可以更好的解释数据,使得我们可以提取知识。。
  • 实现数据的可视化。

降维的目的

用来进行特征选择和特征提取。

  • 特征选择:选择重要的特征子集,删除其余特征
  • 特征提取:由原始特征形成较少的新特征。
    在特征提取中,我们要找到 k k k个新的维度的集合,这些维度是原来k个维度的集合,这个方法可以是监督的,也可以是非监督的,如PCA是非监督的,LDA是监督的。

子集选择

对于 n n n个属性,有2n个可能的子集。穷举搜索找出属性的最佳子集可能是不现实的。特别是当n的数据类目增加时,通常使用压缩搜索空间的启发式算法,通常这些方法时典型的贪心算法,在搜索属性空间时,总是做看上去是最佳选择,它们的策略是局部最优选择, 期望由此导出全局最优解,在实践中,这些贪心算法是有效的,并可以逼近最优解。
子集选择的缺点:

降维的本质

学习一个映射函数 f f f: x x x到 y y y。(x是原数据点的表达,目前最多是用向量来表示, Y Y Y是数据点映射后的低维向量表达) f f f可能是显示的、隐式的,线性的、非线性的。

主成分分析PCA

  • 降原始数据的每一个样本用向量表示,把所有样本组合起来构成样本矩阵,通常对样本矩阵进行中心化处理,得到中心化样本矩阵。
  • 求中心化后样本矩阵的协方差。
  • 求协方差矩阵的特征值和特征向量。
  • 将求出的特征值按从大到小顺序排列,并将其对应的特征向量按照此顺序组合成一个映射矩阵,根据指定的PCA保留的特征个数取出来映射矩阵前n行或前n列作为最终的映射矩阵。
  • 用映射矩阵对数据进行映射,达到数据降维的目的。

PCA示例的小插曲:TF-IDF

TF-IDF: 是一种用于信息检索和文本挖掘的常用加权技术,是一种统计方法,用于评估一个词对于一个文本集和一个语料库中其中一份文件的重要程度,包括两部分:词频和逆文档频率。

  • 协方差矩阵对角上是方差,非对角线上是协方差,协方差是衡量两个变量同时变化的变化程度。
  • PCA推导——最大方差理论
    • 在信号处理中,认为信号具有较大的方差,噪音具有较小的方差,信噪比越大越好,PCA遵循投影后的样本点间方差最大原则

LDA

  • 线性判别式分析,是模式识别中的经典算法。
  • 是一种监督学习的降维技术,它的数据集中每个样本都是有类别输出的。
  • 思想:投影后类内距离最小,类间距离最大。
  • 线性判别: 将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果。投影后保证模式样本在新的子空间有最大的类间距离和最小的类内距离。这是一种有效的特征提取方法。使用这个方法,能使得投影后模式样本的类间散布矩阵最大,且同时类内散布矩阵最小。

与PCA相比较

  • 共同点,都属于线性方法。

    • 在降维时都采用矩阵分解的方法
    • 都假设数据符合高斯分布。
  • 不同点:
    • LDA是有监督的。
    • 不能保证投影到的坐标系是正交的,(根据类别的标注,关注分类能力)
    • 降维直接与类别的个数有关,与数据本身维度无关,
      • 原始数据是n维的,有c个类别,降维后一般是到c-1维
      • 可以用于降维,还可以用于分类。
      • 选择分类性能最好的投影方向。

LLE

属于流行学习的一种,和传统的PCA和LDA相比,不在是关注样本方差的降维方法,而是一种关注降维时保持样本局部的线性特征
LLE将高维流形分成许多小块,每一小块可以用平面代替,然后再在低维中重新拼合起来,且要求保留各点之间的拓扑关系不变

LLE思想

首先假设数据在较小的局部时线性的,即某一个数据能够用它邻域中的几个样本来线性表示,可以通过 k − k- k−近邻的思想来找到它的近邻点。在降维之后,希望样本点对应的投影尽量保持同样的线性关系,。即投影前后线性关系的权重参数不变或者改变很小

LLE算法推导

  • 首先确定邻域大小的选择
  • 需要找到某个样本 x i x_i xi​和 k k k个最近邻之间的线性关系。
  • 该样本点的局部重建权值矩阵和其近邻点计算出该样本点的输出值

ISOMAP(等距特征映射)

以线性流形学习方法MDS为理论基础,将经典MDS方法中的欧式距离替换为

tSNE

TSNE是由SNE衍生出的一张算法,SNE最早出现在2002年**,改变了MDN和ISOMAP中基于距离不变的思想**,将高维映射到低维的同时,尽量保证相互之间的分布概率不变,SNE将高维和低维中的样本分布都看作高斯分布,而TSNE将低维中的坐标当作T分布,这样的好处是为了让距离大的簇之间距离拉大,从而解决了拥挤问题。从SNE到TSNE之间,还有一个对称SNE,其对SNE有部分改进作用

SNE算法




对称SNE

就是让高维和低维中的概率分布矩阵是对称的,能方便计算,但是对拥挤问题无法改进

TSNE

经验

  • 总结了以下降维方法总称,后两个算法用到时候自己在开始查找,将其全部搞定都行啦的样子与打算。

降维的基本知识点总结相关推荐

  1. “降维算法”面试知识点总结-PCA+LDA算法-百面机器学习系列4

    提示:在准备机器学习算法工程师面试的过程中,我主要参考<百面机器学习>去巩固自己的基础知识.本系列博客将以该书为主题,并以八股文的方式去概述整本书的内容,以尽量减少读者们的阅读作量,并方便 ...

  2. 超强NLP思维导图,知识点全面覆盖:从基础概念到最佳模型,萌新成长必备资源...

    栗子 发自 凹非寺 量子位 报道 | 公众号 QbitAI 一只萌新,想把自己修炼成一个成熟的NLP研究人员,要经过一条怎样的路? 有个名叫Tae-Hwan Jung的韩国小伙伴,做了一份完整的思维导 ...

  3. 数据降维(特征提取)和特征选择有什么区别?

    Feature extraction和feature selection 都同属于Dimension reduction.要想搞清楚问题当中二者的区别,就首先得知道Dimension reductio ...

  4. 【IM】关于无监督降维的理解

    在无监督学习中,异常检测.降维.聚类是三个主要场景,本文就无监督降维做了一个分类和基本介绍,需要扩展补充很多知识点. 拉普拉斯特征映射的思想在谱聚类中也有应用.

  5. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-01-CNN基础知识点

    转载自:http://blog.csdn.net/niuwei22007/article/details/47399913 <CNN基础知识点>From:Convolutional Neu ...

  6. 一天1个机器学习知识点(五)

    陆陆续续整理机器学习的知识点,资料大多数来自网上,不做盈利目的,如果侵权请告知即删!如果文章中有错误的地方还请各位同学指正,一起学习,一起进步! 每天都在更新中,记得收藏,每天进步一点点!! 一天1个 ...

  7. 一天1个机器学习知识点(四)

    陆陆续续整理的机器学习的知识点,资料大多数来自网上,不做盈利目的,如果侵权请告知即删!如果文章中有错误的地方还请各位同学指正,,一起学习,一起进步! 每天都在更新中,记得收藏,每天进步一点点!! 一天 ...

  8. 机器学习常见知识点自查50问与答

    机器学习常见知识点自查50问与答 1.什么是机器学习 2.机器学习与数据挖掘的区别 3.什么是机器学习的过度拟合现象 4.过度拟合产生的原因 5.如何避免过拟合 6.什么是感应式的机器学习 7.机器学 ...

  9. kylin调优,项目中错误总结,知识点总结,kylin jdbc driver + 数据库连接池druid + Mybatis项目中的整合,shell脚本执行kylin restapi 案例

    关于本篇文章的说明: 本篇文章为笔者辛苦劳作用了一整天总结出来的文档,大家阅读转发的时候请不要吝啬写上笔者:涂作权 和 原文地址. 由于笔者所在环境没有人用过kylin,笔者也是自学官网,阅读书籍 将 ...

最新文章

  1. 【AS3代码】隐藏原有鼠标箭头,并自定义鼠标小箭头
  2. phpstrom函数注释模板_PHPstorm 函数时间注释的修改
  3. linux下安装glibc-2.14,解决“`GLIBC_2.14‘ not found”问题
  4. [转载]为什么使用 SLF4J 而不是Log4J来做Java 日志
  5. php 画图 坐标,说说PHP作图(一)_php
  6. 【渝粤教育】电大中专电商运营实操 (23)作业 题库
  7. 城市代码表_从零开始做一个SLG游戏(六)游戏系统以及配置表
  8. ef 连接localdb_如何连接和使用Microsoft SQL Server Express LocalDB
  9. 给力!一行代码躺赚普通程序员 10 年薪资!
  10. 数组异或交换出现的问题
  11. C 风格字符串,C++string类,MFC,CString类的区别。
  12. sqlyog与mysql编码语法_如何解决sqlyog连接的数据库乱码的问题
  13. https的安全密钥
  14. vue 实现点击插入输入框_vue把输入框的内容添加到页面的实例讲解
  15. 手机处理器天梯图出炉:第一实至名归,你手机处理器排第几
  16. Web前端开发入门教程,HTML5+CSS3+JS教程,达到web前端工程师的水平
  17. 【2021最新版】《定时执行专家 5.2》软件使用手册
  18. 【浏览器】1022- 47 张图带你走进浏览器的世界!
  19. 2.【OS】vscode下载很慢的问题
  20. 如何访问部署在家里的服务器(家庭宽带能够申请公网IP)

热门文章

  1. Exception evaluating SpringEL expression: “#fields.hasErrors()“ (template
  2. python末尾加空格_Python3基础 print(,end=) 输出内容的末尾加入空格
  3. 使用k3s部署轻量Kubernetes集群快速教程
  4. Sketch网页截屏插件设计开发
  5. 研究生语音识别课程作业记录(三) 非特定人孤立词识别
  6. JS将秒数换算成时分秒 以及转化为年月日 时分秒以及多长时间以前
  7. 如何实现超大文件(60G)传输给别人?
  8. BeyondCompare4 破解方法
  9. ArduPilot — ArduPlane架构概述
  10. php 转换成string,在PHP中将数字(1,2,3)转换为string(一,二,三)