贪心搜索方法(Greedy Search Methods)
在本章中,将讨论贪心搜索方法(greedy search method),例如简单的单变量过滤器(univariate filter)和递归特征消除(recursive feature elimination)。在继续之前,先介绍另一个数据集,它将在本章中用于演示这些方法的优点和缺点。
11.1 示例数据:预测帕金森病
Sakar 等人(2019)描述了一项实验:一组 252 名患者(其中 188 名先前被诊断为帕金森病(Parkinson’s disease))被记录三次说出一个特定的声音。随后对每次重复录音应用多种信号处理技术,以创建 750 个数值特征。目标是用这些特征对患者的帕金森病患病状态进行分类。这些数据中的特征组可以被视为遵循一种档案(profile)结构(第 9 章),因为许多特征由每种信号处理器产生的相关字段集合组成(例如,跨不同的声音波长或子带)。毫不奇怪,由此产生的数据具有极其严重的多重共线性(multicollinearity);约有 10,750 对预测子(predictor)的绝对秩相关(rank correlation)大于 0.75。
由于每位患者有三个重复的数据点,我们分析中使用的特征结果是这些重复测量值的平均值。这样一来,患者既是独立的实验单元(experimental unit),也是预测单元(unit of prediction)。
为了演示本章的工具,我们基于患者疾病状态进行分层随机抽样(stratified random sample),将 25% 的数据分配到测试集。由此产生的训练集包含 189 名患者,其中 138 名患有该疾病。用于评估模型的性能指标是 ROC 曲线下面积(area under the ROC curve)。
11.2 简单过滤器
特征选择最基本的方法是在将预测子纳入模型之前对其进行筛选,看看是否有任何一个与结果(outcome)存在关系。为此,需要一种数值评分技术来量化关系的强度。利用这些分数,对预测子进行排序,并通过阈值或选取前 \(p\) 个预测子进行过滤。可以对每个预测子单独评分,也可以(取决于所使用的技术)同时对所有预测子进行评分。如果分别筛选预测子,则有各种各样的评分方法。下面总结了一些流行且有效的评分技术,并根据预测子和结果的类型进行组织。此列表并非详尽无遗,而是作为一个起点。Kuhn 和 Johnson(2013)的第 18 章也包含类似的讨论。
当筛选单个分类预测子时,根据结果数据的类型有几种选择:
- 当结果是分类型时,预测子与结果之间的关系构成一个列联表(contingency table)。当预测子有三个或更多水平时,预测子与结果之间的关联程度可以用 χ²(卡方,chi-squared)检验或精确方法(exact method)等统计量来度量(Agresti, 2012)。当预测子恰好有两个类别时,比值比(odds-ratio)可能是一个有效的选择(见第 5.6 节)。
- 当结果是数值型且分类预测子有两个水平时,可以用基本的 t 检验生成统计量。也可以为每个预测子创建 ROC 曲线和精确率-召回率(precision-recall)曲线,并计算曲线下面积。[83] 当预测子有两个以上水平时,可以计算传统的方差分析(ANOVA)F 统计量。
当预测子是数值型时,存在以下选择:
- 当结果是分类型时,可以使用与上述预测子为分类型、结果为数值型时相同的检验。只需在 t 检验、曲线计算、F 检验等中互换角色即可。当检验数量较多或预测子具有严重的多重共线性时,Opgen-Rhein 和 Strimmer(2007)以及 Zuber 和 Strimmer(2009)的相关调整 t 分数(correlation-adjusted t-score)是简单 ANOVA 统计量的良好替代方案。
- 当结果是数值型时,可以计算简单的两两相关(或秩相关)统计量。如果关系是非线性的,则可以使用最大信息系数(maximal information coefficient, MIC)值(Reshef 等, 2011)或 A 统计量(Murrell 等, 2016),它们衡量数值型结果与预测子之间关联的强度。
- 或者,广义可加模型(generalized additive model, GAM)(Wood, 2006)可以同时为一组预测子拟合非线性平滑项,并使用 p 值衡量其重要性,该 p 值针对每个预测子无趋势的零假设(null hypothesis)进行检验。图 4.15(b) 展示了这种模型在分类型结果上的一个示例。
这些简单过滤器的总结见图 11.1。
[83] ROC 曲线通常在输入为连续型且结果为二分型时计算。出于简单过滤的目的,输入-输出方向被互换,以量化数值型结果与分类预测子之间的关系。
图 11.1:可应用于特征与结果类型组合的简单过滤器比较:(a) 分类特征与分类结果,(b) 连续特征与分类结果,(c) 分类特征与连续结果,(d) 连续特征与连续结果。

