Stata 19 | 基于H2OML的二元分类器错误率近似统计检验方法

时间:2025-04-30点击次数:18

stata192015.4.25知乎


研究背景
当您使用Stata全新的h2oml命令套件完成梯度提升机(GBM)与随机森林(RF)分类器训练后,测试数据显示GBM模型准确率达87%,而RF模型为85%。这是否意味着GBM就是更优选择呢?且慢定论。

为何单一准确率指标不足为凭
准确率、AUC值及均方根误差等指标虽被广泛采用,但其本质仅是点估计。这些数值仅反映模型在特定测试样本上的表现,未能考虑样本间变异所导致的波动。换言之,它们无法回答这个关键问题:两种方法的性能差异是否具有总体代表性,抑或仅是当前测试数据中的偶然现象?

在比较GBM与RF等方法时,几个百分点的性能差异本身可能并不具备足够的说服力。若不考虑不同样本间结果的差异程度,我们难以判断某一方法是否确实具有持续优势,抑或观测到的差异仅是数据随机波动的产物。此时统计检验显得尤为重要,因为它能提供系统框架,帮助我们评估观测差异是否具有总体层面的显著性。

概述
机器学习中比较分类器的常规做法是将数据集划分为三类保留集(训练集、验证集和测试集)或两类保留集(训练集与测试集)。其中验证集(针对三类划分)或交叉验证(针对两类划分)用于模型调整,而测试集则用于评估较终性能。

然而,依赖单一测试集的一个微妙但关键的问题是测试数据选取的随机变化。具体而言,即使两个分类器在整个总体中表现相同,由于抽样测试数据的随机波动,其中一个可能会显得更加优越。当测试集较小时,这一问题尤为突出。

针对此问题,学术界推荐采用统计检验方法(Dietterich 1998;Alpaydin 1998;Raschka 2018)。本文将重点探讨:给定两种机器学习方法和一个训练集,如何检验这两个分类器在未见数据上是否具有相同的错误率?

我们将聚焦两种检验方法:McNemar检验(Mcnemar 1947)和组合式5×2交叉验证(5×2 CV) F检验(Alpaydin 1998)。通过Stata及其h2oml套件,我们将演示这些检验的实际应用。本文结构如下:首先从概念层面介绍两种检验方法,然后过渡到Stata中的具体实现。

统计检验
在二元分类问题中,模型的性能可通过误分类错误率进行评估,误分类错误率是指所有预测中不正确预测的比例。让真正例(TP)和真负例(TN)分别表示正确分类的z正样本和负样本的数量。让假正例(FP)和假负例(FN)表示错误分类的正样本和负样本的数量。误分类错误率的计算公式为:
1
反之,衡量正确预测的比例的模型准确率计算公式为:

2
详细信息参见[H2OML]metric_option说明文档。这些指标是评估RF或GBM等算法预测质量的基础指标。

McNemar检验
McNemar检验是一种用于配对比较的非参数检验方法,可用于评估两种分类方法在同一测试集上的性能是否存在显著差异。

设nij表示分类器A(如GBM)的预测结果为i(i=1表示正确预测,i=0表示错误预测),同时分类器B(如RF)的预测结果为j(j=1表示正确预测,j=0表示错误预测)的样本数量。据此可构建如下2×2列联表:

表1:McNemar检验用于比较两种二元分类器的错误率所需的数据对照表
3
我们重点关注非对角线元素,,n01 (A不正确,B正确) 和n10 (A正确,B不正确)。这些值反映了两个分类器之间的预测分歧。

零假设H0设定为两个分类器具有相同的错误率:

在零假设下,分歧数量n01+n10遵循二项式分布,且两种分歧结果出现概率相等。当样本量足够大时,二项式分布可以近似为1自由度的卡方分布。

McNemar检验统计量计算公式为:
5

在零假设下,该统计量近似为卡方分布,具有1个自由度。具体推导过程可参阅[R] epitab中 Unstratified matched case–control data (mcc and mcci)章节。

组合式 5 x 2 CV F检验
5×2 CV F检验是一种用于比较两种监督分类方法性能的统计检验方法,其核心在于检验以下零假设:

6

该检验方法基于Dietterich(1998)提出的5×2 CV验证配对t检验发展而来。Alpaydin(1998)发现了原检验方法因需从10种可能的统计量中任选其一而存在不稳定性,故提出组合F检验方法,通过聚合所有统计量来提高稳健性。

句子1

对于每次重复i,我们需要计算:
8

以及方差的估计:
9

原始5×2 CV t检验(供参考)

Dietterich(1998)提出的t统计量如下:
10句子2


组合式5 x 2 CV F检验推导句子3

