10.5 模型的过拟合及对策

模型的过拟合(Over Fitting)是指模型在训练集里的表现让人非常满意,但是一旦应用到真实业务实践中,效果会大打折扣。换成学术化语言描述,就是模型对样本数据拟合得非常好,但是对于样本数据外的应用数据,拟合效果非常差。在数据分析挖掘业务实践中,即为模型搭建时的表现看上去非常好,但是应用到具体业务实践时,模型的效果显著下降,包括准确率、精度、效果等都显著下降了。

过拟合现象是数据挖掘中常见的一种挫折,尤其是在预测响应(分类)模型的应用场景里。在模型的实践应用中如果发生了模型的过拟合,不仅会大幅度降低模型的效果和效率,也会严重浪费运营业务资源,同时,还会严重打击数据分析师的自信心和影响力。所以,数据分析师应该比较清楚地了解过拟合产生的主要原因以及可以采用的相应措施,尽量去避免过拟合的发生。

总的来说,过拟合产生的主要原因如下:

❑建模样本抽取错误。包括但不限于样本数量太少,抽样方法错误,抽样时没有足够正确地考虑业务场景或业务特点等,以致抽出的样本数据不能足够有效地代表业务逻辑或业务场景。

❑样本里的噪声数据干扰过大。样本噪声大到模型过分记住了噪声特征,反而忽略了真实的输入输出间的关系。

❑在决策树模型的搭建过程中,如果对于决策树的生长没有合理的限制和修剪,由着决策树自由的生长,那有可能会使每片叶子里只包含单纯的事件数据(Event)或非事件数据(No Event)。可以想象,这种决策树当然是可以完美匹配(拟合)训练数据的,但是一旦应用到新的业务真实数据中,效果就会一塌糊涂。

❑建模时的逻辑假设到了应用模型时已经不能成立了。任何预测模型都是在假设的基础上才可以搭建和应用的,常用的假设包括:假设历史数据可以推测未来,假设业务环节没有发生显著变化,假设建模数据与后来的应用数据是相似的等。如果上述假设违反了业务场景,那么根据这些假设搭建的模型当然是无法有效应用的。

❑建模时使用了太多的输入变量。这同第二点噪声数据有些类似,数据挖掘新人常常犯这个错误,自己不做分析判断,把所有的变量交给软件或者机器去“撞大运”。须知,一个稳定优良的模型一定要遵循建模输入变量少而精的原则。

上面的原因都是现象,其实本质只有一个,那就是对业务理解错误造成的,无论是抽样,还是噪声,还是决策树、神经网络等,如果我们对于业务背景和业务知识了解得非常透彻,一定是可以避免绝大多数过拟合现象产生的。因为在模型从确定需求、思路讨论、搭建到业务应用验证的各个环节中,都是可以通过业务敏感来防止过拟合产生的。

入世,出世,都是一样的道,所谓的道从来不曾离开我们半步,只是看我们自身是否足够清净,足够醒悟,足够真实而已。佛法有八万四千法门,不过是不同的方便路径,归根结底,佛法的根本只是认识我们与生俱来的本来面目,真如自性。

过拟合的产生,有种种原因,不一而足,对其进行分类和剖析只是为了方便而已,防止过拟合的终极思路就是真正透彻理解业务背景和业务逻辑,有了这个根本,我们一定可以正确抽样,发现并排除噪声数据,一定可以在决策树、神经网络等算法中有效防止过拟合的产生。

当然,除了透彻了解业务本质外,还有一些技术层面的方法来防止过拟合的产生,虽然是“术”层面上的内容,但是很多人热衷于这些技巧,所以,在这里也顺便讲解如下:

❑最基本的技术手段,就是合理、有效地抽样;包括分层抽样、过抽样等,从而用不同的样本去检验模型。

❑事前准备几个不同时间窗口、不同范围的测试数据集和验证数据集,然后在不同的数据集里分别对模型进行交叉检验,这是目前业界防止过拟合的最常用的手段。

❑建模时目标观测值的数量太少,如何分割训练集和验证集的比例,需要建模人员灵活掌握。

❑如果数据太少,谨慎使用神经网络模型,只有拥有足够多的数据,神经网络模型才可以有效防止过拟合的产生。并且,使用神经网络时,一定要事先有效筛选输入变量,千万不能一股脑把所有的变量都放进去。