基于考察变量与结果关系、提高结果匹配度或者是减少数据量的需要,我们有时候要对数据报表中的各个特征或自变量进行筛选。
特征筛选是机器学习技术的核心概念之一,筛选重要特征、摒弃不相关或相关性低的特征在很多情形下能够显著提高模型的预测效率和水平。
总体来说,对数据进行特征筛选有以下几点好处:
减少过拟合
更少的冗余信息有利于避免模型在噪音干扰信息上做过多训练提高预测水平
更少的误导性信息有利于模型预测水平的提高节省时间、降低计算资源消耗
精简过的数据有利于降低算法模型复杂度
需要进行特征筛选的情形有很多,比如考察手机尺寸、处理器、RAM、屏幕分辨率、摄像头清晰度、材质、品牌等特征中哪些与售价相关性最高时;比如研究化学谱图中哪些峰信号去掉有利于提高拟合结果R方值时;比如某天人类懒癌爆发觉得26个英文字母嫌多,想要从数学角度研究去掉哪个字母对当今世界产生的影响最小时...
数据种类和应用场合千变万化,相应的特征筛选方法不一而足,这里列出常用的5种方法作为参考。
- 手动初筛
对于明显冗余、样本差异小或与输出结果不相关的特征,直接手动筛除,将有助于提高模型的预测效率和水平。比如前面考察手机价格影响因素的案例中,有两种尺寸信息,一种以英寸计,一种以厘米计,虽然两者列示的值不同,但实际代表的内容并没有差别,这就造成了数据冗余,给预测模型带来不必要的干扰。还有如果百分之九十九的样本尺寸这一项值都是6英寸,那么以这些样本考察尺寸与价格的关系是不大合适的,要么增加其它尺寸的样本,要么让预测模型直接不考虑尺寸这一特征。另外,如果影响因素中有类似“手机支不支持用来打乒乓球”这样明显与售价不相关的特征,可以直接手动删掉。
- 暴力计算
本方法适用于数据量和特征数目不大的情形,拥有大量闲置计算资源的可以直接无视这一限制。该方法的流程是依次拿掉某个特征的数据,然后用剩下的数据训练模型,预测效果最好的情形所对应的那个被排除的特征,即被标记为与目标值y相关性最低,然后用剩下的数据重复上面的步骤,依次标记相关性第二低、第三低...本方法的优点是原理简单,而且不受预测模型具体类型限制,可以把能找到的算法用上面的逻辑都过一遍以寻找最优解。缺点嘛,自然是费时费电。
- 卡方检验
卡方检验(,k:自由度;n:样本数;:理论分布概率;:实际分布在特定范围内的样本数)是单变量检验方法中常用的检验类型。通过计算样本各个特征下数据的卡方值,卡方检验可以得到各个特征与目标的相关性水平。卡方值越大,相应特征越不可能独立于结果y,亦即对结果的贡献率越高。卡方检验的优点是不需要复杂的算法和大量的训练,计算速度快;缺点是只适用于离散分布数据的分类任务,不能用在连续数据或者是预测价格这样的回归任务上。
- 相关系数
通过对矩阵数据集进行各种分布(Pearson,Kendall,Spearman等)的相关系数计算,可以直接得到包括预测结果y在内的两两特征之间的关联度(pairwise correlation)。对结果做热点图可以很直观地看到特征之间地关联性,比如下图中,看最上面一行或最后一列,就可以了解结果y受哪些特征影响更大,在后续考察分析的时候可以更侧重于这些特征:
另外,降维算法主成分分析在降维的过程中经历了协方差的计算,积累了各个特征的载荷(loadings)信息,所以也能为特征筛选提供依据。
- 基于决策树的方法
基于决策树的算法模型会在机器学习过程中对各个特征打分,得到具体的权重信息,可以用于特征筛选。比如有大量对应于不同的组分含量y的光谱数据X,可以用基于决策树的随机森林或同类其它算法从数据集中挖掘哪些峰信号对含量y贡献率高,哪些信号是无关的噪音。通常来讲,光谱数据中特征信号只是其中很小的一部分,所以最终各个特征的累积权重形如下图:
按照图的这种情形,可以实现百分之八十以上的无关噪音数据的去除,提高模型预测水平。