当预测子都属于同一类型时,生成关于单个预测子在分类或与结果相关方面的有效性的总结是直截了当的。但大多数数据集包含混合的预测子类型。在这种情况下,由于筛选统计量的单位不同,对预测子进行排序可能具有挑战性。例如,比值比和 t 统计量不兼容,因为它们在不同的尺度上。在许多情况下,每个统计量都可以转换为 p 值,从而在筛选统计量之间建立共同性。
回想一下,p 值源自假设检验(hypothesis testing)的统计框架。在该框架中,我们假设预测子与结果之间不存在关联。然后使用数据来反驳"无关联"的假设。p 值是在预测子与结果之间实际上不存在关联的情况下,观察到统计量更极端值的概率。
每个统计量都可以转换为 p 值,但对某些统计量来说,这种转换比其他的更容易。例如,将 t 统计量转换为 p 值是一个众所周知的过程,前提是某些基本假设成立。另一方面,将 AUC 转换为 p 值并不容易。这个问题的一个解决方案是使用置换方法(permutation method)(Good, 2013; Berry 等, 2016)。这种方法可以应用于任何统计量以生成 p 值。随机化方法的工作原理如下:对于选定的预测子及其对应的结果,随机置换预测子,但不置换结果。然后对置换后的数据计算感兴趣的统计量。这个过程断开了观测到的预测子与结果之间的关系,从而在两者之间不产生关联。同一个预测子被随机置换多次,以生成统计量的分布。这个分布代表"无关联"的分布(即零分布,null distribution)。然后可以将原始数据的统计量与"无关联"分布进行比较,得到该统计量来自此分布的概率,即 p 值。Kuhn 和 Johnson(2013)中给出了 Relief 分数(Relief score)(Robnik-Sikonja 和 Kononenko, 2003)的一个示例。
2016 年 3 月,美国统计协会(American Statistical Association, ASA)发布了一份关于 p 值(以及基于零假设的检验)使用的声明 [84],讨论其效用和误用。例如,一个显而易见的问题是,在任何实际背景之外应用任意定义的阈值来确定"显著性"可能是有问题的。此外,重要的是要认识到,当 ROC 曲线下面积等统计量被转换为 p 值时,“重要性"所需的证据水平被设得很低。原因在于零假设是"无关联”。人们可能会想,如果特征 A 的 p 值为 0.01,特征 B 的 p 值为 0.0001,那么 B 的原始 ROC 值更大。情况可能并非如此,因为 p 值是信号、噪声和其他因素(例如样本量)的函数。当 p 值来自不同的数据集时尤其如此;在这些情况下,样本量可能是该值的主要决定因素。
就我们的目的而言,p 值被算法化地用于搜索合适的子集,尤其是因为当处理不同类型的预测子和/或重要性统计量时,它是一个方便的度量。如第 5.6 节和下文第 11.4 节所述,非常重要的是不要将此类过程中产生的 p 值视为有意义的或正式的统计显著性指标。
关于这些问题的良好总结见 Yaddanapudi(2016)、Wasserstein 和 Lazar(2016)以及《美国统计学家》(The American Statistician)第 73 卷的全部内容。
简单过滤器在识别与结果相关的单个预测子方面是有效的。然而,这些过滤器非常容易找到在现有数据中具有强关联、但与新数据没有任何关联的预测子。在统计学文献中,这些被选中的预测子被称为假阳性(false positive)。统计学的整个子领域都致力于开发尽量减少假阳性发现机会的方法,尤其是在假设检验和 p 值的背景下。减少假阳性的一种方法是调整 p 值,使其有效地变大,从而显著性降低(如前面章节所示)。
[84] https://www.amstat.org/asa/files/pdfs/P-ValueStatement.pdf
图 11.2:简单过滤器的外部与内部交叉验证示意图。

