前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >精确控制数据模型误差(下)

精确控制数据模型误差(下)

作者头像
哒呵呵
发布2018-08-06 17:33:25
5000
发布2018-08-06 17:33:25
举报
文章被收录于专栏:鸿的学习笔记

信息论方法

有各种各样的方法试图衡量候选模型和真实模型之间有多少信息丢失的模型误差。当然,真正的模型(实际用于生成数据)是未知的,但是给定某些假设,我们仍然可以获得它与我们提出的模型之间的差异的估计。对于给定的问题,该差异越大,误差越高,并且测试模型越差。

信息论方法假定一个参数模型。给定一个参数模型,我们可以定义一组数据的可能性和参数,简单说来,作为经由观察给出的参数概率。如果我们为了最大限度地利用这一可能性可以调整参数,我们得到一个给定的模型和数据集的参数的最大似然估计。然后,我们可以使用信息论方法来比较不同的模型和不同的模型复杂性,以尝试确定最接近于考虑乐观主义的真实模型的模型。

这些信息论技术中最流行的是Akaike信息标准(AIC)。它可以被定义为特定模型的可能性和该模型中的参数数量的函数:

AIC=−2ln(Likelihood)+2p

像其他错误标准一样,这个目标是最小化AIC值。第一部分(−2ln(Likelihood)可以被认为是训练集错误率和第二部分(2p)可以被认为是调整乐观的惩罚。

然而,除了AIC之外,还有许多其他可以使用的信息论方程。以下两个例子是可以替代的不同的信息理论标准。在这些情况下,乐观调整具有不同的形式,并且取决于样本大小(N)的数目。

AICc=−2ln(Likelihood)+2p+2p(p+1)np−1

BIC=−2ln(Likelihood)+p ln(n)

选择哪种信息理论方法是非常复杂的,取决于许多具体的理论,实践考虑,有时甚至是哲学的。这可以使这些方法的应用经常跳跃的信念,所使用的具体方程在理论上适合于特定的数据和建模问题。

优点

  • 容易应用
  • 内置最先进的分析程序

缺点

  • 公制在不同应用之间不可比
  • 需要能够产生可能性的模型
  • 变量的形式是学术领域内的理论辩论的话题

留出数据集

前面的技术都是基于参数和理论假设的。如果这些假设对于给定的数据集不正确,则这些方法将可能给出错误的结果。幸运的是,存在一组完整的单独的一组方法来测量误差,而不进行这些假设,就是使用数据本身来估计真实的预测误差。

这些技术中最简单的是留出法。这里我们最初将数据分为两组。 一组将用于训练模型; 第二组将用于测量结果模型的误差。 例如,如果我们有1000个观察值,我们可能使用700个来构建模型,剩下的300个样本来测量该模型的误差。

这种技术实际上是衡量模型真实预测误差的黄金标准。如其所定义的,模型的真实预测误差是模型对新数据预测的良好程度。 通过从开始就提出测试数据集,我们可以直接测量这个。

留出法的代价来自于从模型训练过程中移除的数据量。例如,在这里的说明性示例中,我们删除了30%的数据。 这意味着我们的模型在较小的数据集上训练,并且其误差可能高于我们在完整数据集上训练它的误差。在这种情况下,标准程序是使用留出集报告您的错误,然后使用所有数据训练最终模型。 在这种情况下报告的误差可能是保守的,整个模型的真实误差实际上较低。 这种保守的预测在实践中几乎总是比过度乐观预测更有用。

这种技术的一个关键是,必须真正地不分析留出数据,直到你有一个最终的模型。常见的错误是创建留出集,训练模型,在留出集上测试,然后在迭代过程中调整模型。 如果您在开发过程中重复使用留出集测试模型,则留出集会被污染。 其数据已被用作模型选择过程的一部分,并且不再给出真实模型预测误差的无偏估计。

优点

  • 没有参数或理论假设
  • 给定足够的数据,高度准确
  • 非常简单的实现
  • 概念上简单

缺点

  • 潜在保守偏差
  • 在模型完成之前使用留出集,导致污染
  • 必须选择保持集的大小(70%-30%是普通分割)

交叉验证和重采样

在某些情况下,像留出法要求那样留出数据集的重要部分的代价太高。作为解决方案,在这些情况下,可以使用基于重采样的技术,例如交叉验证。交叉验证通过将数据分成一组n个折叠来工作。 因此,例如,在具有100个数据点的5折交叉验证的情况下,将创建5个折叠,每个折叠包含20个数据点。 然后重复模型建立和误差估计过程5次。 每次组合四个组(产生80个数据点)并用于训练您的模型。 然后,不用于构建模型的第5组的20个点用于估计真实的预测误差。 在5倍交叉验证的情况下,您将最终得到5个误差估计,然后可以对其进行平均以获得真实预测误差的更强壮的估计。

可以看出,交叉验证非常类似于留出法。在不同的地方,每个数据点都用于训练模型和测试模型,但从不同时使用。在数据有限的情况下,交叉验证优于留出集,因为每次折叠中必须留出的数据少于纯保留方法中所需的数据。交叉验证还可以给出真实误差估计的可变性的估计,这是有用的特征。 然而,如果理解这种变化性是一个主要目标,其他重采样方法如Bootstrapping通常更优。

交叉验证的重要问题是使用多少折。基本上,折叠数越小,误差估计越偏,但是其变化越小。在极端例子下,您可以为每个数据点设置一个折叠,称为“留一法”。在这种情况下,您的误差估计本质上是无偏的,但它可能有高方差。 理解偏差 - 方差权衡在做出这些决定时很重要。要考虑的另一个因素是随着折叠次数增加导致计算时间的增加。对于每一个折叠,你必须训练一个新的模型,所以如果这个过程很慢,可能需要谨慎的使用。似乎在实践中,5倍或10倍交叉验证通常是有效的折叠尺寸。

优点

  • 没有参数或理论假设
  • 给定足够的数据,高度准确
  • 概念上简单

缺点

  • 计算密集
  • 必须选择折叠大小
  • 潜在保守偏差

选择

总之,这里有一些技术,你可以用来更准确地测量模型预测误差:

  • 调整后的 R2
  • 信息论技术
  • 留出样品
  • 交叉验证和重采样方法

建模者必须做出的一个基本选择是他们是否想依靠理论和参数假设来调整乐观参数。或者建模者是否想要使用数据本身以便估计乐观参数。

一般来说,基于假设的方法应用起来要快得多,但是这种方便的代价很高。首先,这些方法下的假设通常是错误的。 他们是多么错误,这个偏移结果有多大,取决于具体情况。 在许多情况下,错误可能是可以忽略的,但是从这些技术导出的结果需要评估者的很大的信任。

最后,在我自己的工作中,我喜欢基于交叉验证的方法。 交叉验证以最小的假设提供良好的误差估计。 交叉验证的主要代价是计算强度,但随着计算能力的快速增加,这个问题变得越来越无关紧要。根本上,参数假设的代价是,即使它们在大多数情况下是可以接受的,但是没有明确的方式来显示它们对特定情况的适用性。 因此,他们的使用提供了攻击线来批判一个模型,并对其结果产生怀疑。虽然交叉验证最初可能需要一段时间才能应用,但它在结果中提供了更多的信心和安全性。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档