在零假设成立且满足(近似)独立性假设的条件下,我们有
12
该统计量近似服从自由度为(10,5)的F分布。

简而言之,组合式5×2 CV F 检验相较于Dietterich原始t检验的改进体现在:

.充分利用全部10折的差异数据,而非仅用其中1折

.降低对折叠或复制顺序的敏感性

.提供更好的I类错误控制能力,并增强统计能力

Stata实现步骤
我们首先加载attrition.dta数据集,并生成新变量logincome来开始我们的分析,该变量存储了月收入的对数值。这种对数变换是建模前处理偏态变量的常用方法。

. use https:///www.stata.com/users/assaad_dallakyan/attrition, clear

. gen logincome = log(monthlyincome)

 然后我们通过h2o init命令初始化H2O集群,将当前数据集载入H2O框架并命名为attrition,同时将其设为当前H2O框架。

. h2o init

. _h2oframe put, into(attrition) current

为提高可重复性,我们采用随机种子19将attrition.dta划分为训练集(70%)和测试集(30%),随后将train框架设为模型训练的工作框架。

. _h2oframe split attrition, into(train test) split(0.7 0.3) rseed(19) replace

. _h2oframe change train

为简化操作,我们定义了全局宏predictors,其中包含模型的完整预测变量集。涵盖了广泛的个人和工作相关特征,比如教育,工作满意度,工作生活平衡度以及人口统计细节。

. global predictors age education employeenumber environmentsat

> jobinvolvement jobsatisfaction logincome numcompaniesworked 

> performance relationshipsat totalworkingyears worklifebalance

> yearsatcompany yearsincurrentrole yearswithcurrmanager

> businesstravel gender jobrole maritalstatus

McNemar检验
我们首先使用训练数据集训练GBM分类器。一旦模型被训练好,我们*test框架应用于后续的后估计命令,显示混淆矩阵并生成预测结果。将预测类别存储在测试框架test的attrition_gbm变量中,并将模型保存在gbm的名称下,以便将来进行比较。为了简单起见,对于GBM和RF分类器,我们对所有超参数使用默认值,并且没有进行调整。然而,在实际应用中,我们更可能希望经过超参数调整后获得的较佳模型;
13

在测试集的431个观测样本中,产生81次误分类,总体错误率为0.188。

我们对RF分类器重复相同的过程。预测结果存储在变量attribute_rf中,模型另存为rf。
14

在测试数据集的全部431个观测值中,共产生了104个误分类,总体错误率达0.241。初步来看,GBM模型在预测准确率上似乎优于RF模型(错误率0.188 vs 0.241)。然而,这种差异可能并不代表总体层面的差异,这正凸显了在准确率指标之外进行统计检验的必要性。接下来我们将通过McNemar检验和5×2 CV F检验进行验证。

为了执行McNemar的测试,我们将测试数据和预测结果导回Stata(通过_h2oframe-get)进行进一步的统计分析。我们将字符型的分类预测和结果编码为数值变量,并删除原始字符型版本。

. clear

. _h2oframe get attrition attrition_gbm attrition_rf using test

. encode attrition, gen(nattrition)

. encode attrition_gbm, gen(nattrition_gbm)

. encode attrition_rf, gen(nattrition_rf)

. drop attrition attrition_gbm attrition_rf

下一步是制作一个三线表,交叉比对真实标签与两个模型的预测结果,从中提取McNemar检验所需的计数(如表1所示),并存储在局部宏中。15

然后我们调用mcci命令,基于上述频数计算McNemar统计量。

16

检验结果没有提供拒绝零假设的证据,表明两种模型性能无显著差异。

对于训练计算成本高的模型,Dietterich(1998)推荐优先采用McNemar检验。对于可重复训练的模型(例如10次),他建议使用5×2 CV t检验,因其统计功效略优于McNemar检验。接下来,我们将演示如何在Stata中实现5×2 CV F检验,该方法是5×2 CV t 检验的改进版本。

组合式5×2 CV F检验
我们首先切换至完整数据集框架(attrition)。然后,我们初始化标量N和M[参见 (5)],用于计算F统计量(6)。

. _h2oframe change attrition

. scalar N = 0

. scalar M = 0

句子4

17

该测试的结果证实了McNemar检验的结果。没有证据表明这些方法存在显著性能差异。

 

如果您想要体验Stata 19的新功能,欢迎联系科学软件网申请试用。


http://www.kxrjsoft.com.cn

上一篇:没有了
产品推荐

Development, design, production and sales in one of the manufacturing enterprises

您是第3544420位访客
版权所有 ©2025-04-30 京ICP备10040123号

北京天演融智软件有限公司 保留所有权利.

技术支持: 八方资源网 免责声明 管理员入口 网站地图