在预测建模的背景下,可以通过使用独立的数据集来评估所选特征,从而最大限度地减少假阳性发现。这个背景与识别最优模型调参参数(tuning parameter)的背景完全平行。回想第 3.4 节,交叉验证(cross-validation)用于识别一组最优的调参参数,使模型不会过拟合(overfit)现有数据。现在,模型构建过程需要实现两个目标:识别有效的特征子集,以及识别合适的调参参数,使所选特征和调参参数不会过拟合现有数据。使用简单的筛选过滤器时,在同一个交叉验证层中同时选择特征子集和模型调参参数是不可能的,因为过滤必须独立于模型调参进行。相反,我们必须加入另一层交叉验证。第一层,即外层,用于过滤特征。然后第二层(“内层”)用于选择调参参数。图 11.2 展示了这一过程的示意图。
从图中可以看出,进行特征选择在计算上可能代价高昂。一般来说,构建和评估的模型数量为 \(I \times E \times T\),其中 \(I\) 是内部重样本(resample)数,\(E\) 是外部重样本数,\(T\) 是调参参数组合的总数。
11.2.1 将简单过滤器应用于帕金森病数据
帕金森病数据有几个可能使建模具有挑战性的特征。具体来说,预测子具有高度的多重共线性,样本量小,并且结果不平衡(74.6% 的患者患有该疾病)。鉴于这些特征,偏最小二乘判别分析(partial least squares discriminant analysis, PLSDA;Barker 和 Rayens, 2003)将是一个值得首先尝试的模型。该模型产生线性的类别边界,这可能限制它过拟合多数类。PLSDA 的模型调参参数是要保留的组分数(component)。
我们必须做出的第二个选择是特征过滤的标准。对于这些数据,我们将使用 ROC 曲线下面积来确定特征是否应包含在模型中。对训练集的初步分析显示,有 5 个预测子的 ROC 曲线下面积至少为 0.80,21 个预测子在 0.75 到 0.80 之间。
对于内部重抽样过程,如果音频特征的 ROC 曲线下面积至少为 0.80,则会被选中。内部重抽样节点中选中的特征随后被传递给相应的外部重抽样节点,在那里进行模型调参过程。
一旦选定了过滤标准和模型,就选择内部和外部重抽样的类型。在本例中,我们使用 20 次自助法(bootstrap)重抽样迭代进行内部重抽样,并使用 5 次重复的 10 折交叉验证进行外部重抽样。最终的性能估计基于外部重抽样的留出集(hold-out set)。为了预处理数据,对每个预测子应用 Yeo-Johnson 变换,然后对值进行中心化和缩放。这些操作在重抽样过程中进行。
在重抽样过程中,选中的预测子数量从 2 到 12 不等,平均为 5.7。有些预测子被经常选中;其中 2 个在每个重样本中都通过了 ROC 阈值。对于最终模型,选择了前面提到的 5 个预测子。对于这组预测子,PLSDA 模型用 4 个组分进行优化。相应的 ROC 曲线下面积估计值为 0.827。
进一步观察选中的预测子,似乎存在相当大的冗余。图 11.3 以热力图(heatmap)形式展示了这些预测子的秩相关矩阵。绝对相关性小于 0.5 的配对很少,且存在许多极端值。如第 6.3 节所述,偏最小二乘模型擅长特征提取(feature extraction),它创建原始数据的线性组合作为新变量。对于该模型,这些 PLS 组分的创建方式是在总结预测子中最大变异量的同时,最小化各组之间的误分类。最终模型使用了 4 个组分,每个组分都是通过过滤器存活的 5 个原始预测子的组合。查看图 11.3,可以观察到相对清晰的分离块/簇。这表明被过滤的预测子中可能只有少量底层信息。使用单独的主成分分析(principal component analysis, PCA)来评估预测子间相关性的程度。在该分析中,仅需要 1 个特征即可捕获总变异的 90%。这印证了这些预测子中只有少量底层效应。这就是为什么发现如此少的组分是最优的原因。
图 11.3:基于 ROC 曲线下面积阈值的过滤过程所选择的预测子的相关矩阵。

这个过滤过程对模型有帮助吗?如果使用相同的重样本在完整预测子集上拟合 PLS 模型,模型仍然倾向于少数投影(4 个组分),并且 ROC 曲线下面积估计值略优于完整模型(过滤后为 0.827,而未过滤为 0.812)。配对 t 检验(paired t-test)的 p 值(\(p = 0.446\))显示没有证据表明这种改进是真实的。然而,考虑到本分析只使用了原始变量的 0.7%,新模型的简洁性可能非常有吸引力。
进行特征选择时值得做的一项事后分析(post hoc analysis)是确定所找到的特定子集是否比相同大小的随机子集更好。为此,创建了 100 个包含 5 个预测子的随机子集,并使用相同的外部交叉验证程序拟合 PLS 模型。我们的特定子集在随机子集性能分布中的位置如何?使用上述方法得到的 ROC 曲线下面积(0.827)优于相同大小随机子集生成值的 97%。随机子集的最大 AUC 为 0.832。这一结果让我们有信心,过滤和建模方法找到了一个具有可信信号的子集。然而,考虑到预测子之间的相关程度,这不太可能是唯一能达到同等性能的这种大小的子集。
虽然偏最小二乘非常擅长容纳具有高度共线性的预测子集,但它确实引出了一个问题:能够达到接近最优预测性能的最小变量集可能是什么。对于本例,我们可以通过提高过滤的严格程度(即 AUC > 0.80)来缩小子集大小。改变阈值将同时影响解的稀疏性和模型的性能。这个过程与将在下一节讨论的向后选择(backward selection)相同。
总而言之,在建模之前使用简单的筛选可以既有效又相对高效。过滤器应包含在重抽样过程中,以避免对性能的乐观评估。缺点是所选特征可能存在一些冗余,而且过滤阈值的主观性可能让建模者想了解在性能受到影响之前可以移除多少特征。
11.3 递归特征消除
如前所述,递归特征消除(recursive feature elimination, RFE;Guyon 等, 2002)基本上是预测子的向后选择。该技术首先在完整的预测子集上构建模型,并为每个预测子计算重要性分数。然后移除最不重要的预测子,重新构建模型,并再次计算重要性分数。在实践中,分析师指定要评估的预测子子集的数量以及每个子集的大小。因此,子集大小是 RFE 的调参参数。使性能标准最优化的子集大小用于根据重要性排名选择预测子。然后使用最优子集训练最终模型。
第 10.4 节详细描述了估计子集大小的适当方法。选择过程以与模型基本调参参数(如最近邻数量或神经网络中的权重衰减量)相同的方式进行重抽样。重抽样过程包含特征选择程序,外部重样本用于估计合适的子集大小。
并非所有模型都能与 RFE 方法配对,有些模型比其他模型从 RFE 中获益更多。由于 RFE 要求初始模型使用完整的预测子集,当预测子数量超过样本数量时,某些模型无法使用。如前面章节所述,这些模型包括多元线性回归(multiple linear regression)、逻辑回归(logistic regression)和线性判别分析(linear discriminant analysis)。如果我们希望将其中一种技术与 RFE 一起使用,则必须首先对预测子进行筛选缩减。此外,有些模型比其他模型从 RFE 中获益更多。随机森林(random forest)就是这样一个例子(Svetnik 等, 2003),下面将针对帕金森病数据使用该模型演示 RFE。
向后选择经常与随机森林模型一起使用,原因有二。首先,如第 10 章所述,随机森林倾向于不从预测方程中排除变量。原因与模型集成(ensemble)的性质有关。集成性能的提升与组成模型的多样性有关;对实际上相同的模型取平均并不会降低模型预测的变异。因此,随机森林通过使用预测子的随机样本,强制树包含预测子的次优分裂。[85] 限制可能用于分裂的预测子数量的做法增加了选择无关预测子的可能性。虽然这样的预测子可能对模型性能没有太大的直接影响,但预测方程在功能上依赖于该预测子。正如我们的模拟所示,树集成可能至少在集成中使用一次每个可能的预测子。因此,随机森林可以对模型良好运行所非必需的变量进行一些事后剪枝。当数据中包含许多无关预测子,且 RFE 过程与随机森林配对时,很宽的子集大小范围可能表现出非常相似的预测性能。
随机森林与 RFE 一起使用的第二个原因是,该模型有一个众所周知的内部方法用于度量特征重要性。这在第 7.4 节中已描述过,并且可以与 RFE 中的第一次模型拟合一起使用,其中使用完整的预测子集来计算特征排名。
树中重要性度量一个值得注意的问题与多重共线性有关。如果训练集中有高度相关的预测子对预测结果有用,那么选择哪个预测子本质上是一个随机选择。常见的情况是,一组高度冗余且有用的预测子都用于跨树集成的分裂中。在这种情况下,树集成的预测性能不受高度相关、有用的特征的影响。然而,特征的冗余会稀释重要性分数。图 11.4 展示了这一现象的一个示例。数据使用第 10.3 节描述的相同系统进行模拟,并使用 2,000 棵树调整随机森林模型。最大的重要性归属于特征 \(x_4\)。向数据集中添加该特征的额外副本并重新拟合模型。该图显示了随着副本的添加,\(x_4\) 重要性的下降。[86] 随着冗余特征添加到模型中,重要性明显下降。因此,当预测子的置换分数不大时,我们应该谨慎地将其标记为不重要,因为它们可能被相关变量掩盖。当将 RFE 与随机森林或其他基于树的模型一起使用时,我们建议在开始程序之前尝试过滤掉高度相关的特征。
对于帕金森病数据,使用随机森林进行向后选择,[87]
[85] 回想一下,随机样本的大小,通常记为 \(m_{\text{try}}\),是主要的调参参数。
[86] 每个模型使用不同的随机数种子重复五次。
[87] 虽然 \(m_{\text{try}}\) 是随机森林模型的调参参数,但默认值 \(m_{\text{try}} \approx \sqrt{p}\) 往往能提供良好的整体性能。虽然调整该参数可能会带来更好的性能,但我们的经验是改进往往是边际性的。
图 11.4:当冗余变量添加到模型中时,随机森林置换重要性分数的稀释效应。

