假设您有一个用于垃圾邮件检测的逻辑回归模型,该模型预测一个介于 0 到 1 之间的值,表示给定电子邮件是垃圾邮件的概率。预测结果为 0.50 表示电子邮件为垃圾邮件的可能性为 50%,预测为 0.75 表示电子邮件为垃圾邮件的可能性为 75%,依此类推。
您想在电子邮件应用中部署此模型,以将垃圾邮件过滤到单独的邮件文件夹中。不过,为此,您需要转换模型的原始数值输出(例如0.75
)分为“垃圾邮件”或“非垃圾邮件”这两类。
如需进行此转换,您需要选择一个阈值概率,称为分类阈值。然后,概率高于阈值的示例会被分配到正类别(即您要测试的类,此处为 spam
)。概率较低的示例会被分配到负类别(即备选类别,此处为 not spam
)。
点击此处详细了解分类阈值
您可能会想知道:如果预测得分等于分类阈值(例如,分类阈值为 0.5,得分为 0.5),会怎么样?这种情况的处理取决于为分类模型选择的特定实现。如果得分和阈值相等,Keras 库会预测负类,但其他工具/框架可能会以不同的方式处理这种情况。
假设模型为某封电子邮件评分为 0.99,预测该电子邮件是垃圾邮件的概率为 99%;为另一封电子邮件评分为 0.51,预测该电子邮件是垃圾邮件的概率为 51%。如果您将分类阈值设置为 0.5,模型将将这两封电子邮件都归类为垃圾邮件。如果您将阈值设置为 0.95,则只有得分为 0.99 的电子邮件才会被归类为垃圾邮件。
虽然 0.5 看起来像是一个直观的阈值,但如果一种错误分类的代价高于另一种类型,或者类别不平衡,那么这并不是一个好主意。如果只有 0.01% 的电子邮件是垃圾邮件,或者误归档合法电子邮件比将垃圾邮件放入收件箱更糟糕,如果将模型认为至少 50% 的垃圾邮件标记为垃圾邮件,会产生不良结果。
混淆矩阵
概率得分不是现实情况,也不是标准答案。二元分类器的每个输出都有四种可能的结果。在垃圾邮件分类器示例中,如果您将标准答案作为列,将模型的预测结果作为行,则会得到以下表格(称为混淆矩阵):
实际正例 | 实际负例 | |
---|---|---|
预测为正例 | 真正例 (TP):被正确分类为垃圾邮件的垃圾邮件。这些是系统自动发送到“垃圾邮件”文件夹的垃圾邮件。 | 假正例 (FP):非垃圾邮件被误分类为垃圾邮件。这些是最终进入“垃圾邮件”文件夹的正常电子邮件。 |
预测为负 | 假负例 (FN):垃圾邮件被错误分类为非垃圾邮件。这些是垃圾邮件过滤器未捕获的垃圾邮件,并已进入收件箱。 | 真负例 (TN):非垃圾邮件被正确分类为非垃圾邮件。 这些是直接发送到收件箱的正规电子邮件。 |
请注意,每行中的总数表示所有预测正例 (TP + FP) 和所有预测负例 (FN + TN),无论其有效性如何。与此同时,每个列中的总和会显示所有真实正例 (TP + FN) 和所有真实负例 (FP + TN),而不会考虑模型分类。
如果实际正例的总数与实际负例的总数不接近,则表示数据集不平衡。不平衡数据集的实例可能是包含数千个云彩照片,而您感兴趣的罕见云类型(例如卷云云)仅出现几次。
阈值对真正例、假正例和假负例的影响
不同的阈值通常会导致真正例、假正例、真负例和假负例的数量不同。以下视频介绍了具体原因。
请尝试自行更改阈值。
此 widget 包含三个玩具数据集:
- 分离:正例和负例通常区分明显,大多数正例的分数高于负例。
- 未分离,其中许多正例的得分低于负例,许多负例的得分高于正例。
- 不均衡,仅包含少数正类示例。