前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爱(AI)与你同行系列"(1):从哪三个方面入手做好特征选择工程?

爱(AI)与你同行系列"(1):从哪三个方面入手做好特征选择工程?

作者头像
double
发布2018-09-30 11:00:39
4740
发布2018-09-30 11:00:39
举报
文章被收录于专栏:算法channel

一周精选

1 如何抉择是否要做机器学习?如何入门机器学习? 2 机器学习是万能的吗?AI落地有哪些先决条件?

1 特征工程

今天我们聊一聊特征工程方面的知识,随着大数据时代的到来,特征工程发挥着越来越重要的作用。当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练。简单说,就是发现对因变量y有明显影响作用的特征,通常称自变量x为特征,特征工程的目的是发现重要特征。一般来说,特征工程大体上可以分为三个方面,一是特征构造,二是特征生成,三是特征选择。

2 特征构造

先说特征构造。顾名思义,特征构造就是构造出来新的特征,一般都是通过对原有的特征进行四则运算产生新的特征。比如原来的特征是x1和x2,那么x1+x2就是一个新的特征,或者当x1大于某个数c的时候,就产生一个新的变量x3,并且x3=1,当x1小于c的时候,x3=0,所以这样看来呢,可以按照这种方法构造出很多特征,这个就是构造。

3 特征生成

我们再来说说特征生成,特征生成和特征构造有些相似,但是还是存在一些区别的,特征生成的话,比如主成分分析或者因子分析,都可以对原有数据进行特征生成,比如卷积神经网络的卷积层就是一个特征生成的过程,一张图片,经过卷积的不断扫描,就会把原始图片里边的好多特征逐步提取出来,这个就是特征生成。

再如通过主成分分析对原始数据进行降维,那么降维后,每个主成分其实就代表一个新的特征,同样因子分析也具有这方面的功能,通过因子分析可以把潜在变量后面的潜在因子找出来。

通过这几个例子,大家可以逐渐感觉到特征构造和特征生成会有一些区别,但是也有一定的联系。实际上,主成分分析本身就是初始变量的线性组合。这样来看,也属于特征构造的,但是一般特征构造就是简单的四则运算。

上面呢就是简单说了一下,特征生成和特征构造,其实就是想尽各种办法产生个新的特征。下面呢,我们重点要说说特征选择。

4 特征选择

特征选择是非常重要的,如果特征选择失败,那么前面的工作都是徒劳的,大家试想一下,比如我们构造出了100多个特征,但是,却不知道哪个特征最重要,那不是还是没有解决问题吗,所以特征选择就显的尤为重要。

我们首先对特征选择的方法进行一个分类:

Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。 Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。 Embedded:嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣。

4.1 Filter 使用方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。使用相关系数法,先要计算各个特征对目标值的相关系数以及相关系数的P值。还有卡方检验,互信息方法,这些在之后陆续推送。

4.2 Wrapper Methods 除了看显著性呢,还有常用的手段就是,先把所有的变量一起和y做一个回归,在逐渐去掉某些x,观察模型的deviance如何变化,这类方法其实叫 Wrapper Methods。但是呢,如果因变量y是离散的,那么我们的回归对应的就是广义线性回归模型了,那么这个时候还可以通过其他方法进行特征选择了,一般做法是单独将每个x和y做一个回归,之后再计算这个模型对应的基尼系数,通过观察基尼系数确定哪个方程对应的特征是最好的。

在搜索特征组合时,可以用启发式搜索。

但是呢,这种方法存在缺点,一个是每一个变量都需要单独和y做回归,比较麻烦。第二个是按照这种方法选出来的特征,其实效果不行,也就是在测试集上面表现并不好。

4.3 Embedded Methods 那么呢,难道统计学方面就没有好一点方法吗? lasso回归,lasso回归本来就是统计学大师搞出来的,现在已经发展出好多lasso回归的模型了。那么大家一看lasso这个单词是套索的意思。就是套着马脖子,主要是控制马的装置,那么在回归当中呢,主要是套回归系数的,意思是把回归系数控制住,不让它太大,本质上是一种正则化的手段,但是呢,不叫它太大,那数学的语言刻画方式有很多种了,但是lasso回归就选择了很巧妙的一种刻画方式,按照这种套路来,不仅可以约束系数,而且可以在模型最优的时候把不重要的系数约束为0. 既然x的系数都成了0了,那我们也不用看显著性了,直接做到了特征选择,或者变量选择。目前看,这个方法是效果是非常好的,而且非常实用与高维数据分析。说的官方一些,这类方法叫Embedded Methods. 上面就是统计学角度的变量选择。

机器学习算法做特征选择,我们最容易想到的就是决策树。这个方法好,主要是模型本身可解释性很强。它是按照x的值,对y进行了划分,划分的好坏依据是啥呢,主要是纯度,一个划分块里,纯度高,就说明划分的好,也就说明了这个划分变量选择的好。变量的重要性也就不言而喻了。实际上决策树家族,随机深林(random forest),bagging,boosting,gradient booting, 以及 xgboost 都有特征选择的功能。除了基于树的模型呢,还有其他模型,比如神经网络,支持向量机也都有特征选择的功能。

5 框架或包

scikit-learn全面支持常用的特征选择工程功能,详情参考:

http://scikit-learn.org/stable/modules/feature_extraction.html#feature-extraction

如有任何疑问,欢迎留言。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 特征工程
  • 2 特征构造
  • 3 特征生成
  • 4 特征选择
  • 5 框架或包
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档