1. 特征工程概述
数据和特征决定了机器学习的上限,而模型和算法只是去尽可能地逼近这个上限。由此可见,特征工程在机器学习中占有相当重要的地位。
特征工程:找到与问题有关的任何信息并把它们转换成特征矩阵的数值
2 特征工程在本案例中的应用
2.1 异常值处理
在数据预处理时,是否对异常值进行剔除,需要视具体情况而定,因为有些异常值中也有可能蕴含有用的信息。
异常值处理方法 | 方法描述 |
---|---|
删除含有异常值的记录 | 直接将整条记录删除 |
视为缺失值 | 将异常值视为缺失值,利用对缺失值处理的方法处理异常值 |
平均值修正 | 可用前后两个观测值的平均值修正该异常值 |
不处理 | 直接在具有异常值的数据集上进行挖掘建模 |
在处理异常值时,应该先分析异常值出现的可能原因,再判断异常值是否应该舍弃,如果是正确的数据,可以直接在具有异常值的数据集上进行挖掘建模。
2.2 数据归一化
也称为数据规范化,是数据挖掘一项基础工作。由于不同评价指标往往具有不同量纲,数值间的差别可能很大,不进行处理可能会影响到数据分析的结果。为此,将其按照比例进行缩放,使之落入一个特定的区域,以便于综合分析。
1)最值归一化
也称为离差标准化,是对原始数据进行线性变化,将数值映射到
[
0
,
1
]
[0,1]
[0,1]之间。转换公式:
x
∗
=
x
−
m
i
n
m
a
x
−
m
i
n
x^*=\frac{x-min}{max-min}
x∗=max−minx−min
其中:
m
a
x
max
max为样本数据的最大值,
m
i
n
min
min为样本的最小值。
m
a
x
−
m
i
n
max-min
max−min为极差。
缺点:若数值集中某个数值很大,则规范化后会接近于0,并且将会过度集中。而一旦遇到超过 [ m i n , m a x ] [min,max] [min,max]范围时的数据,将会出现报错,需重新确定 m i n min min和 m a x max max。
2)标准差归一化
也称为零-均值规范化,经过处理的数据均值为
0
0
0,标准差为
1
1
1。转换公式:
x
∗
=
x
−
x
ˉ
σ
x^* = \frac{x-\bar{x}}{\sigma}
x∗=σx−xˉ
其中:
x
ˉ
\bar{x}
xˉ为原始数据的均值,
σ
\sigma
σ为原始数据的标准化。是目前最为常用的标准化方法
2.3 数据分桶
也称为连续数据离散化,即将连续属性变换成分类属性。对于某些数据挖掘算法如(ID3、Apriori算法等),要求数据是分类属性形式。
连续数据的离散化就是在数据的取值范围内设定若干个离散的划分点,将取值范围划分为一些离散化的区间,最后用不同的符号或整数值代表落在每个子区间中的数据值。所以,离散化涉及两个子任务:确定分类数以及如何将连续属性值映射到这些分类值。
常用的数据分桶方法有:等宽分桶、等频分桶、基于聚类的分桶……
1)等宽分桶
将属性的值域分成具有相同宽度的区间,区间的个数可以由数据本身决定也可由用户指定,类似于制作频率分布表。
缺点:1.需要人为规划分布区间;2.对于离群点比较敏感,倾向于不均匀地把属性值分布到各个区间,这样的结果会严重损坏建立的决策模型。
2)等频分桶
将相同数量的记录放进每个区间。
优点:避免了等宽分桶的缺点;
缺点:1.需要人为规划分布区间;2.可能将相同的数据值分到不同的区间以满足每个区间中固定的数据个数
3)基于聚类的分桶
一维聚类的方法包括两个步骤,首先将连续属性的值用聚类算法(如K-Means)进行聚类,然后将聚类得到的簇进行处理,合并到一个簇的连续属性值并做同一标记。
2.4 缺失值处理
针对缺失值的处理方法有三类:删除记录、不处理、数据插补和数据分箱。
1)删除记录
如果有小部分的样例有缺失,直接删除该样例的方法显然是最有效的。
缺点:会造成数据的浪费。
2)不处理
部分模型允许在含有缺失的数据集上建立模型。
3)数据插补
插补方法 | 方法描述 |
---|---|
固定值 | 用固定的常量进行代替 |
均值/中位数/众数 | 根据数据属性类型,对其直接用对应数值填补 |
最近邻插补 | 在记录中找到与缺失样本最接近的样本的该属性值插补 |
回归方法 | 根据已有数据和其他有关的其他变量(因变量)的数据建立拟合模型估计缺失值 |
插值法 | 利用几个已知点建立合适的插值函数,未知值由对应点求函数值填补 |
4)数据分箱
将数据含有缺失值的数据放在同一组中。
2.5 特征构建
1)统计量特征
2)时间特征
3)地理信息特征
4)非线性变换
5)特征组合
2.6 特征筛选
原则:获取尽可能小的特征子集,不显著降低分类精度,不影响分类分布以及特征子集应具有稳定、适应性强的特点。
1)过滤式(Filter)
该方法中,先进行特征选择,然后去训练学习器,所以特征选择的过程与选择器无关。相当于先对特征进行过滤操作,然后用特征子集来训练学习器。
思想:对每一维特征“打分”,即给每一维的特征赋予权重,然后依次根据权重进行排序
方法:
- Chi-squared test(卡方检验)
- Information gain(信息增益)
- Correlation coefficient scores(相关系数)
优点:运行速度快,是一种非常常用的特征筛选方法;
缺点:1. 无法提供反馈,特征选择的标准、规范的制定实在特征搜索算法中完成,学习算法无法向特征搜索算法传递对特征的需求;2. 可能会在处理某个特征时由于任意原因导致该特征不重要,但是该特征与其他特征结合起来则有可能很重要。
2)封装式(Wrapper)
又称包裹式方法。该方法直接把最后要使用的分类器作为特征选择的评价函数,对于特定的分类器选择最优的特征子集。
思想:把子集的选择看作是一个搜索寻优问题,生成不同的组合,对组合进行评价,再与其他的组合进行比较。此时可以将其视为优化问题,此时可以使用一些优化算法,尤其是一些启发式的优化算法,如GA、PSO、DE、ABC等方法。
方法:递归特征消除算法。
优点:1. 对特征进行搜索是围绕学习算法展开,对特征选择的标准是按照学习算法的需求展开;2. 能够考虑学习算法所属的任意学习偏差,从而确定最佳子特征,真正关注学习问题本身;3. 由于每次针对特定子集时必须运行学习算法,故能关注到学习算法的学习偏差、归纳偏差,因此封装能够发挥巨大的作用。
缺点:运行远远慢于过滤算法,实际应用不够广泛。
3)嵌入式(Embedded)
将特征选择嵌入到模型训练中,其训练可能是相同的模型,但是特征选择完成后,还能给予特征选择完成的特征和模型训练出的超参数,再次训练优化。
思想:在模型既定的情况下学习出对提高模型准确性最好的特征,也就是在确定模型的过程中,挑选出那些对模型的训练有着重要意义的特征。
方法:用带有L1正则化的项完成特征选择(也可以结合L2惩罚项来优化)、随机森林平均不纯度减少法、平均精确度减少法。
优点:1. 对特征进行搜索时围绕学习算法展开,能够考虑学习算法所属的任意学习偏差;2. 训练次数小于封装式方法,比较节省时间。
缺点:运行速度相对于过滤式方法仍较慢。
2.7 降维
1) 主成分分析
主成分分析(Principal Component Analysis, PCA)算法是利用正交变换来对一系列可能相关的变量的观测值进行线性转换,从而投影为一系列线性不相关变量的值,这些不相关变量称为主成分。是非常基础的一种降维算法。
注意:PCA对原始数据的正则化或预处理敏感。
2)线性判别降维
线性判别降维(Linear Discriminant Analysis, LDA)算法是将数据投影到低维空间之后,使得同一类数据尽可能的紧凑,不同类的数据尽可能分散,是一种有监督的机器学习算法。
3)独立成分分析
独立成分分析(Independent Component Analysis, ICA)是从多维统计数据中寻找其内在因子或成分的一种方法。
未完待续
参考: