算法工程师,如果数据特征有10000个,你会爆炸吗

来自:机器学习算法与Python精研(微信号:AITop100),作者:鱼大大的进步主义

最近回顾学习了一下特征工程中该如何进行特征选择?

毕竟大部分算法工程师工作中大量时间都是在进行特征选择,抽取数据,再就是调参。


如何才能选出与业务有关的特征,这是一个很有意思又头疼的问题。

我们数据仓库,存有与业务相关的维表和事实表,还真不少。


满满数据,哪个才是模型想要的,如何从几十个(或者几千个)特征中选出比较合适的特征?或者说,那些特征才影响了业务?


今天在这里分享两种方式,一种是不基于业务表现(标签),另一种是基于业务表现(标签)。


第一种,方差法


不基于业务表现,只看数据分布。

这个方法非常简单粗暴,也很好理解。

我们想一个极端画面,我们取出来的某个特征数据都是一样的值,那这个数据对就可以肯定的它是一个无效特征,此时数据的方差为0。这就是基于方差的方法,实际应用中指定一个方差阈值,当方差小于阈值时,判别为无效特征。

在机器学习库sklearn中feature_selection.Variance Threshold 可以实现这个玩法。



第二种,卡方检验


基于数据对应的业务表现(标签)来看数据。

卡方检验好像熟悉又陌生,但没有机器学习的时候,它确实是分析师经常拿来玩的好东西。

这里引用一个例子《结合日常生活的例子,了解什么是卡方检验》来判别一个特征是否与某一现象有关。地址:https://www.jianshu.com/p/807b2c2bfd9b  

 

运营分析中的案例(电商中消费者的性别和购买生鲜):

我们要观察性别和在线上买不买生鲜食品有没有关系,现实生活中,女性通常去菜市场买菜的比较多,那么在线上是不是也这样。


我们得出观察到数据,并且形成表格后,我们需要计算理论的数据,在上面的例子我们发现,我们发现有66%的人不在线上买生鲜(599除以907),34%的人会在线上买。 那如果,男的有733个人,女的有174个人,根据这些比例,我们可以得出的理论值是什么呢?

根据理论和实际值,我们可以算出卡方值,自由度,并且结合我们定义的置信度,查表得到性别和线上买生鲜是显著相关的。


可能有的人还数据不是很懂,首先我们假设的性别与是否线上购买生鲜无关,根据算出来的卡方值58.4已经严重超过在自由度为1,置信度为90%的2.706, 说明,数据的分布与假设差距太大,性别会影响线上购买生鲜。


对于卡方检验来选择特征,现在机器学习库sklearn,feature_selection.SelectBest,chi2 就可以直接拿来用了。


好了,今天介绍这两个方法已经可以处理数据“特征爆炸”。

推荐↓↓↓
人工智能与大数据
上一篇:自然语言处理之LDA主题模型 下一篇:我们该怎么玩数据