特征工程(二)特征选择及python实现

  • 什么是特征选择

特征工程(Feature Selection),也叫做特征子集选择(Feature Subset Selection, FSS), 或者叫做属性选择(Attribute Selection)。是指从全部的数据特征中选取合适的特征,从而确保模型变得更好。

  • 为什么要做特征选择

特征数量越多模型就越好吗?
不是,特征越多,意味这模型的计算维度越大,模型也会更复杂,从而训练模型的时间就会越长。这叫做“维度灾难”。


特征选择的意义便是,剔除掉一些不相关的特征,剔除掉一些重复的特征,在保证特征有效性的同时减少特征数量,从而提高模型精确度,减少模型复杂度,减少模型训练时间。另外,对模型做筛选会帮助模型变得更有可解释性和逻辑性。这一点上篇也有讲到。

  • 特征选择的基本原则

特征与我们的目标是否具备发散性、相关性,我们要对相关性强的特征进行优先选择。

  • 特征选择常用的四种方法

  1. 方差选择法
    先计算各个特征的方差,根据阈值,选择方差大于阈值的特征。这个我想了很久,方差大的发散性就好,就适合做特征变量,方差低于阈值的,发散性就差,就不适合做特征变量。大白话就是计算每个特征的方差。
from sklearn.feature_selection import VarianceThreshold
varianceThreshold = VarianceThreshold(threshold =1)
varianceThreshold.fit_transform([['累计票房','豆瓣评分']])
varianceThreshold.get_support()

输出哪些变量可以作为可用的特征,哪些不可以。
当阈值为1时,我们发现两个特征都可以作为特征的。



当阈值为3时,我们发现两个特征只有一个可以作为有效特征。


不过这个方法可能在互联网行业适用,在有些精密领域,也许方差的大小很难确认,还是需要行业经验辅助。

  1. 相关系数法
    计算各个特征值和目标值的相关系数,选取相关性强的特征。
from sklearn.feature_selection import SelectKBest
from skleasrn.feature_selection import f_regression
selectKBest = SelectKBest(f_regression, k=2)
feature=data[['月份','季度','广告费用','客流量']]
bestFeature = selectKBest.fit_transform(feature, data[['销售额']])
selectKBest.get_support()
  1. 递归特征消除法
    使用一个基模型来进行多轮训练,训练多轮训练后,保留指定的特征数。
    递归特征前提时选择一种模型,例如SVM或者逻辑回归,然后选择一定数目的特征,进行模型评估,接下来对审改的特征重复上述动作,知道所有特征都遍历。最后,选择出模型效果最好的特征。
    递归特征消除法属于一种贪心算法。
    优点在于想法很好,缺点是当数据量很大时,这种贪心算法会导致计算很慢。
from sklearn.feature_selection import RFE
from sklearn.linear_model import LinearRegression
feature=data[['月份','季度','广告费用','客流量']]
rfe = RFE(estimator = LinearRegression(), n_features_to_select=2)
sFeature=rfe.fit_transform(feature, data[['销售额']])
rfe.get_support()
  1. 模型选择法
    把我们建好的模型对象传入选择器,然后会根据建好的模型,自动帮我们选择最好的特征值。该方法自动选择最佳的特征,特征数不需要我们定。
from sklearn.feature_selection import SelectFromModel
from sklearn.linear_model import LinearRegression
IrModel = LinearRegression()
selectFromModel = SelectFromModel(IrModel)
selectFromModel.fit_transform(feature, data[['销售额']])
feature.columns[selectFromModel.get_support()]
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容

  • 0 关于本文 ​ 主要内容和结构框架由@jasonfreak--使用sklearn做单机特征工程提供,其中夹杂...
    mrlevo520阅读 21,376评论 4 61
  • #本文参加“青春”大赛,本人保证本文为本人原创,如有问题则与主办方无关,自愿放弃评优评奖资格。# 耳,没有喧闹...
    别_78ca阅读 292评论 0 3
  • 对于假期来说,似乎没有嫌弃过太长的。两个月的暑假过的也是呵呵的。以前通常会因为假期余额不足的时候开始焦虑,开始反省...
    小哨子的基地阅读 399评论 0 0
  • 回到家,小外甥的一句话,整的这俩小哥又是脸红脖子粗,你俩的脾气真得改改了,都是一年级的学生了,还这么冲动,...
    风中的玫瑰花阅读 223评论 0 3