特征选择是选择相关特征的子集用于机器学习模型构建的过程,数据越多,结果就越好,这并不总是事实。包含不相关的特征(对预测没有帮助的特征)和冗余的特征(与他人无关的特征)只会使学习过程不堪重负,容易导致过度拟合。
特征选择的好处:
不同的特征子集为不同的算法提供了最佳性能。所以它和机器学习模型训练不是一个单独的过程。因此,如果我们要为线性模型选择特征,最好使用针对这些模型的选择程序,如回归系数重要性或Lasso。如果我们要为树选择特性,最好使用树派生的重要性。
- 简化模型使得容易解释
- 减少训练时间,减少计算消耗
- 减少数据收集的时间
- 避免维度过高
- 提升泛化性能,降低过拟合的风险
1.Filter Method
过滤方法根据性能度量选择特征,而不考虑以后使用的ML算法。单变量滤波器根据一定的准则对单个特征进行评价和排序,而多变量滤波器则对整个特征空间进行评价。
特性:
基于模型选择变量,使用尽量少的计算资源,会使模型性能下降的特征。下列这些滤波方法都没有考虑特征之间的相互作用,可能会降低我们的预测能力。我个人只使用方差和相关性来过滤一些绝对不必要的特性。使用卡方检验或单变量选择方法时,需要记住的一点是,在非常大的数据集中,大多数特征将显示一个小的p_value,因此看起来它们具有很高的预测性。这实际上是样本量的影响。因此,在选择使用这些过程的功能时应该谨慎。一个非常小的p_value不会突出显示一个非常重要的特性,它只是表明数据集包含了太多的样本。
2.Wrapper Method
包装器使用搜索策略在可能的特征子集空间中进行搜索,并根据ML算法的性能质量对每个子集进行评估。实际上,搜索策略和算法的任何组合都可以用作包装器。
特点是:
- 使用ML模型对特征子集进行评分,
- 在每个子集上训练一个新的模型,
- 其计算开销非常大,
- 通常为一个给定的ML算法提供最佳性能的子集,但可能不为另一个算法提供最佳性能的子集
- 需要一个任意定义的停止条件
- 性能提升时停止
- 性能下降时停止
- 达到一定性能时停止
具体方法:
- forward selection方法:首先对所有特征进行单独评估,然后根据预先设定的评估标准选择性能最佳的算法。在第二步中,它评估所选特征和第二个特征的所有可能组合,并根据相同的预先设置条件选择产生最佳性能算法的对。例如,预先设置的标准可以是用于分类的roc_auc和用于回归的r平方。这个选择过程称为贪心,因为它计算所有可能的单、双、三等特征组合。因此,它在计算上是相当昂贵的,有时,如果特征空间很大,甚至是不可行的。
- Backward Elimination:通过使用所有特征拟合一个模型,开始逐步后退特征选择。然后删除一个特性。它将删除为某个评估标准生成性能最高的算法(统计意义最小)的那个。在第二步中,它将删除第二个特性,即再次产生最佳执行算法的特性。然后继续,删除一个又一个的特征,直到达到一定的标准。
- Exhaustive Feature Selection:将所有特征组合度测试一遍,选择最优的
3.Embedded Method
嵌入式方法结合了过滤器和包装器方法的优点。学习算法利用自身的变量选择过程,同时进行特征选择和分类。常用的嵌入式方法包括Lasso和各种基于树的算法
特点:
- 将feature selection作为模型构建的一部分
- 思考模型之间的交互作用
- 消耗较少的计算资源(只训练一次模型)
- 通常为一个给定的ML算法提供最佳性能的子集,但可能不为另一个算法提供最佳性能的子集
方法:
- Regularization with lasso:正则化就是对机器学习模型的不同参数增加一个惩罚来减少模型的自由度。因此,模型拟合训练数据噪声的可能性较小,因此过拟合的可能性较小。在线性模型正则化中,对每个预测因子相乘的系数施加惩罚。对于线性模型,一般有三种正则化。lasso能使得coefficients接近0,因此该feature能够从model中除去。无论是线性回归还是逻辑回归,我们都可以使用Lasso正则化来去除不重要的特征。请记住,增加惩罚将增加删除的特征的数量。因此,你需要时刻保持警惕,不要设置过高的惩罚以至于删除重要的功能,或者设置过低以至于不删除不重要的功能。说了这么多,如果代价太高,并且删除了重要的特性,您应该注意到算法性能的下降,然后意识到需要减少正则化。
- Random Forest Importance:随机森林是最流行的机器学习算法之一。它们之所以如此成功,是因为它们总体上提供了良好的预测性能、低过拟合和易于解释。这种可解释性是由这样一个事实提供的,即直接得出树决策中每个变量的重要性。换句话说,计算每个变量对决策的影响是很容易的。随机森林是一种由一组基本估计器(决策树)组成的套袋算法,每个估计器都建立在从数据集随机提取观测值和随机提取特征值的基础上。并不是每棵树都能看到所有的特征或所有的观察结果,这就保证了这些树不相关,因此不容易过度拟合。使用树状特征重要性来选择特征是一种非常直接、快速和普遍准确的方法,用于为机器学习选择好的特征。特别是,如果您要构建树方法。
4.Feature Shuffling
一种流行的特征选择方法是对特定变量的值进行随机变换,并确定这种排列如何影响机器学习算法的性能指标。换句话说,我们的想法是对每个特征的值进行排序,每次一个,然后测量这种排序在多大程度上降低了准确性,或者降低了roc_auc,或者降低了机器学习模型的mse。如果变量是重要的,这是高度预测性的,它们的值的随机排列将急剧减少这些指标中的任何一个。相反,非重要/非预测变量对我们正在评估的模型性能指标应该几乎没有影响。
5.Hybrid Method
- Recursive Feature Elimination步骤:
- 根据来自机器学习算法的重要性对特征进行排序:它可以是树的重要性,或LASSO / Ridge,或线性/逻辑回归系数。
- 删除一个特征(最不重要的),然后利用剩下的特征构建一个机器学习算法
- 计算您选择的性能指标:roc-auc、mse、rmse、准确性。
- 如果度量值减少了一个任意设置的阈值,那么这个特性很重要,应该保留。否则,我们可以删除该特性
- 重复步骤2-4,直到删除所有特性(并因此进行评估)并评估性能下降为止。
- Recursive Feature Addition步骤:
- 根据来自机器学习算法的重要性对特征进行排序:它可以是树的重要性,或LASSO / Ridge,或线性/逻辑回归系数。
- 建立一个只有一个特征(最重要的特征)的机器学习模型,并计算性能的模型度量。
- 添加一个最重要的特性,然后利用添加的特性和前几轮中的任何特性构建一个机器学习算法。
- 计算您选择的性能指标:roc-auc、mse、rmse、准确性。
- 如果度量增加的值超过了任意设置的阈值,那么该特性很重要,应该保留。否则,我们可以删除该特性。
- 重复步骤2-5,直到删除所有特性(并因此进行评估)并评估性能下降为止。