星期五, 十一月 11, 2011

数据挖掘之你问我答(4/5)

注:本文是由Tim Graettinger的文章编译而来
问题四:我的模型在训练数据上表现很好,为什么在新数据上表现很糟?

你遇到的就是被称为“过度拟合”(over-fit)的典型症状。通常是在为稀有事件建模时较为容易产生这种问题,例如发动机故障预测。

当某种输出结果非常罕见(如百分之一或千分之一)时,就会倾向于建立很复杂的模型。复杂的模型会有很多参数,用来预测或者说“适应”训练数据。问题是,该模型包含了训练数据所独有的特征,但在其它地方并不一定适用。这就像为你自己量身定制的衣服只适合于你自己,但并不适合其他人。在建模的世界里出现过度拟合是糟糕的。我们要构建的是稳健的、能概括新数据的模型。

你能做些什么呢?

首先,要将样本进行随机划分,分别建立训练、测试和验证这三个数据集。这样,你可以检测出模型的过度拟合问题。

其次,计算模型的拟合比率。计算这个比率先要估计你的模型中的参数。例如有10个输入变量(自变量)的logistic回归模型,加上常系数的话该模型有11参数。或者一个BP神经网络有10个输入单元和5个隐层单元,那么模型就有61个系数。然后,根据你的样本数据计算稀有事件的样本数。这样可以计算出拟合比率为:
  FR = NMC / NP
NMC是稀有事件的样本数,NP是模型参数的数量,FR是计算出的拟合比率。一般来说,要构建一个真正稳健的模型,你需要使这个比率大于100,理想情况应该大于1000。(那么11个参数的logistic回归模型就至少得有1100个样本数据对应最低频数的输出结果)。

第三,比较模型在训练数据和测试数据的性能差异。如果模型在这两组数据的表现相差不大(小于5%以内),那么还不错。如果相差较大就可能过度拟合了。你需要对模型进行修改和调整。该怎么调整呢?这些调整工作必须增加前文所讲的拟合比率,可以通过两种方式来进行:
  • 减少的模型参数
  • 提高稀有事件的样本数量
第一个选项迫使你简化模型。例如,可以删除一些logistic回归模型中的的输入变量,或者神经网络中的隐藏层元素。我的习惯是一边删除输入变量,一边重建和检测模型。要记住,简化模型在训练数据的表现将相对之前较差。因为你初始的模型过度拟合数据,而现在该模型参数减少,泛化能力增强,更具灵活性。我们的目标是希望看到简化后的模型在测试数据中表现有所改善。这才是真正有意义的。

第二个选项,增加稀有事件的样本数,这可能需要更多的时间和精力成本,但收益可能很大。

没有评论:

发表评论