模型过拟合及模型泛化误差评估

今天我们来深入探讨过拟合的一些高阶知识。

对于分类模型,我们总希望它是有低的训练误差和低的泛化误差。那么过拟合的产生机理中有哪些有意思的东西?在建立一个分类模型的过程中我们暂时对检验数据集一无所知(也就是暂时得不到真正泛化误差),那么此时我们是如何估计泛化误差的?

我们的目录:

目录

一、过拟合产生原因

二、过拟合与多重比较过程

三、泛化误差估计


一、过拟合产生原因

噪声导致过拟合:1、被错误标记的样本形成的噪声。那真的是自己粗心大意的锅,无话可说了。2、有些特例,比如有些会飞的动物也会游泳,那就尴尬了,这种没有事先知识的特例,是允许存在的,是不可避免的,它也决定了分类器可以达到的最小错误率。

缺乏代表性样本导致过拟合:这个是最常见的现象,大家也很了解了。此处就不废话。

二、过拟合与多重比较过程

我们来看下Pang-Ning Tan等学者是如何举例描述过拟合和多重比较过程的关系的:(需要大家先了解决策树算法:《决策树算法简介及其MATLAB实现代码》、《决策数算法进阶:属性测试条件、最佳划分度量、过拟合现象的处理》)

三、泛化误差估计

为什么我们要加“估计”这个词呢?因为在建立分类模型的过程中,我们只用到数据集,可以得到训练误差,但是暂时无法知道真正的泛化误差。所以我们在建立过程中只能“估计”一下泛化误差大概是多少。但是这估计也不是根据训练误差直接就能完成的,我们还需要同时考虑模型的复杂度。因为现在公认的一个知识是:模型越复杂,往往包含冗余的附加条件越多,即那些越可能造成过拟合的因素越多。根据这些前提知识,前辈们设计了几种泛化误差的估计方法:

1、使用再代入估计(训练误差)

这种方法假设数据集可以很好地代表整体的数据,因此直接使用训练误差提供对模型的泛化误差进行乐观估计。

但是,这种方法的结果通常是一种很差的估计。。

2、结合模型复杂度

上面讲到,模型越复杂,出现过拟合的几率越高。因此需要结合考虑模型的复杂度。

奥卡姆剃刀(Occam's razor)或节俭原则(principle of parsimony)

奥卡姆剃刀是很直观的原则,它的定义是:两个具有相同泛化误差的模型,较简单的模型比复杂模型更可取。

把模型复杂度和分类模型评估结合在一起的方法有两种:悲观误差评估和最小描述长度原则

悲观误差评估:

使用训练误差e和模型复杂度惩罚项Ω的和来估计泛化误差。t是决策树某个结点,k是决策树叶子结点数,N是训练记录数(数据总数)。

最小描述长度(MDL)原则:

对于一组数据,如果要对其进行保存,为了节省空间,一般采用某种模型对数据进行编码压缩,然后在保存压缩后的数据。同样,为了以后能够正确恢复这些数据,还需要将用于编码压缩的模型也保存起来。因此,保存一组数据的总描述长度就是实例数据编码压缩后的长度加上模型的长度。而最小描述长度要做的事情就是,选择“恰当”的模型,使得数据总描述长度最小。(来自知乎

关于MDL还有一些参考链接:

维基百科的解释:https://zh.wikipedia.org/wiki/最小描述長度

《神经网络与机器学习》第3版第二章:http://book.51cto.com/art/201101/244272.htm

开销函数=模型编码的开销+误分类记录编码的开销。

我们要做的就是寻找最小化开销函数的模型。

看一道习题:

3、估计统计上界

泛化误差也可以用训练误差的统计修正来估计。因为泛化误差倾向于比训练误差大,所以统计修正通常是计算训练误差的上界。

例如,用正态分布近似二项分布,可推导出错误率e的上界是:

4、使用确认集

这个方法把原始的训练数据集氛围两个较小的子集(训练集和确认集),如2/3用于训练,1/3用于误差估计。

此方法常常用于通过参数控制获得具有不同复杂度模型的分类技术。通过调整学习算法中的参数(如决策树中剪枝的程度),直到其产生的模型在确认集上达到最低的错误率,可以估计最佳模型的复杂度。

这个方法在不知道验证集的情况下,提前为模型提供了位置样本。但是用于训练的样本变少了,也会产生问题。所以,没有完美的办法。

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/lyxleft/article/details/84484292