众所周知,JMP是一款非常强大的统计发现工具,适用于创建各种统计模型。但是,如果要全面评估一个二分类预测模型的阈值,则需要多个平台和多个步骤联合进行。在2018JMP Discovery Summit美国场的演讲中,探讨了评估和选择分类模型阈值的挑战。并且,作者加入了JMP超级用户KarenC和JMP美国技术顾问MiaStephens的团队,共同创建了Model Classification Explorer插件,以便于理解模型和选择阈值。
本文作者:Tarek Zikry,JMP技术支持,原文链接:https://community.jmp.com/t5/JMPer-Cable/Beyond-ROC-curves-Exploring-probability-thresholds-and-error/ba-p/66706 ,感兴趣的朋友也可以直接查看英文原文。 Model Classification Explorer插件提供统一的仪表板,可同时显示模型cutoff值和错误权衡。你可以交互式地更改模型阈值,并实时地查看模型在性能度量,混淆矩阵和ROC曲线方面的输出结果。插件还附加了自定义红三角选项,以便查看提升曲线,累积增益曲线,并根据分类成本计算最佳阈值。
我们来看一个案例,数据如表-1所示。这是办公室周五的甜甜圈日,假如我们想预测100名员工中有多少人会吃甜甜圈。我们收集的数据包含每个人是否食用甜甜圈,以及许多预测变量,并且通过拟合模型来预测食用的概率。现在,想要探索与每个模型Cutoff点相关的权衡。目的是选择一个Cutoff点,以尽量减少每周五甜甜圈的浪费。
这个数据表有3列: Ÿ Prob[Donut]列是一个人吃甜甜圈的预测概率 Ÿ Consumption列是一个人是否吃甜甜圈的实际结果 Ÿ Validation列是可选的验证列
表-1 输入数据
导入数据,准备研究 下载并安装插件后,打开Donuts Blog Example.jmp数据表。数据包括一列作为连续型变量的所关注事件的预测概率,对于本例即Prob[Donut]列。通过使用二分类拟合模型报表中的“保存概率公式”选项,便可以在JMP中创建此列。另外一个必须列是作为名义型变量的实际结果,对于本例即Consumption列。
你也可以选择添加验证列,该列将根据验证类别在平台中添加其他输出结果。如果使用JMPPro,还可以轻松地通过“分析 >预测建模>添加验证列”来创建验证列。验证列可以包含两个或三个类别,并且需要由数值组成。
图-1 列设定
启动平台,开始研究 步骤1:将Prob[Donut]列放入X,将Consumption列放入Y,这两列是必须的。 步骤2:将目标水平设置为“Donut”,因为这是模型预测所关注的事件。 步骤3:设置alpha水平,默认值为0.05。 步骤4:可以通过右上角的PerformanceTerminology下拉菜单,可切换输出报表中不同性能度量指标的标签表述。在本例中,我们保持其“General”常规的设置。 步骤5:VisualAccessibility复选框可以更改图形输出,从而无需区分图表上的颜色也能够解释输出结果,我们暂时不需这样做。 步骤6:设置完这些初始参数后,点击“确定”启动平台。根据数据集的大小以及是否使用验证列,可能需要几秒钟才能启动。
结果输出 - 生成新的数据表 在该平台外,还将衍生新的数据表。该数据表基于Prob[Donut]列、Consumption列和每个人吃甜甜圈的预测概率,通过循环遍历所有人并比较其当前实际食用情况和食用预测概率来创建真阳性,真阴性,假阳性和假阴性的计数。根据这些计数,创建灵敏度或真阳性率列,即模型正确识别实际吃甜甜圈的个体的能力。特异性或真阴性率列,是模型正确识别没有吃甜甜圈的个体的能力。误分类率是一行中假阳性+假阴性计数相对观测总数的比率。如果使用了验证列,则会在后台为每个验证类别设立一个单独的数据表,并最终仅输出所有子表拼接在一起的总表。
图-2 生成新的数据表
结果输出 - 报表窗口 在输出结果的报表窗口我们看到的第一个图是一个标准的ROC曲线,绘制灵敏度 vs 1 - 特异度和AUC及其95%Wald置信区间。在右边,有一个聚类图呈现二分类结果的分布。 y轴为每个观测个体吃甜甜圈的实际结果,x轴为每个观测个体吃甜甜圈的预测概率。垂直滑块处于当前阈值。红点表示误分类的个体,而蓝点表示正确分类的个体。
图-3 交互式平台
在第2排报表中,进行了量化分析。PerformanceMeasures报表提供了7种不同衡量指标的估计值和置信区间。其中,Prevalence是实际吃甜甜圈的员工比例。True Positive Rate/Sensitivity和TrueNegative Rate/Specificity已在前面讨论过,并在这里被包含进去。Positive Predictive Value (PPV)表征阳性结果预测个体实际吃甜甜圈的程度。NPV则相反,表征阴性结果预测个体不吃甜甜圈的程度。在Performance Measures报表的右侧,我们可以看到2x2混淆矩阵显示TP,TN,FP和FN的比率和计数。旁边显示的是误分类率和马修斯相关系数(MCC)。
MCC是二分类模型质量的另一个衡量标准,值为1意味着每个被预测吃甜甜圈的人实际上真吃了一个,值为0意味着该模型等同于随机分类,值为-1则意味着完全误分类,其中每个被预测吃甜甜圈的人实际没有一个真正吃了。底排的ErrorTradeoff Curve报表显示了假阳性和假阴性错误计数的曲线图,通过红三角选项还可将Y轴更改为比率而非计数。
图-4 启用VisualAccessibility和验证列
这些报表都是独立的,但真正的价值在于其交互方面。分类模型的性能度量基于阈值或cutoff值。更改阈值时,性能指标会随即发生变化。在State vs. Score和ErrorTradeoff Curve报表中,水平方向上都有拖动标记,表示模型阈值。抓取并移动这些线条可更改阈值并更新性能度量。
或者,使用Confusion Matrix报表中的 “Probability Threshold”滑块或通过可编辑数字框来更改阈值。这些拖动标记和滑块都是联动的,当你移动其中一个时,其他拖动标记和滑块也会随之移动。这些滑块用于设置新的概率阈值,该阈值用于模型预测个体是否吃甜甜圈的二分类结果。增加Cutoff值将为模型设置更为严格的阈值以预测甜甜圈食用与否,反之亦然。 例如,如果你将阈值设置为0.8,这意味着当模型预测某个体吃甜甜圈时,其Prob[Donut]列的预测值必须≥0.8,否则模型将预测该个体不会吃甜甜圈。
附加功能,不容小觑 “Minimize Misclassification”按钮设置最优cutoff值,最小化假阳性和假阴性的计数总和。反过来,它也最大化MCC。
图-5 最小化误分类
在顶部的“Consumption Threshold/Cut-OffAnalysis”旁的红三角中,除了累积增益曲线(如果 JMP Pro用户)之外,还可以在输出报表底部显示“提升曲线”。使用验证列时,这些选项也可用于“PerformanceMeasures”红三角下的每个验证类别。
图-6 进一步的扩展分析
你还将看到菜单选项“Cost Based Threshold”,该选项将打开一个新窗口,根据分类成本计算最佳阈值。例如,假设实际吃甜甜圈的员工比例为0.5,TP (True Positive)和TN (True Negative)分类成本为0,FP (False Positive)分类成本为1,FN (False Negative)分类成本为3。
在本示例中,一个假阴性食用甜甜圈的分类成本要比一个假阳性食用甜甜圈的分类成本高3倍,这可能是由于员工会因甜甜圈短缺而不是盈余导致3倍的不满。当考虑这些成本时,最佳阈值为0.25,你可以在编辑框中手动输入这些数字。
图-7 Cost Based Threshold窗口
最后,你还可以选择将新的分类列保存到原始数据表中,从而根据当前的cutoff值创建新的“Consumption”列。
表-2 Saving a NewClassification Column
结论
这个插件是评估任何分类模型cutoff值的极其强大的工具,无论是预测甜甜圈消费还是生产制造中的缺陷率,通过这个插件都可将所有图形报表整合在一个高度交互的平台中,使得数据可视化和模型阈值的设置变得非常简单。
更多 数据分析相关干货、JMP实用技巧、JMP最新活动,敬请关注JMP官方微信公众号:
|