信息论方法
有各种各样的方法试图衡量候选模型和真实模型之间有多少信息丢失的模型误差。当然,真正的模型(实际用于生成数据)是未知的,但是给定某些假设,我们仍然可以获得它与我们提出的模型之间的差异的估计。对于给定的问题,该差异越大,误差越高,并且测试模型越差。
信息论方法假定一个参数模型。给定一个参数模型,我们可以定义一组数据的可能性和参数,简单说来,作为经由观察给出的参数概率。如果我们为了最大限度地利用这一可能性可以调整参数,我们得到一个给定的模型和数据集的参数的最大似然估计。然后,我们可以使用信息论方法来比较不同的模型和不同的模型复杂性,以尝试确定最接近于考虑乐观主义的真实模型的模型。
这些信息论技术中最流行的是Akaike信息标准(AIC)。它可以被定义为特定模型的可能性和该模型中的参数数量的函数:
AIC=−2ln(Likelihood)+2p
像其他错误标准一样,这个目标是最小化AIC值。第一部分(−2ln(Likelihood)可以被认为是训练集错误率和第二部分(2p)可以被认为是调整乐观的惩罚。
然而,除了AIC之外,还有许多其他可以使用的信息论方程。以下两个例子是可以替代的不同的信息理论标准。在这些情况下,乐观调整具有不同的形式,并且取决于样本大小(N)的数目。
AICc=−2ln(Likelihood)+2p+2p(p+1)n−p−1
BIC=−2ln(Likelihood)+p ln(n)
选择哪种信息理论方法是非常复杂的,取决于许多具体的理论,实践考虑,有时甚至是哲学的。这可以使这些方法的应用经常跳跃的信念,所使用的具体方程在理论上适合于特定的数据和建模问题。
优点
缺点
留出数据集
前面的技术都是基于参数和理论假设的。如果这些假设对于给定的数据集不正确,则这些方法将可能给出错误的结果。幸运的是,存在一组完整的单独的一组方法来测量误差,而不进行这些假设,就是使用数据本身来估计真实的预测误差。
这些技术中最简单的是留出法。这里我们最初将数据分为两组。 一组将用于训练模型; 第二组将用于测量结果模型的误差。 例如,如果我们有1000个观察值,我们可能使用700个来构建模型,剩下的300个样本来测量该模型的误差。
这种技术实际上是衡量模型真实预测误差的黄金标准。如其所定义的,模型的真实预测误差是模型对新数据预测的良好程度。 通过从开始就提出测试数据集,我们可以直接测量这个。
留出法的代价来自于从模型训练过程中移除的数据量。例如,在这里的说明性示例中,我们删除了30%的数据。 这意味着我们的模型在较小的数据集上训练,并且其误差可能高于我们在完整数据集上训练它的误差。在这种情况下,标准程序是使用留出集报告您的错误,然后使用所有数据训练最终模型。 在这种情况下报告的误差可能是保守的,整个模型的真实误差实际上较低。 这种保守的预测在实践中几乎总是比过度乐观预测更有用。
这种技术的一个关键是,必须真正地不分析留出数据,直到你有一个最终的模型。常见的错误是创建留出集,训练模型,在留出集上测试,然后在迭代过程中调整模型。 如果您在开发过程中重复使用留出集测试模型,则留出集会被污染。 其数据已被用作模型选择过程的一部分,并且不再给出真实模型预测误差的无偏估计。
优点
缺点
交叉验证和重采样
在某些情况下,像留出法要求那样留出数据集的重要部分的代价太高。作为解决方案,在这些情况下,可以使用基于重采样的技术,例如交叉验证。交叉验证通过将数据分成一组n个折叠来工作。 因此,例如,在具有100个数据点的5折交叉验证的情况下,将创建5个折叠,每个折叠包含20个数据点。 然后重复模型建立和误差估计过程5次。 每次组合四个组(产生80个数据点)并用于训练您的模型。 然后,不用于构建模型的第5组的20个点用于估计真实的预测误差。 在5倍交叉验证的情况下,您将最终得到5个误差估计,然后可以对其进行平均以获得真实预测误差的更强壮的估计。
可以看出,交叉验证非常类似于留出法。在不同的地方,每个数据点都用于训练模型和测试模型,但从不同时使用。在数据有限的情况下,交叉验证优于留出集,因为每次折叠中必须留出的数据少于纯保留方法中所需的数据。交叉验证还可以给出真实误差估计的可变性的估计,这是有用的特征。 然而,如果理解这种变化性是一个主要目标,其他重采样方法如Bootstrapping通常更优。
交叉验证的重要问题是使用多少折。基本上,折叠数越小,误差估计越偏,但是其变化越小。在极端例子下,您可以为每个数据点设置一个折叠,称为“留一法”。在这种情况下,您的误差估计本质上是无偏的,但它可能有高方差。 理解偏差 - 方差权衡在做出这些决定时很重要。要考虑的另一个因素是随着折叠次数增加导致计算时间的增加。对于每一个折叠,你必须训练一个新的模型,所以如果这个过程很慢,可能需要谨慎的使用。似乎在实践中,5倍或10倍交叉验证通常是有效的折叠尺寸。
优点
缺点
选择
总之,这里有一些技术,你可以用来更准确地测量模型预测误差:
建模者必须做出的一个基本选择是他们是否想依靠理论和参数假设来调整乐观参数。或者建模者是否想要使用数据本身以便估计乐观参数。
一般来说,基于假设的方法应用起来要快得多,但是这种方便的代价很高。首先,这些方法下的假设通常是错误的。 他们是多么错误,这个偏移结果有多大,取决于具体情况。 在许多情况下,错误可能是可以忽略的,但是从这些技术导出的结果需要评估者的很大的信任。
最后,在我自己的工作中,我喜欢基于交叉验证的方法。 交叉验证以最小的假设提供良好的误差估计。 交叉验证的主要代价是计算强度,但随着计算能力的快速增加,这个问题变得越来越无关紧要。根本上,参数假设的代价是,即使它们在大多数情况下是可以接受的,但是没有明确的方式来显示它们对特定情况的适用性。 因此,他们的使用提供了攻击线来批判一个模型,并对其结果产生怀疑。虽然交叉验证最初可能需要一段时间才能应用,但它在结果中提供了更多的信心和安全性。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有