您的位置:首页 > 其它

数据挖掘之特征工程(笔记)

2018-02-28 11:02 176 查看

特征工程

在介绍特征工程之前,我们先看两张图。

图一是基本的数据挖掘场景



图二是特征工程的常见方法和步骤



特征工程(Feature Engineering)是数据挖掘模型开发中最耗时、最重要的一步。这里简单介绍笔者在模型开发中所总结的一些方法。

特征也就是我们常常说的变量/自变量,一般分为三类:

连续型

无序类别(离散)型

有序类别(离散)型

特征工程(Feature Engineering)包括:特征处理(Feature Processing)特征选择(Feature Selection)

特征处理(Feature Processing)

连续型特征

不处理

除了归一化(去中心,方差归一),不用做太多特殊处理,可以直接把连续特征扔到模型里使用。根据模型类型而定。

离散化

对于一些特殊的模型(信用评分卡)开发,有时候我们需要对连续型的特征(年龄、收入)进行离散化。

离散化方法的关键是怎么确定分段中的离散点,下面介绍几种常用的离散化方法:

等距离离散(等距分组)

顾名思义,就是离散点选取等距点。

等样本点离散(等深分组)

选取的离散点保证落在每段里的样本点数量大致相同

决策树离散化(最优分组)

决策树离散化方法通常也是每次离散化一个连续特征,原理如下:

单独用此特征和目标值y训练一个决策树模型,然后把训练获得的模型内的特征分割点作为离散化的离散点。

其他离散化方法

其中,最优分组除决策树方法以外,还可以使用卡方分箱的方法,这种方法在评分卡开发中比较常见。

函数转换

有时我们的模型的假设条件是要求自变量或因变量服从某特殊分布(如正太分布),或者说自变量或因变量服从该分布时,模型的表现较好。这个时候我们就需要对特征或因变量进行非线性函数转换。这个方法操作起来很简单,但记得对新加入的特征做归一化。对于特征的转换,需要将转换之后的特征和原特征一起加入训练模型进行训练。

无序类别(离散)型

数值化

one-hot编码 一个变量k个值就转换成k个虚拟变量,优点:简单,且保证无共线性,缺点:太稀(稀疏矩阵)。

避免产生稀疏矩阵的常见方法是降维,将变量值较多的分类维度,尽可能降到最少,能降则降,不能降的,别勉强。

也不是所有的无序变量都需要做数值化处理,决策树、随机森林等树模型可能不需要处理,视情况而定。

有序类别(离散)型

数值化

label encoder 一个变量的k个值,按序转换成k个数字(1,2,3…k)。例如一个人的状态
status
有三种取值:
bad
,
normal
,
good
,显然
bad
<
normal
<
good
。这个时候
bad
,
normal
,
good
就可以分别转换成
1
2
3


该方法局限性较大:

不适用于建立预测具体数值的模型,比如线性回归,只能用于分类,

即使用于分类,也有一些模型不适合,

可能结果的精度不如one-hot编码。

生成哑变量

与one-hot编码一样,都是将一个变量的k个值生成k个哑变量,但注意不能丢了变量值之间的顺序关系。一般的表达方式如下:

status取值向量表示
bad(1, 0, 0)
normal(1, 1, 0)
good(1, 1, 1)
上面这种表达方式很巧妙地利用递进表达了值之间的顺序关系。

特征选择(Feature Selection)

特征选择的目的

特征选择一般有两个目的:

剔除对因变量影响较小或无任何相关性的自变量,使得模型预测或分类效果达到理想值。

提高模型的可解释性

按特征类型分

这里只介绍Filter方法

连续型: pearson相关系数

有序型: 转换成数值后使用spearman相关系数,或使用无序型的方法。

无序型: 单因素方差分析(回归),卡方检验、IV值(二分类)

上述方法为经验所得,并不全面,之后若遇到其他方法,会将其补充。也欢迎读者留言补充。

模型评估(Model Evaluation)

模型评估一般有两个目的:

1. 检验特征工程的工作,查看所选择的特征是否有利于提升模型的性能。

2. 检查参数调整的工作,通过调整模型参数,找到最佳参数使得模型的分类、预测性能最佳。

回归预测问题

对于连续型目标变量的回归预测问题,评估模型的方法一般有:

R^2值 R^2越大,模型的预测效果越好。

(后续补充)

分类预测问题

对于离散型目标变量的分类预测问题,评估模型的方法一般有:

交叉检验 观察模型的预测准确率,越大越好。但注意使用决策树或随机森林时的过拟合问题。

AUC、ROC 观察模型的ROC曲线及AUC值,越大越好

(后续补充)

结束语

特征工程是一件极其繁琐同时也极其重要的一件事情。特征工程做的好,不仅后期的模型调参容易得多甚至不需要调参,而且模型的稳定性,可解释性也要更好。还记得文章开始的第一张图吗?如果特征工程做得不好,模型评估怎么调参都调不到理想的效果,那么你可能需要在虚线框内做循环的动作,知道你的模型达到理想的效果为止。可见特征工程非常的耗时、耗力,网上说特征工程所花的时间是模型开发所用时间的80%。在我看来,至少是占了95%。

所以,特征工程需要以提升模型的性能和可解释性为目标,有耐心地、逻辑清晰地去做。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: