美文网首页数据分析
机器学习之特征工程

机器学习之特征工程

作者: 尼小摩 | 来源:发表于2017-11-17 14:53 被阅读333次

目录大纲

  • 特征工程是什么?
  • 特征工程的重要性
  • 特征工程子问题:
    1.特征处理
    2.Feature Selection(特征选择)
    3.Feature Extraction(特征提取)
    4.Feature construction(特征构造)

特征工程的思维导图:

如果浏览,建议下载到本地查看

特征工程是什么?

想要预测模型性能达到最佳时,你要做的不仅是要选取最好的算法,还要尽可能的从原始数据中获取更多的信息。应该如何为预测模型得到更好的数据呢?
简而言之,特征工程就是一个把原始数据转变成特征的过程,这些特征可以很好的描述这些数据,并且利用它们建立的模型在未知数据上的表现性能可以达到最优(或者接近最佳性能)。

特征工程的重要性

坊间常说:“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已”。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功的关键。

首先,我们大家都知道,数据特征会直接影响我们模型的预测性能。你可以这么说:“选择的特征越好,最终得到的性能也就越好”。这句话说得没错,但也会给我们造成误解。事实上,你得到的实验结果取决于你选择的模型、获取的数据以及使用的特征,甚至你问题的形式和你用来评估精度的客观方法也扮演了一部分。此外,你的实验结果还受到许多相互依赖的属性的影响,你需要的是能够很好地描述你数据内部结构的好特征。

(1)特征越好,灵活性越强:
只要特征选得好,即使是一般的模型(或算法)也能获得很好的性能,因为大多数模型(或算法)在好的数据特征下表现的性能都还不错。好特征的灵活性在于它允许你选择不复杂的模型,同时运行速度也更快,也更容易理解和维护。

(2)特征越好,构建的模型越简单:
有了好的特征,即便你的参数不是最优的,你的模型性能也能仍然会表现的很nice,所以你就不需要花太多的时间去寻找最有参数,这大大的降低了模型的复杂度,使模型趋于简单。

(3)特征越好,模型的性能越出色
显然,这一点是毫无争议的,我们进行特征工程的最终目的就是提升模型的性能。

特征工程子问题

特征工程主要包括:

  • 特征处理
  • Feature Selection(特征选择)
  • Feature Extraction(特征提取)
  • Feature construction(特征构造)

1. 特征处理

特征处理分类

特征处理分为:数值型,类别型,时间型,文本型,统计型和组合特征

1)数值型
  • 幅度调整,归一化:幅度常控制在[0,1]
  • 离散化:连续值分段变成类别型,1个值映射为一个向量,离散化后引入非线性,如年龄为变量,可让老人和小孩同时获得高权重
2)类别型
  • one-hot编码/哑变量:如小孩,青年,老人->[1,0,0],[0,1,0],[0,0,1]

  • hash分桶(类别很多,较稀疏):

    • 例1:使用聚类将userId根据某些特征分为几类
    • 例2:如下图是将一个词典分成三个桶,每个桶可能代表某个领域内的词,两句话如果在同一个同中出现的单词数相同,可能说明他们在某一领域内指代性相同,为每句话构造了一个新向量


      hash分桶
  • Histogram映射:把某个特征与target做后验关联度的统计,以统计量表示该特征

    • 例子:如特征-男/女,target-爱好,统计P(爱好|性别),得到 男:[1/3,2/3,0],可表示男生1/3喜欢散步,2/3喜欢足球,没有喜欢看电视剧;用爱好比例对性别进行编码,得到的统计特征之间map到特征向量中,可以与原性别特征[1,0]同时存在

3)时间型

  • 时间型特征可分为数值型和类别型,时间型数据可以表示不同时间人们心态和行为存在差别,可用于区分人群,商品推荐等
  • 数值型:网页停留时间,上次浏览离现在间隔时间
  • 类别型:月、周、日、时等

4)文本型

  • 词袋(去停用词)、word2vec

  • TF-IDF权重

    :表示一个词对一个样本或样本集的重要程度

    • TF(w)=(词w在当前文中出现的次数)/(w在全部文档中出现的次数)
    • IDF(w)=ln(总文档数/含w的文档数)
    • TF-IDF权重: TF*IDF

5) 统计型

  • 统计特征与业务的契合度高
  • 加减平均:商品价格超平均价格,连续登陆天数超平均,商品出售超平均编码
  • 分位线:商品价格分位线体现用户的购买能量
  • 次序型、比例型

6)组合型

  • 拼接型:如userId&&category拼接可以为某个用户创建个性化特征
  • 模型特征组合:如GBDT产出的特征组合路径,路径命中为1,否则为0
  • 组合特征和原始特征一起放进LR中训练

2. 特征选择 Feature Selection

为什么做特征选择:

在机器学习的实际应用中,特征数量往往较多,其中可能存在不相关的特征,特征之间也可能存在相互依赖,容易导致如下的后果:

  • 特征个数越多,分析特征、训练模型所需的时间就越长。
  • 特征个数越多,容易引起“维度灾难”,模型也会越复杂,其推广能力会下降。

特征选择能剔除不相关(irrelevant)或亢余(redundant )的特征,从而达到减少特征个数,提高模型精确度,减少运行时间的目的。另一方面,选取出真正相关的特征简化了模型,使研究人员易于理解数据产生的过程。
数据预处理完成之后,我们需要选择有意义的特征,输入机器学习的算法和模型进行训练,通常来说,从两个方面考虑来选择特征:

  • 是否发散
  • 是否相关

特征选择的三种方法:

1. Filter方法

其主要思想是:对每一维的特征“打分”,即给每一维的特征赋予权重,这样的权重就代表着该维特征的重要性,然后依据权重排序。它主要侧重于单个特征跟目标变量的相关性。
优点:计算时间上较高效,对于过拟合问题也具有较高的鲁棒性。
缺点:倾向于选择冗余的特征,因为他们不考虑特征之间的相关性,有可能某一个特征的分类能力很差,但是它和某些其它特征组合起来会得到不错的效果。

主要的方法有:

  • Variance selection (方差选择法)

使用方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。

  • Chi-squared test (卡方检验)

经典的卡方检验是检验定性自变量对定性因变量的相关性。假设自变量有N种取值,因变量有M种取值,考虑自变量等于i且因变量等于j的样本频数的观察值与期望的差距,构建统计量:

卡方检验
 不难发现,这个统计量的含义简而言之就是自变量对因变量的相关性
  • information gain (信息增益)

经典的互信息(信息增益)也是评价定性自变量对定性因变量的相关性的,互信息计算公式如下:


信息增益公式

2. Wrapper方法

其主要思想是:将子集的选择看作是一个搜索寻优问题,生成不同的组合,对组合进行评价,再与其他的组合进行比较。这样就将子集的选择看作是一个优化问题,这里有很多的优化算法可以解决,尤其是一些启发式的优化算法,如GA,PSO,DE,ABC等;详见“优化算法——人工蜂群算法(ABC)”,“ 优化算法——粒子群算法(PSO) ”。

wrapper方法实质上是一个分类器,封装器用选取的特征子集对样本集进行分类,分类的精度作为衡量特征子集好坏的标准,经过比较选出最好的特征子集。常用的有逐步回归(Stepwise regression)、向前选择(Forward selection)和向后选择(Backward selection)。
优点:考虑了特征与特征之间的关联性
缺点:当观测数据较少时容易过拟合,而当特征数量较多时,计算时间又会增长。

主要方法有:

recursive feature elimination algorithm(递归特征消除算法)

递归消除特征法使用一个基模型来进行多轮训练,每轮训练后,消除若干权值系数的特征,再基于新的特征集进行下一轮训练。

3. Embedded方法

其主要思想是:在模型既定的情况下学习出对提高模型准确性最好的属性。这句话并不是很好理解,其实是讲,在确定模型的过程中,挑选出那些对模型的训练有重要意义的属性。

主要方法:

  • 基于惩罚项的特征选择法
  • 基于树模型的特征选择法
  • 降维

