More data beats clever algorithms, but better data beats more data.
1. 什么是特征工程
特征工程算是一个如何展示和表现数据的问题,在实际工作中需要把数据以一种良好的方式展现出来,使得能够使用各种各样的机器学习模型来得到更好的效果。如何从原始数据中去除不佳的数据,展示合适的数据就成为了特征工程的关键问题。
2. 特征有用性的预估
一个特征是否重要主要在于该特征与要预测的东西是否是高度相关的,如果是高度相关,那么该特征就是十分重要的。
3. 特征的构造过程
确定问题-数据整合-数据预处理-特征的构造
数据预处理
通过特征提取可以得到未经处理的特征,此时特征可能有以下问题:
- 不属于同一量纲:即特征的规格不一样,不能够放在一起比较。
- 信息冗余:对于某些定量特征,其包含的有效信息为区间划分,可用离散化处理。
- 定性特征不能直接使用:某些ML算法和model只能接收定量特征的输入,那么需要将定性特征转换为定量特征。使用one-hot编码。
- 存在缺失值:缺失值需要补充
- 信息利用率低:不同的算法和模型对数据中信息的利用是不同的,在线性模型中,使用定性特征哑编码可以达到非线性的效果。类似地,对定量变量多项式化等转换都可达到非线性的效果。
(1)标准化:将数据按比例缩放,使之落入一个小的特定区间,去除单位的限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。
(2)归一化:归一化是因为特征会在不同的尺度下有不同的表现形式,归一化会使得各个特征能够以恰当的方式表现。
(3)离散化:离散化是指把特征进行必要的离散处理。把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。
特征选择
当数据预处理完成后,需要选择有意义的特征输入到机器学习算法和模型上进行训练。通常从两个方面考虑来选择特征:
- 特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本没差异,这个特征对于样本的区分并没有什么用。
- 特征与目标的相关性:这点比较明显,与目标相关性高的特征,应当优先选择。除方差外,本文介绍的其他方法均从相关性考虑。
根据特征选择的形式又可将特征选择方法分为3种:
- Filter:过滤法,按照发散性或相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。
- Wrapper:包装法,根据目标函数,每次选择若干特征,或者排除若干特征。
- Embedded:集成法,先使用某些Machine Learning的算法和Model进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似与Filter方法,但是是通过训练来确定特征的优劣。
Filter
- 方差选择法
- 相关系数法
- 卡方检验
- 互信息法
Wrapper
- 递归特征消除法
Embedded
- 基于惩罚项的特征选择法
- 基于树模型的特征选择法
降维
- 主成分分析(PCA)
- 线性判别分析法(LDA)
通过以下回答整理:
https://www.zhihu.com/question/29316149/answer/110159647
https://www.zhihu.com/question/29316149/answer/82949813