1. 前言

在硕士期间学习研究了数据降维相关的知识,阅读了一些相关文章,也断断续续在知乎上写了

一些数据降维的入门级文章,收获了一些小伙伴的赞同,并在GitHub上开源了一些特征抽取算

法的源代码,获得了的1.1k+star。

因为在GitHub的代码中留下了邮箱,因此有许多小伙伴来询问我数据降维方法的使用,其中有

很大一部分并不是计算机专业的,也是刚刚接触机器学习这一领域。所遇到的问题都类似这

种:

我有数据,我想降维,我怎么选择方法

希望小伙伴们在阅读完本文之后,将学会如何根据自己的数据和目的,快速地选择简单基本的

特征降维算法构建一个baseline的模型。

2. 数据降维是什么

顾名思义,数据降维就是通过特征选择或者特征变换操作将数据从原始的D维空间投影到新的

K维空间。数据降维方法主要分为特征选择和特征抽取(特征降维)两类。

2.1 特征选择

特征选择方法是在所有的特征中通过子集搜索算法寻找和模型最相关的特征子集的过程,简单

的说就是在所有特征中选择和目标最相关的一些特征,丢弃掉一些不太重要的特征。

特征选择方法又分为三个类型:

  • 过滤式

过滤式特征选择方法根据特征的统计学特性选择特征。对于有标签的数据,我们可以计算标签

和特征的互信息、相关系数等值,作为特征的得分,然后选择得分比较高的特征。对于没有标

签的数据,也可以选择计算特征的方差等值,通常方差较小的特征是无用特征的概率更大一

些。经过上述操作,我们就可以简单快速的选择更有用的特征,实现特征降维。

优点:只需要对特征进行常数级别的遍历,效率高;得到的特征子集使用范围广,后续各种模

型都可以使用这个特征子集。

缺点:特征子集具有冗余性(可以想想为什么,答案在文末);得到的特征子集通常不是最优的。

常用算法:ReliefF、基于互信息的特征选择、基于相关系数的特征选择、基于Fisher-score的特征选择

  • 包裹式

包裹式特征选择方法通过训练机器学习模型来选择特征。例如SVM-RFE方法,需要多次调用

SVM方法,每次选择表现最好的特征。

优点:得到的特征子集准确率高;

缺点:需要多次调用模型,很耗时;得到的特征子集只适用于当前的模型(其他模型使用这个

特征子集效果不一定会好)。

常用算法:SVM-RFE

  • 嵌入式

在训练机器学习模型的同时选择了特征,例如逻辑回归、LASSO模型。嵌入式特征选择方法的

特点就是在训练好模型的同时,模型会给不同特征不同的权重,使用这个权重来衡量特征的重

要性。

优点:耗时适中,同时有较好的准确率。

缺点:容易被噪声特征影响。

常用算法:逻辑回归、Lasso

2.2 特征抽取

特征抽取也被称为特征降维,用的最广泛也最常见的一种特征抽取方法就是PCA。特征抽取根

据变换的方式分为线性和非线性两种。

一些常见的特征抽取方法
  • 线性降维

线性降维就是通过某种线性变换,将数据从高维空间映射到低维空间。

举一个简单的例子:比如你在经营一个水果摊子“晴子水果”,好多来你这买水果的顾客都很特

别,每次都会买(3个苹果2个梨)的组合。此时你每次记账都要记:【苹果:3,梨:2】。久而

久之,你决定把3个苹果2个梨组合到一起,称为一个“晴”,之后记账的时候就可以简单记下

【晴:1】。

上述例子有这样的关系:晴*1=苹果*1/3+梨*1/2,1/3和1/2就是苹果和梨所占的权重。线性降

维就可以理解为寻找高维空间向低维空间映射时每个维度所占的权重,例如PCA就是寻找在低

维空间中数据点的方差尽可能的大,协方差为0时,不同维度所所占的权重。

  • 非线性降维

非线性降维指的是是从高维空间向低维空间的转化是非线性的,看下面经典的三维瑞士卷:

3维瑞士卷数据和利用LE算法得到的二维数据

瑞士卷可以看作是二维数据折叠、弯曲之后展现在三维空间,其本身还是一个二维数据。一种

常见的非线性降维思想是认为高维数据在局部上是线性的,我们只需要保证局部线性,就可以

将数据从三维转换到二维。以瑞士卷为例,我们可以把瑞士卷看作是很多小块的二维平面在三

维空间拼接而成,只要保证这些小的二维平面,就可以将数据从三维空间转化到二维空间。

2.3 如何选择

介绍了常见的特征降维方法,在不同的场景下我们应该使用什么样的特征降维方法呢,如下几

点是你需要考虑的:

  • 特征数目

当数目特征较多的时候,应该首先选择过滤式特征选择方法,快速减少数据量,可以有效防止

过拟合现象,同时加快后续模型训练的速度。当数目特征较少时,可以使用特征抽取方法或者

包裹式特征选择方法,此时需要你对方法和数据的特点都有一定的了解,才能选择合适的方法。

  • 特征有效性

如果可能存在和目标无关的特征,可以考虑使用特征选择方法,去除一些无用特征。如果特征

都和目标有一定的关系,可以考虑使用特征抽取方法对特征进行变化,在尽可能保留信息的情

况下降低特征数目。

  • 目的

如果你的目的是选择和目标最相关的特征,那么特征抽取方法明显是不合适的,因为其会将原

始特征转化为新的特征;如果你关心准确率等指标,那么请随意使用特征抽取方法。同时特征

选择方法的可解释性也要略高于特征抽取方法。

3. 数据降维能干什么

数据降维可以做什么,在选择数据降维方法之前一定要考虑数据降维能否解决你的问题,下面是数据降维能解决的几个问题。

3.1 提高准确率

数据降维算法可以去除无效特征,提高模型的准确率,同时缓解模型的过拟合现象。

3.2 减少数据量

减少特征的数目,可以提高后续的处理速度和所需要的储存空间。

3.3 可视化

某些数据降维算法可以很好的将高维数据在二维或者三维空间进行展示,直观有效的像别人展

示你的结果,非线性的特征抽取方法常常用于数据可视化,其中T-SNE是一个表现很好的可视

化算法。

4、如何选择合适的数据降维方法

当你有一份数据需要降维时,该如何选择特征降维算法。

4.1 目的

明确你的目的,是为了提高模型的准确率,还是为了选择重要的特征,抑或是对数据进行可视

化,不同的目的需要选择不同的数据降维算法。

举一些典型的例子:

  • 我想要对一份数据进行降维,从而提高模型的准确率

此时你需要考虑你选择的特征降维算法是否具有样本外降维的能力。也就是当你使用训练了降

维算法之后,是否可以得到一个转移函数或者矩阵F(X),当出现了一个或一批新的样本点,通

F(x)可以将这些样本点进行降维。大部分非线性特征抽取方法都不具备样本外降维的能力,

一种解决方法是将原始数据作为输入,降维后的数据作为输出,训练一个模型,利用这个模型

对数据进行降维。

  • 我需要选择重要的特征

也许你分析数据是为了找到和目的最有关的特征,从而进行下一步工作。此时你的选择就只能

局限在特征选择算法中,此时你需要考虑的是如何组合不同类型的特征选择方法,找到更优的

特征子集。

  • 我需要展示我的数据

此时你的重点就更应该放在可视化算法上,这里我推荐你使用T-SNE算法或者其衍生算法,它

在数据可视化领域具有十分好的表现。

4.2 数据的特点

数据的特点是你选择数据降维算法不得不考虑的一点,只有选择适合数据的数据降维方法,才

会有更好的结果。主要遵循能更有效的利用数据这个准则。

  • 数据是有标签的:尽可能的选择有监督的数据降维算法。
  • 数据是二维的:选择可以利用二维结构的数据降维算法。
  • 数据中有无效特征:使用特征选择方法。

根据经验来说,通常使用过滤式特征选择方法+PCA算法可以在大部分数据上取得还不错的效

果,同时实现起来也较为简单,如果没有什么想法,可以尝试使用这种组合。如果对数据和方

法有一定的了解,还是应该选择更合适的方法。

5、后记

数据降维是数据预处理手段的一种,当你尝试了几种数据降维方法效果却依旧不尽人意的时

候,也可以考虑使用其他数据预处理手段。

常用机器学习库sklearn手册:

https://scikit-learn.org/

11种特征抽取算法源代码:

https://github.com/heucoder/dimensionality_reduction_alo_codes

传统的线性降维方法效果不佳。_10分钟数据降维入门相关推荐

  1. 传统的线性降维方法效果不佳。_高压断路器机械故障诊断与定位的新思路:KPCA-SoftMax诊断方法...

    高压断路器是保证电力系统安全.可靠运行的重要设备,对于高压断路器机械故障定位和诊断成为近年来重要的研究课题.北京航空航天大学自动化科学与电气工程学院.江苏省电力公司电力科学研究院的研究人员王昱皓.武建 ...

  2. 传统的线性降维方法效果不佳。_机器学习西瓜书简明笔记(11)降维与度量学习...

    上篇主要介绍了几种常用的聚类算法,首先从距离度量与性能评估出发,列举了常见的距离计算公式与聚类评价指标,接着分别讨论了K-Means.LVQ.高斯混合聚类.密度聚类以及层次聚类算法.K-Means与L ...

  3. a*算法matlab代码_10分钟带你入门MATLAB

    ​ 10分钟带你快速入门MATLABhttps://www.zhihu.com/video/1234089282815188992 前一段时间我发现有些小伙伴MATLAB基础比较薄弱,今天我来让各位小 ...

  4. matlab高维数据降维方法,数据分析:常用的降维方法

    主成分分析 主成分分析(Principal Component Analysis,PCA)也称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标. 在统计学中,主成分分析是一种简化数据集的 ...

  5. 在线作图丨数据降维方法③——正交偏最小二乘方判别分析(OPLS-DA)

    ​Question1:什么是PLS-DA? 与PCA不同,PLS是"有监督"模式的偏最小二乘法分析,也就是在分析数据时,已知样本的分组关系,这样可以更好的选择区分各组的特征变量,确 ...

  6. 【深度学习】数据降维方法总结

    引言: 机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中.降维的本质是学习一个映射函数 f : x->y,其中x是原始数据点的表达,目前最多使用向量表达 ...

  7. 【数据降维】数据降维方法分类

    数据降维基本原理是将样本点从输入空间通过线性或非线性变换映射到一个低维空间,从而获得一个关于原数据集紧致的低维表示. 数据降维工具箱drtoolbox中众多算法,这里简单做个分类. 因为很多并没有仔细 ...

  8. 四大机器学习降维方法

    引言: 机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中.降维的本质是学习一个映射函数 f : x->y,其中x是原始数据点的表达,目前最多使用向量表达 ...

  9. 机器学习四大数据降维方法详解

    引言: 机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中.降维的本质是学习一个映射函数 f : x->y,其中x是原始数据点的表达,目前最多使用向量表达 ...

最新文章

  1. 微服务中的网关到底是个什么鬼?
  2. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysq
  3. RabbitMq--1
  4. Gandi下配置Github pages的自定义域名
  5. cesium加载无人机倾斜摄影三维模型
  6. java面试题2018带答案_java面试题及答案下载
  7. PHP拼接唯一索引,合并两个数组数据
  8. Win2008系统下装CTBS之前的系统组件安装向导第二篇(补充篇)
  9. Excel怎么将不规律的英文字母提取出来
  10. 会员数据化运营(一)
  11. echarts报表javascript插件简介
  12. 国际体验服服务器维护中怎么办,体验服维护中什么意思 | 手游网游页游攻略大全...
  13. windows已经阻止此应用 如何解决(非专业版系统)
  14. css设置内容超出后显示省略号
  15. 太和二中计算机考试,太和二中网上阅卷系统|翰林金榜太和二中查分系统 网页版_最火手机站...
  16. esri wkt转rings json字符串 java
  17. ERP的实施步骤是什么?
  18. 邱锡鹏《神经网络与深度学习》 机器学习概述
  19. 网盘可以良心到什么程度? 试试MEGA吧!
  20. 【报告分享】2020中国搜索引擎市场用户行为洞察-易观智库(附下载)

热门文章

  1. VS2013提示错误应输入表达式
  2. TensorFlow下安装matplotlib模块
  3. 7.Mysql数据库表引擎与字符集
  4. CompletableFuture详解~allOf
  5. Java加密与解密的艺术~数字证书~证书使用openssl
  6. Struts2源码阅读(二)_ActionContext及CleanUP Filter
  7. c语言assign用法,object-c语言的nonatomic,assign,copy,retain的区别
  8. 单元格格式_单元格格式的用法你知道吗~~
  9. 用计算机进行有理数除法时,有理数的乘除法怎么算?,什么是有理数的乘除法。越详细越好。...
  10. iOS网络请求认证挑战