KDnuggets 上的这篇文章引用了John Langford的文章,指出熵和互信息在用作误差度量时会导致过度拟合。你能详细介绍一下吗?
为什么熵作为误差度量会导致过度拟合?
机器算法验证
机器学习
错误
过拟合
熵
2022-03-06 11:12:32
2个回答
我认为这两个损失函数的关键部分是由于它们使用日志,它们是无界的。
也就是说,与, 作为,. 在这里,“脆性”似乎暗示某些记录可能会过度影响损失,因此训练集中(而不是测试集中)中的(少量)这些记录会过度影响损失分数,因此训练的更新参数,导致过拟合。
用于分类的交叉熵损失函数观察和一些参数, 预测和实际值是:
你可以看到,如果一些预测在这方面非常小,那么会过度影响损失,特别是如果真实值更接近 1。当然,在这些情况下,该函数试图变得昂贵,但它是无界的,所以 Langford 说对于实际/模型分布的某些组合和一些记录,它异常昂贵,并且还不知道真实分布,这总是有风险的。互信息也存在同样的问题。
类似的问题仍然存在于其他损失函数中,例如 OLS 中的高杠杆点,但它对于有限输入域并不是无界的,并且至少对于 OLS,可以在所有情况下进行测试和处理,例如使用影响矩阵。
任何不惩罚系统复杂性的误差测量都可能导致过度拟合,例如熵。
通常,当您将训练数据拟合到要很好地推广到新数据的模型时,此训练步骤是通过最小化一些错误度量来完成的这取决于您的参数(一个包含所有模型参数的向量,这些参数将在训练期间拟合)。
如果您的错误度量只关心更好地拟合您的训练数据,您可能会发现构建具有大量参数(另外可能取任何值)的模型是好的,因为您的模型非常灵活,您的训练数据可以完美学到了。另一方面,如果您的训练数据有噪声(通常是这种情况),您将通过这种方式使您的模型也适合噪声,这就是过度拟合的意义所在。
有一些技术可以避免这种情况,它们统称为“正则化”技术,是最常见的向误差函数添加正则化项的技术,所以现在在哪里是衡量您的适合程度的错误(例如熵)和对复杂模型的惩罚(对于具有许多参数或大参数值的模型更大)。
其它你可能感兴趣的问题