当特征选择完成后,可以直接训练模型了,但是可能由于特征矩阵过大,导致计算量大,训练时间长的问题,因此降低特征矩阵维度也是必不可少的。常见的降维方法除了以上提到的基于L1惩罚项的模型以外,另外还有主成分分析法(PCA)和线性判别分析(LDA),线性判别分析本身也是一个分类模型。PCA和LDA有很多的相似点,其本质是要将原始的样本映射到维度更低的样本空间中,但是PCA和LDA的映射目标不一样:PCA是为了让映射后的样本具有最大的发散性;而LDA是为了让映射后的样本有最好的分类性能。所以说PCA是一种无监督的降维方法,而LDA是一种有监督的降维方法。

3. 特征提取 Feature Extraction

原则上来讲,特征提取应该在特征选择之前。特征提取的对象是原始数据(raw data),它的目的是自动地构建新的特征,将原始特征转换为一组具有明显物理意义(Gabor、几何特征[角点、不变量]、纹理[LBP HOG])或者统计意义或核的特征。比如通过变换特征取值来减少原始数据中某个特征的取值个数等。对于表格数据,你可以在你设计的特征矩阵上使用主要成分分析(Principal Component Analysis,PCA)来进行特征提取从而创建新的特征。对于图像数据,可能还包括了线或边缘检测。

常用的方法有:

  • PCA (Principal component analysis,主成分分析)
  • ICA (Independent component analysis,独立成分分析)
  • LDA (Linear Discriminant Analysis,线性判别分析)
  • 对于图像识别中,还有SIFT方法。

4. 特征构造 Feature construction

特征构建指的是从原始数据中人工的构建新的特征。我们需要人工的创建它们。这需要我们花大量的时间去研究真实的数据样本,思考问题的潜在形式和数据结构,同时能够更好地应用到预测模型中。

特征构建需要很强的洞察力和分析能力,要求我们能够从原始数据中找出一些具有物理意义的特征。假设原始数据是表格数据,一般你可以使用混合属性或者组合属性来创建新的特征,或是分解或切分原有的特征来创建新的特征。

总结

参考资料

[1]From 参考美团的"机器学习中的数据清洗与特征处理综述"
[2]From特征工程与模型调优

相关文章

  • 机器学习之特征工程 - 整理

    以下内容整理自机器学习之特征工程 特征工程: 定义:利用数据领域的相关知识来创建能够使机器学习算法达到最佳性能的特...

  • 机器学习之特征工程

    目录大纲 特征工程是什么? 特征工程的重要性 特征工程子问题:1.特征处理2.Feature Selection(...

  • 机器学习之特征工程

    1.Scikit-learn与特征工程 1.1 数据来源与类型 大部分的数据都来数据库或者爬虫以及平时的记录等。 ...

  • 机器学习之特征工程

    一、哑变量 关于哑变量,这篇博文写的很好,相关概念可以参阅:《机器学习总结之——Dummy Coding(哑变量)...

  • 机器学习之特征工程

    一、缺失值处理 删除属性或者删除样本:如果大部分样本该属性都缺失买这个属性能提供的信息有限,可以选择放弃使用该维属...

  • 机器学习之特征工程-特征选择

    一个基本的数据挖掘场景如下: 从上面的数据挖掘场景可知,当数据预处理完成后,我们需要选择有意义的特征,输入机器学习...

  • 特征工程

    机器学习之特征工程 特征工程的作用 从数据中抽取出对预测结果有用的信息 从数据中构建出对结果有用的信息 更好的特征...

  • 机器学习之特征工程篇

    前言 在传统的机器学习当中,特征工程可以说是最为重要的部分之一。如果大家看看Kaggle比赛中获得前几名的团队的代...

  • 机器学习—特征工程

    详细pdf:链接:https://pan.baidu.com/s/1pUWhb_y7kK7_fU0Gjqfe0Q ...

  • 机器学习-特征工程

    outline 概念 预处理 特征选择 降维 概念 数据集由数据对象组成,一个数据对象代表一个实体属性(attri...

网友评论

    本文标题:机器学习之特征工程

    本文链接:https://www.haomeiwen.com/subject/evslvxtx.html