机器学习中的特征工程

1 特征工程是什么

Feature engineering is the process of using domain knowledge of the data to create features that make machine learning algorithms work.
特征工程是利用数据领域的相关知识来创建能够使机器学习算法达到最佳性能的特征的过程。
特征工程就是一个把原始数据转变成特征的过程,这些特征可以很好的描述这些数据,并且利用它们建立的模型在未知数据上的表现性能可以达到最优(或者接近最佳性能)。从数学的角度来看,特征工程就是人工地去设计输入变量X。

2 特征工程的重要性

数据特征会直接影响模型的预测性能。
(1)特征越好,灵活性越强。
好特征的灵活性在于它允许你选择不复杂的模型,同时运行速度也更快,也更容易理解和维护。
(2)特征越好,构建的模型越简单。
(3)特征越好,模型的性能越出色。

3 特征工程子问题

在特征工程下面,主要有三个子问题:特征选择、特征提取、特征构造。

3.1 特征选择

首先,从特征开始说起,假设现在有一个标准的Excel表格数据,它的每一行表示的是一个观测样本数据,表格数据中的每一列就是一个特征。在这些特征中,可以通过特征项和类别项之间的相关性(特征重要性)来衡量。
在实际应用中,常用的方法就是使用一些评价指标单独地计算出单个特征根类别变量之间的关系。如Pearson相关系数,Gini-index(基尼指数),IG(信息增益)等。
特征选择的原因:这些特征对于目标类别的作用并不是相等的,一些无关的数据需要删掉。做特征选择的方法有多种,例如:

  1. filter(刷选器),它主要侧重于单个特征跟目标变量的相关性。
    优点是计算时间上较高效,对于过拟合问题也具有较高的鲁棒性。
    缺点是倾向于选择冗余的特征,因为他们不考虑特征之间的相关性,有可能某一个特征的分类能力很差,但是它和某些其他特征组合起来会得到不错的效果。
  2. wrapper(封装器)
    实质是一个分类器,封装器用选取的特征子集对样本集进行分类,分类的精度作为衡量特征子集好坏的标准,经过比较选出最好的特征子集。常用的有逐步回归(Stepwise regression)、向前选择(Forward selection)和向后选择(Backward selection)。
    优点是考虑了特征与特征之间的关联性,
    缺点是:当观测数据较少时容易过拟合,而当特征数量较多时,计算时间又会增长。

特征选择——特征工程的子问题之一

目的:从特征集合汇总挑选一组最具统计意义的特征子集,从而达到降温的效果。
特征选择过程一般包括产生过程,评价函数,停止准则,验证过程,这4个部分。如下图所示:
在这里插入图片描述

(1)产生过程( Generation Procedure ):产生过程是搜索特征子集的过程,负责为评价函数提供特征子集。

(2)评价函数( Evaluation Function ):评价函数是评价一个特征子集好坏程度的一个准则。

(3)停止准则( Stopping Criterion ):停止准则是与评价函数相关的,一般是一个阈值,当评价函数值达到这个阈值后就可停止搜索。

(4)验证过程( Validation Procedure ):在验证数据集上验证选出来的特征子集的有效性。

3.2 特征提取

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

PCA (Principal component analysis,主成分分析)

ICA (Independent component analysis,独立成分分析)

LDA (Linear Discriminant Analysis,线性判别分析)

对于图像识别中,还有SIFT方法。

3.3 特征构建

定义:特征构建指的是从原始数据中人工地构建新的特征。需要人工的创建它们。这需要我们花大量的时间去研究真实的数据样本,思考问题的潜在形式和数据结构,同时能够更好地应用到预测模型中。
特征构建需要很强的洞察力和分析能力,要求我们能够从原始数据中找出一些具有物理意义的特征。假设原始数据是表格数据,一般你可以使用混合属性或者组合属性来创建新的特征,或是分解或切分原有的特征来创建新的特征。

4 特诊工程处理过程

具体的机器学习过程是这样的一个过程:

1.(Task before here)

2.选择数据(Select Data): 整合数据,将数据规范化成一个数据集,收集起来.

3.数据预处理(Preprocess Data): 数据格式化,数据清理,采样等。

4.数据转换(Transform Data):?这个阶段做特征工程。

5.数据建模(Model Data): 建立模型,评估模型并逐步优化。

(Tasks after here…)

特征工程和数据转换其实是等价的。事实上,特征工程是一个迭代过程,我们需要不断的设计特征、选择特征、建立模型、评估模型,然后才能得到最终的model。

下面是特征工程的一个迭代过程:

1.头脑风暴式特征:意思就是进你可能的从原始数据中提取特征,暂时不考虑其重要性,对应于特征构建;

2.设计特征:根据你的问题,你可以使用自动地特征提取,或者是手工构造特征,或者两者混合使用;

3.选择特征:使用不同的特征重要性评分和特征选择方法进行特征选择;

4.评估模型:使用你选择的特征进行建模,同时使用未知的数据来评估你的模型精度。

通常而言,特征选择是指选择获得相应模型和算法最好性能的特征集,工程上常用的方法有以下:

  1. 计算每一个特征与响应变量的相关性:工程上常用的手段有计算皮尔逊系数和互信息系数,皮尔逊系数只能衡量线性相关性而互信息系数能够很好地度量各种相关性,但是计算相对复杂一些,好在很多toolkit里边都包含了这个工具(如sklearn的MINE),得到相关性之后就可以排序选择特征了;

  2. 构建单个特征的模型,通过模型的准确性为特征排序,借此来选择特征,另外,记得JMLR’03上有一篇论文介绍了一种基于决策树的特征选择方法,本质上是等价的。当选择到了目标特征之后,再用来训练最终的模型;

  3. 通过L1正则项来选择特征:L1正则方法具有稀疏解的特性,因此天然具备特征选择的特性,但是要注意,L1没有选到的特征不代表不重要,原因是两个具有高相关性的特征可能只保留了一个,如果要确定哪个特征重要应再通过L2正则方法交叉检验;

  4. 训练能够对特征打分的预选模型:RandomForest和Logistic Regression等都能对模型的特征打分,通过打分获得相关性后再训练最终模型;

  5. 通过特征组合后再来选择特征:如对用户id和用户特征组合来获得较大的特征集再来选择特征,这种做法在推荐系统和广告系统中比较常见,这也是所谓亿级甚至十亿级特征的主要来源,原因是用户数据比较稀疏,组合特征能够同时兼顾全局模型和个性化模型。

  6. 通过深度学习来进行特征选择:目前这种手段正在随着深度学习的流行而成为一种手段,尤其是在计算机视觉领域,原因是深度学习具有自动学习特征的能力,这也是深度学习又叫unsupervised feature learning的原因。从深度学习模型中选择某一神经层的特征后就可以用来进行最终目标模型的训练了。
    一般情况下,机器学习中所使用特征的选择有两种方式,一是在原有特征基础上创造新特征,比如决策树中信息增益、基尼系数,或者LDA(latent dirichlet allocation)模型中的各个主题,二是从原有特征中筛选出无关或者冗余特征,将其去除后保留一个特征子集。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值