特征的选择对于整个模型预测的准确性有至关重要的作用,好的特征集对于一个机器学习模型的预测效果的边际贡献远远大于好的模型的贡献:
- 不同的机器学习模型(SVM或RandomForest等)对于有效的特征集的训练效果,差别不会特别大;
- 但是,如果特征集很烂,无论什么模型,都很难有较好的训练效果。
所以,还是那句话:
Garbage in, garbage out !
1. 什么是特征(Features)?
特征是任何机器学习模型的进行训练的”原材料”,无论是监督式模型(Supervised)还是无监督式(Unsupervised)模型,都需要特征集作为输入变量(Input variables)。当然监督式模型相比无监督式模型还需要输出变量(Output),我们称之为目标(target)。无论是特征还是目标,它们的类型无非以下几种:
- 二元制(Binary):如{涨,跌}, {对, 错}, {男, 女};
- 有限的离散集 (finite discrete): 如一周有七天(星期一、星期二...),或者一个城市的行政区(黄埔、静安...)。这些数据可以是有序的,也可以是无序的。
- 连续性数值:处于负无穷到正无穷所有数值,如股价、利率等
2. 特征怎么来?
特征是机器学习模型的“原材料”,那特征的“原材料”是什么?其实就是原始数据,例如股票的行情数据、财务数据等;将这些原始数据经过一系列的转换加工得到特征,例如技术指标(MACD、DMA等)。在这个转换的过程中涉及到一系列的数据处理的流程,下面我们进行详细说明。
数据清洗及处理
做研究最怕什么?数据是错的,那一切无从谈起,在尽可能的确保数据质量的前提下,我们还是要对数据进行规范性的清洗,无论是原始数据、还是经转换后的特征集都要经过以下步骤进行处理:
- 缺失值处理:1. 直接删除(常用); 2. 或者进行插值处理(Interpolate);
- 异常值处理:1. 直接删除; 2. 极值处理到一个正常区间(推荐);
- 标准化处理:1. 正态标准化(常用);2. 其他标准化(见文末);
- 相关性指标处理:有时候特征集当中有些指标的相关性特别高,对于一些模型,这种指标间的高度相关可能会降低模型的预测效果,所以在训练模型之前,要找出相关性较高的几对指标,并保留其中一个。
-
线性相关指标处理:除了上文提高一对高度相关的指标的问题,同时也可能存在某几个指标与另一个指标存在线性回归的关系,这也会影响模型的预测效果。
- 特征的转换(可选):如PCA等方法
3. 怎么选择特征(或指标)?
训练任何一个机器学习的模型时,输入的特征并不是越多越好,如果一股脑放入几十上百个特征去训练,往往会适得其反。一个模型的好坏往往取决于几个(三到五个)核心的指标。所以特征的选择就极为重要。特征选择主要由以下两类方法:
过滤法:该方法的特点是不需要机器学习模型的参与,直接测量特征与预测目标(Target)的相关程度,只要通过某些选取标准的指标才会被应用到模型的训练中。
封装法:该方法与过滤法最大的区别是在选特征的时候运用的相关的机器学习模型,直接通过筛选预测效果好的指标作为特征集。
两种方法各有优缺点,过滤法会删除相关度较低的特征,缺点是某些特征可能本身与目标相关度较低,但与其他特征结合起来可能会提高预测的效果,所以存在误删的情况。封装法直接将特征输入模型,通过各种迭代选出最适合某些模型的一组特征;缺点时运算效率太慢,而且存在过度拟合的风险。最适合的解决办法是,通过过滤法筛选出一批有潜力的特征,再通过封装法精选特征,从而构建一个预测效果良好的机器学习模型。
在这篇文章中,我们主要讨论过滤法的实际运用。通过各种不同的判断特征重要性的方法与标准选则相应的特征,无外乎以下几种方法:
- 选择重要性最高的前N个特征;
- 选择重要性最高的前n%的特征;
- 选择重要性超过一定阈值s的特征。
无论是N、n还是s,都可以通过优化的方法找到最优值运用到最后的模型中去。
3.1 重要性
现在主要的问题就是怎么评价一个特征对于所需预测的目标的重要性,我们称之为Variable Importance(VI)。结合各方面的文献,VI的评价方法主要有以下指标:
- 信息熵(Mutual Information)
- Cramer's V
(未完待续)
总结
所有算法的学习都要了解该算法所针对的问题,以及这个问题是不是你当前遇到的。不推荐穷举式的尝试去找出一个最优的组合,这样的做法
附录
其他标准化方法