What if you wanted to predict how many out of 100 employees will eat a donut at the office on Friday?What if you wanted to predict how many out of 100 employees will eat a donut at the office on Friday?What if you wanted to predict how many out of 100 employees will eat a donut at the office on Friday?What if you wanted to predict how many out of 100 employees will eat a donut at the office on Friday?如果您想预测周五 100 名员工中有多少人会在办公室吃甜甜圈,该怎么办?联合管理计划是一个极其强大的统计发现工具,擅长创建各种统计模型。 但是,如果要全面评估预测二元分类模型的阈值,则需要多个平台和多个步骤。 A 2018 年探索峰会演讲将探讨评估和选择分类模型阈值的挑战。 我加入了团队@凯伦C和@米亚斯蒂芬斯创建一个插件以促进模型理解和阈值选择。
这模型分类浏览器插件提供统一的仪表板来同时可视化模型截止和错误权衡。 您可以交互地更改模型阈值,并立即查看性能度量、混淆矩阵和 ROC 曲线中传播的结果。 该加载项还实现了自定义红色三角形选项来查看提升曲线、累积增益曲线,并根据分类成本计算最佳阈值。
让我们看一下带有附加数据表的示例。 今天是办公室的周五甜甜圈日,您想要预测 100 名员工中有多少人会吃甜甜圈。 您收集有关每个人是否食用甜甜圈的数据以及一些预测变量,并拟合一个模型来估计食用概率。 现在您想要探索与每个模型截止点相关的权衡。 我们的想法是选择一个截止点,以最大限度地减少未来星期五的甜甜圈浪费。 共有三列:
- Prob[Donut] 是个人食用甜甜圈的概率。
- 消费是某人是否吃了甜甜圈的实际结果。
- 我们有一个可选的验证列
Input DataInput DataInput DataInput Data输入数据
数据
下载并安装该加载项后,打开 Donuts Blog Example.jmp 数据表。 数据的格式如下:有一个数字连续列对目标结果的概率进行建模,在本例中是我们的 Prob[Donut] 列。 可以通过使用“保存概率公式”保存二元结果的拟合模型来在 JMP 中创建此列。另一个必需的列是作为特征和名义的实际结果状态,在我们的例子中是消耗列。 您可以选择添加验证列,该列将根据验证类别在平台中添加其他输出。 如果你使用JMP专业版,您可以通过分析 -> 预测建模 -> 添加验证列轻松完成此操作。 验证列可以有两个或三个类别,并且需要由数值组成。
Column CastingColumn CastingColumn CastingColumn Casting柱铸造
发射
步骤1:将概率 [甜甜圈] 投射到 X,将消耗投射到 Y。 这两列是必需的。
第2步:将目标级别设置为“甜甜圈”,因为这就是模型预测的级别。
步骤3:设置统计分析的 alpha 水平,默认为 0.05。
步骤4:您可以在右上角选择基于给定应用领域的性能术语,这是不同度量标签的纯视觉选项。 在这种情况下,我们将其保留为“常规”。
第5步:视觉辅助功能复选框是一项功能,可以更改图形输出,以便能够解释结果,而无需区分图形上的颜色,我们现在将其保留。
第6步:设置完所有这些初始参数后,单击“确定”启动平台。 根据数据集的大小以及是否使用验证列,这可能需要几秒钟的时间才能启动。
结果 – 生成的数据表
除了该平台之外,还将推出新的数据表。 该数据表采用 Prob[Donut] 和 Conspiration 列,对于每个人吃甜甜圈的概率,它通过循环所有人员并比较当前的值来创建真阳性、真阴性、假阳性和假阴性的计数。一个人的实际消费情况以及对其他人的消费概率。
根据这些计数,创建灵敏度或真阳性率列,这是模型正确识别实际食用甜甜圈的人的能力。 特异性或真阴性率是模型正确识别未食用甜甜圈的个体的能力。
错误分类率是该行中观察总数的误报 + 漏报之和。
如果您使用验证列,则会在后台为每个验证类别打开一个单独的表,以及一个将所有子集连接在一起的表。
Generated Data TableGenerated Data TableGenerated Data TableGenerated Data Table生成的数据表
结果 – 报告窗口
回到平台。 我们看到的第一张图是标准 ROC 曲线,以 1 - 特异性绘制了灵敏度以及曲线下面积(具有 95% Wald 置信区间)。 右侧,我们有一个聚类图,直观地显示二元分类结果的分布。 y 轴显示建模类别,x 轴是模型得分。 垂直滑块位于当前阈值。 红点是模型错误预测甜甜圈消耗量的点,而蓝点是正确预测的点。
Interactivity of the PlatformInteractivity of the PlatformInteractivity of the PlatformInteractivity of the Platform平台互动性在第二行中,我们进行了数值分析。 绩效指标表提供了七种不同指标的估计值和置信区间。 流行率是指实际吃过甜甜圈的员工比例。 真阳性率/敏感性和真阴性率/特异性已在前面讨论过,也包含在此处。 阳性预测值 (PPV) 被解释为阳性甜甜圈结果预测实际甜甜圈消费量的程度。 NPV 则相反,负的甜甜圈结果可以很好地预测甜甜圈消费的实际缺乏。 阳性似然比 (LR+) 是指当测试结果显示甜甜圈消费呈阳性时,甜甜圈消费的几率会增加多少。 LR- 则相反,即当测试返回非消耗时,甜甜圈消耗的几率会降低多少。 在性能指标的右侧,我们可以看到 2x2 混淆矩阵,显示 TP、TN、FP 和 FN 的比率和计数。 旁边显示的是错误分类率和马修斯相关系数 (MCC) 。 MCC 是二元分类质量的另一种衡量标准,值为 1 表示每个被预测吃甜甜圈的人实际上吃了一个,0 表示模型相当于随机分类,-1 表示完全错误分类,其中每个预测的甜甜圈食者一个也没吃。 底行中的错误权衡曲线显示假阳性和假阴性错误计数的折线图,并使用自定义红色三角形选项将 Y 轴更改为比率而不是计数。
Visual Accessibility Turned OnVisual Accessibility Turned OnVisual Accessibility Turned OnVisual Accessibility Turned On视觉辅助功能已开启
这些表格和图表本身就很棒,但真正的价值来自于交互方面。 分类模型的性能度量基于阈值或截止值。 当您更改阈值时,性能指标也会发生变化。 在状态与分数和误差权衡曲线上,水平线上有指示模型阈值的拖动标记。 抓住并移动这些线中的任何一条来更改阈值并更新性能度量。
或者,使用混淆矩阵上方轮廓框“设置概率阈值”下的滑块或可编辑数字框来更改阈值。 这些拖动标记和滑块都是同步的,当您移动其中一个时,其他滑块也会随之移动。 这些滑块所做的是设置新的概率阈值,该阈值决定模型是否预测您会吃甜甜圈的二元分类。 增加截止值将为模型预测甜甜圈消耗量设置更严格的阈值,反之亦然。 例如,如果将阈值设置为 0.8,则意味着模型要预测您会吃甜甜圈,则 Prob[Donut] > 0.8 必须是,否则它将预测您不会吃甜甜圈。
附加功能
“最小化错误分类”按钮设置最佳截止值,最大限度地减少误报和漏报的总和。 反过来,它也最大化了 MCC。
Minimizing MisclassificationMinimizing MisclassificationMinimizing MisclassificationMinimizing Misclassification最大限度地减少错误分类
在顶部的自定义“阈值/截止分析”红色三角形中,您可以在输出底部显示提升曲线以及累积增益曲线(如果您是专业用户)。 使用“验证”列时,这些选项也可用于性能度量红色小三角下的每个验证类别。
Expanding with Further AnalysisExpanding with Further AnalysisExpanding with Further AnalysisExpanding with Further Analysis通过进一步分析进行扩展
您还将看到菜单选项“基于成本的阈值”,它会打开一个新窗口,根据分类成本计算最佳阈值。 例如,假设甜甜圈消费率为 0.5,TP 和 TN 分类成本为 0,FP 成本为 1,FN 成本为 3。 在此示例中,对甜甜圈进行误报分类的成本是误报的三倍,人们可能会因甜甜圈短缺而不是过剩而感到不安三倍。 考虑到这些成本,最佳阈值是 0.25,您可以手动将其输入到数字编辑框中。
Cost Based ThresholdingCost Based ThresholdingCost Based ThresholdingCost Based Thresholding基于成本的阈值最后,您可以选择将新的分类列保存到原始数据表中,这将根据当前的截止值创建新的消耗列。
Saving a New Classification ColumnSaving a New Classification ColumnSaving a New Classification ColumnSaving a New Classification Column保存新的分类列
结论
这个插件是一个极其强大的工具,可以评估任何分类模型中的截止值,无论是预测甜甜圈的消耗量还是制造中的缺陷率。 通过将所有图形和表格集中在一个高度交互的平台中,数据可视化和模型阈值设置变得非常简单。
您正在使用此插件评估什么类型的模型? 如果您有任何建议,请在下面的评论中告诉我!
因此,一旦我找到了理想的分界点,我该如何回答最初的问题“要订购多少个甜甜圈”尽量减少未来周五的甜甜圈浪费“?
当我激活这个非常有价值的插件时,我没有通过循环所有的人并将当前人的实际消费和消费概率与其他个人。
我在“设置概率阈值”部分也没有找到“最小化错误分类”按钮。
最后,不计算 MCC(马修斯相关系数)。
有人知道 F1 分数是否自动计算吗?
也许,同时有更新版本?
我在 10 月份的 JMP 会议上看到了这一点。现在我终于用我的真实数据来尝试一下。我从我的数据文件中抽取了 n=1000 个样本,大约为 n=10,000。无论如何,我的 Y,响应变量是典型的 0/1 二项式。当我单击将其输入“Y,Response”框中时,我收到“JMP 警报”消息 --> 访问或评估“分配”中的下标范围,newCol[i] = /*###*/“否“/*###*/”。它仍然允许我输入变量,然后将我的概率列插入“S,预测值”。当我点击“运行”时,我收到消息-->名称未解析:目标选择在访问或评估“目标选择”,目标选择/*###*/。并且没有任何输出。有任何想法吗?
应用程序团队的注释:如果您有大量数据集,请耐心等待。 该脚本将运行。
对于预测建模者来说,这看起来是一个非常好的解决方案,可以解决一个重要的挑战。