每个集成包含 10,000 棵树。[88] 模型的重要性分数用于对预测子进行排名。鉴于预测子的数量及其之间的大量相关性,子集大小在 \(\log_{10}\) 尺度上指定,以便模型更彻底地研究较小的规模。使用与简单过滤分析相同的重抽样方案。鉴于我们之前关于相关预测子的评论,RFE 分析在有和没有相关性过滤器的情况下进行,相关性过滤器排除了足够的预测子,以强制所有绝对两两相关性都小于 0.50。图 11.5 左面板所示的性能曲线表明,使用所有预测子创建的模型在模型性能上略有优势;ROC 曲线 AUC 大 0.064,差异的置信区间为 (0.037, 0.091)。两条曲线都呈现相当典型的模式:在相关特征被移除之前,性能保持相当恒定。基于未过滤的模型,数值上最好的子集大小是 377 个预测子,尽管过滤后的模型可能可以使用约 100 个预测子的子集实现相似的性能。
如果排名基于 ROC 曲线统计量而不是随机森林重要性分数,会发生什么?一方面,共享大相关性的重要预测子可能排名更高。另一方面,随机森林排名基于所有特征的同时存在。也就是说,所有预测子同时被考虑。因此,基于同时计算的排名可能更好。例如,如果存在重要的预测子交互,随机森林会考虑这些贡献,从而提高重要性分数。
[88] 一般来说,我们不建议对每个随机森林模型都使用这么大的集成规模。然而,在训练集相对较小(但较宽)的数据集中,我们注意到需要将树的数量增加到 1 万到 1.5 万棵,才能获得准确可靠的预测子排名。
图 11.5:使用随机森林进行 RFE 的外部重抽样结果。各面板反映了预测子重要性的计算方式。

