分类:预测偏差

逻辑回归预测应该无偏差。具体来说:

“预测平均值”应该等于“观察结果的平均值”。

预测偏差用于衡量这两个平均值的差距。具体来说:

$$\text{prediction bias} = \text{average of predictions} - \text{average of labels in data set}$$

一个显著的非零预测偏差会告诉您模型中的某个位置存在问题,因为它表明模型对正类别标签的出现频率有误。

例如,我们知道平均而言,所有电子邮件中有 1% 为垃圾邮件。 如果我们不对某特定电子邮件有任何了解,应该预测其可能是垃圾邮件。同样,一个好的垃圾邮件模型应该预测到电子邮件平均是垃圾邮件的可能性为 1%。(换言之,如果我们将每封电子邮件的预测可能性取平均值,则结果应为 1%。)然而,如果模型预测垃圾内容的可能性平均为 20%,那么我们可以得出结论,该模型存在预测偏差。

出现预测偏差的根本原因可能有:

  • 功能集不完整
  • 数据集杂乱无章
  • 有缺陷的流水线
  • 有偏见的训练示例
  • 正则化过于强

您可能会通过对学习模型进行后期处理来纠正预测偏差,即通过添加校准层来调整模型的输出,以减小预测偏差。例如,如果您的模型的偏差为 +3%,您可以添加校准层,将平均预测降低 3%。不过,建议您不要添加校准层,原因如下:

  • 您需要修正症状,而不是原因。
  • 您构建了一个更脆弱的系统,现在必须及时更新。

请尽可能避免使用校准层。使用校准层的项目往往依赖于它们 - 使用校准层来修复模型的所有正弦。归根结底,维护校准层可能会令人望而却步。

分桶偏差和预测偏差

逻辑回归可预测 0 到 1 之间的值。不过,所有有标签样本要么正好是 0(例如,“非垃圾内容”),要么正好 1(例如,“垃圾内容”)。因此,在检查预测偏差时,您无法仅根据一个样本准确确定预测偏差;您必须检查“样本”对预测偏差的预测。也就是说,只有在将足够多的样本组合在一起以便能够比较预测值(例如 0.392)与观察到的值(例如 0.394)时,逻辑回归的预测偏差才有意义。

您可以通过以下方式构建存储分区:

  • 以线性方式分解目标预测。
  • 成分。

请参考以下针对特定模型的校准曲线。每个点表示一个包含 1000 个值的存储分区。这两个轴具有以下含义:

  • x 轴表示模型针对该桶预测的平均值。
  • y 轴表示该数据集中数据集中的实际平均值。

两个轴均采用对数刻度。

X 轴表示预测值;y 轴表示标签。对于中等和较高的预测值,预测偏差可以忽略不计。对于预测的低值,预测偏差相对较高。

图 8. 预测偏差曲线(对数刻度)

为什么只有模型的某些部分进行预测会如此糟糕?以下是几种可能性:

  • 训练集不能充分表示数据空间的某些子集。
  • 数据集的某些子集比其他子集更嘈杂。
  • 模型过于正则化。(请考虑减小 lambda 的值。)