为了检验这个想法,使用相同的 RFE 搜索,但使用各个 ROC 曲线下面积(同样,有和没有相关性过滤器)。结果显示在图 11.5 的右面板中。与左面板类似,当数据被预过滤相关性时,这些数据的性能会有所损失。未过滤的模型在约 30 个预测子之前表现出稳健的性能,尽管数值上最优的大小是 128 个预测子。根据此处显示的过滤模型,128 个预测子的子集可以产生约 0.856 的 ROC 曲线下面积。另外使用 100 个大小为 128 的随机子集样本(在这种情况下相关性较低),优化后的模型比 98% 的随机子集具有更高的 ROC 分数。
数据中预测子排名的一致性如何?图 11.6 显示了每个预测子的 ROC 重要性分数。这些点是重样本上的平均分数,带状区域反映这些值的两个标准差。排名看起来相当一致,因为趋势不是完全平坦的水平线。从置信带可以看出,一些预测子只被选中过一次(即没有带),一些只被选中几次,或者跨重样本的值有变化。
RFE 是一种有效且相对高效的技术,可以通过移除无关预测子来降低模型复杂度。虽然它是一种贪心方法,但它可能是最广泛使用的特征选择方法。
图 11.6:预测子排名的平均值和变异性。

11.4 逐步选择
逐步选择(stepwise selection)最初是作为线性回归模型的特征选择技术开发的。前向逐步回归(forward stepwise regression)方法使用一系列步骤,允许特征一次一个地进入或离开回归模型。通常该过程会收敛到一个特征子集。进入和退出标准通常基于 p 值阈值。一个典型的进入标准是特征的 p 值必须小于 0.15 才能进入模型,大于 0.15 才能离开模型。该过程首先创建 \(p\) 个线性回归模型,每个模型恰好使用其中一个特征。[89] 然后根据特征各自解释结果变异的能力对特征重要性进行排名。为了方便起见,解释的变异量可以浓缩为 p 值。如果没有特征的 p 值小于 0.15,则过程停止。然而,如果一个或多个特征的 p 值小于 0.15,则保留 p 值最小的那个。在下一步中,构建 \(p - 1\) 个线性回归模型。这些模型由第一步选择的特征以及每个其他特征(单独)组成。评估每个附加特征,并将满足纳入标准的最佳特征添加到所选特征集中。然后计算每个特征在其他特征存在时解释的变异量,并转换为 p 值。如果 p 值不超过排除标准,则两者都保留,搜索过程继续寻找第三个特征。然而,如果特征的 p 值超过排除标准,则将其从当前所选特征集中移除。被移除的特征仍然可以在以后的步骤中进入模型。该过程持续进行,直到满足收敛标准。
[89] 这里的 \(p\) 是预测子的数量,不要与统计假设检验中的 p 值混淆。
这种方法由于几个原因存在问题,并且存在大量批评这种方法的文献(见 Steyerberg 等, 1999;Whittingham 等, 2006;Mundry 和 Nunn, 2009)。Harrell(2015)对该方法进行了全面的指控,可以概括为以下声明:
- “……如果这个程序刚刚被提出作为一种统计方法,它很可能会被拒绝,因为它违反了统计估计和假设检验的每一项原则。”
逐步选择有两个主要缺陷:
- 假阳性发现的膨胀:逐步选择使用许多重复的假设检验来决定是否包含或排除单个预测子。相应的 p 值未经调整,导致特征过度选择(即假阳性发现)。此外,当存在高度相关的预测子时,这个问题会更加严重。
- 模型过拟合:由此产生的模型统计量,包括参数估计及其相关的不确定性,都是高度乐观的,因为它们没有考虑选择过程。事实上,最终模型的标准误和 p 值是不正确的。
应该说,第二个问题也适用于本章和下一章中描述的所有搜索方法。出于同样的原因,单独的模型统计量不能按字面意义理解。唯一的例外是重抽样的性能估计。假设在 RFE 或全局搜索过程中使用了线性回归模型。调整后的 \(R^2\)、RMSE 和其他内部估计将被乐观地估计,但外部重抽样估计应该更准确地反映模型在新独立数据上的预测性能。这就是为什么外部重抽样估计被用来指导这里描述的许多搜索方法,并衡量导致最终模型的过程的整体有效性。
对该过程的一项有助于缓解第一个问题的修改是使用 p 值以外的统计量来选择特征。赤池信息准则(Akaike information criterion, AIC)是更好的选择(Akaike, 1974)。AIC 统计量适用于以似然(likelihood)为目标函数的模型(即线性或逻辑回归),并通过模型中包含的参数数量来惩罚似然。因此,优化似然且参数较少的模型更受青睐。在操作上,拟合初始模型后,可以为每个包含新特征或排除现有特征的子模型计算 AIC 统计量。下一个模型对应于 AIC 统计量最好的那个。该过程重复进行,直到当前模型包含最好的 AIC 统计量。
然而,重要的是要注意,AIC 统计量专门针对基于似然的模型。为了演示使用 AIC 统计量的逐步选择,为 OkCupid 数据构建了一个逻辑回归模型。为了说明的目的,我们从包含年龄、文章长度和白人指示变量(indicator)的模型开始。在下一步中,将评估三个潜在特征以纳入模型。这些特征是关键词 nerd、firefly 和 im 的指示变量。
包含初始三个预测子的第一个模型具有 -18525.3 的二项对数似然(binomial log-likelihood)值。模型中有 4 个参数,每个项一个,外加一个截距。AIC 统计量使用对数似然(记为 \(\ell\))和模型参数数量 \(p\) 计算如下:
\[ \text{AIC} = -2\ell + 2p \]在这种形式下,目标是使 AIC 值最小化。
在逐步选择的第一轮迭代中,通过从当前集合中删除或添加单个变量并计算其 AIC 值,创建六个推测模型。结果按从最好到最差的模型排序:
| 项 | AIC |
|---|---|
| + nerd | 36,863 |
| + firefly | 36,994 |
| + im | 37,041 |
| 当前模型 | 37,059 |
| - white | 37,064 |
| - age | 37,080 |
| - essay length | 37,108 |
根据这些值,添加这三个关键词中的任何一个都会改进模型,其中 nerd 产生最好的模型。逐步方法不如其他搜索方法贪心,因为它确实会重新考虑将已移除的项添加回模型中(反之亦然)。然而,所有选择都是在任何时候基于当前最优步骤做出的。
我们的建议是完全避免这个过程。正则化(regularization)方法,例如前面讨论的 glmnet 模型,在识别线性模型中的合适子集方面要好得多。如果需要模型推断,可以使用许多贝叶斯方法(Mallick 和 Yi, 2013;Piironen 和 Vehtari, 2017b, a)。
11.5 小结
识别产生最优模型的特征子集通常是建模过程的目标。当数据包含大量预测子时尤其如此。
识别潜在预测重要性特征的一种简单方法是逐个评估每个特征。可以计算统计汇总,如 t 统计量、比值比或相关系数(取决于预测子和结果的类型)。虽然这些值不能直接比较,但每个值都可以转换为 p 值,以便跨多种类型进行比较。为避免发现假阳性关联,应在搜索中使用重抽样方法。
简单过滤器非常适合寻找单个预测子。然而,这种方法没有考虑多个特征共同的影响。这可能导致选择比实现最优预测性能所需的更多特征。递归特征消除是一种可以与任何模型结合使用的方法,为感兴趣的模型识别具有最优性能的良好特征子集。RFE 的主要缺点是它要求初始模型能够拟合完整的预测子集。
逐步选择方法一直是一种流行的特征选择技术。然而,当使用 p 值作为向模型添加或移除特征的标准时,这种技术有一些众所周知的缺点,应该避免。
11.6 计算
网站 http://bit.ly/fes-greedy 包含用于重现这些分析的 R 程序。

脚注
[83] ROC 曲线通常在输入为连续型且结果为二分型时计算。出于简单过滤的目的,输入-输出方向被互换,以量化数值型结果与分类预测子之间的关系。
[84] https://www.amstat.org/asa/files/pdfs/P-ValueStatement.pdf
[85] 回想一下,随机样本的大小,通常记为 \(m_{\text{try}}\),是主要的调参参数。
[86] 每个模型使用不同的随机数种子重复五次。
[87] 虽然 \(m_{\text{try}}\) 是随机森林模型的调参参数,但默认值 \(m_{\text{try}} \approx \sqrt{p}\) 往往能提供良好的整体性能。虽然调整该参数可能会带来更好的性能,但我们的经验是改进往往是边际性的。
[88] 一般来说,我们不建议对每个随机森林模型都使用这么大的集成规模。然而,在训练集相对较小(但较宽)的数据集中,我们注意到需要将树的数量增加到 1 万到 1.5 万棵,才能获得准确可靠的预测子排名。
[89] 这里的 \(p\) 是预测子的数量,不要与统计假设检验中的 p 值混淆。