损失函数-经验风险最小化-结构风险最小化

来源:互联网 发布:杨百万软件多少钱 编辑:程序博客网 时间:2024/05/01 15:26

zz from http://blog.sina.com.cn/s/blog_62b0682a0101e6lp.html

1、损失函数

最简单的理解就是,给定一个实例,训练的模型对它的预测结果错了,就要受到惩罚, 因此需要定义一个量度量预测错误的程度,而损失函数就是用来衡量错误的程度。常见的损失函数有如下几类(用机器学习笔记(二)基础知识2来表示损失函数):
假设输入是X,输出是f(X),真实值是Y。
(1)0-1损失函数(0-1 loss function)
     机器学习笔记(二)基础知识2
(2)平方损失函数(quadratic loss function)
     机器学习笔记(二)基础知识2
(3)绝对损失函数(absolute loss function)
    机器学习笔记(二)基础知识2
(4)对数损失函数(logarithmic loss function)
     机器学习笔记(二)基础知识2
2.传统的经验风险最小化
很容易看出来,损失函数越小,模型就越好,接下来用期望风险来描述模型在整个数据集上的损失,假设我们已经得到了数据的概率测度P(X,Y),那么就可以计算损失函数的期望即期望风险:
机器学习笔记(二)基础知识2
需要说明的是,这里假设数据集包含了所有可能的数据,即P(x,y)是已知的,显然这是不可能的,我们只能尽量多的获取数据集中的数据,但是不可能获得所有输入空间中的数据。有了期望风险学习的目标就确定了,即找到使期望风险最小的模型,但是就像前面说明的,全部数据的分布是未知的,那么求解期望风险的问题就是一个病态问题。那该怎么办呢,虽然我么不知道数据集的概率测度,但是我们拥有给定的一定的独立同分布的样本,因此,我们可以用模型f(x)在这个给定的样本集上的平均损失最小化来代替无法求得得期望风险最小化。
注意上面我们再一次提到了独立同分布,这样我们就不用考虑数据集的概率测度了,计算瞬间变简单了,当然,这肯定造成了一定的计算损失,但是结果还是可信的,可取的。
假设给定的数据集是:机器学习笔记(二)基础知识2
则经验风险或经验损失函数为:机器学习笔记(二)基础知识2
使用经验风险泛函最小的函数来逼近期望风险泛函最小的函数,这一原则成为经验风险最小化归纳原则(ERM原则)。
根据大数定律,当样本数趋于无穷大时,经验风险趋于期望风险。但是,在实际应用中,训练样本的个数是有限的,甚至还会很少,所以使用经验风险逼近期望风险的效果就不好了。
这里还涉及到一个学习理论的关键定理,该定理指出了ERM原则一致性的条件是必要的并且充分的取决于函数集中最坏的函数。这一块只要知道它指出了经验风险和期望风险的误差是有界的就行。
上面说到,对于小样本问题,经验风险效果并不理想,因为经验风险最小化容易带来过拟合现象。过拟合现象其实就是模型的选择太在意训练误差了,反而导致预测误差随着训练误差减小而增大,造成训练结果不理想。这里不再多说,可以到网上找一个多项式拟合的例子形象的理解。我也转了一篇关于过拟合的文章,解决过拟合问题是加入惩罚项或者增加数据。
3.结构风险最小化
为了解决经验风险最小化逼近引发的一系列问题,vpnik等几位大牛发展了现代的统计学习理论,提出了结构风险最小化,更加适合解决小样本问题,并且提出了寻找结构风险最小化的方法,这一套理论发展出了有名的分类器:基于VC维理论和结构风险最小化的支持向量机SVM,它能够更快更迅速的解决小样本问题,在大样本集上也有一些基于稀疏矩阵的改进方法,成为2000年来的研究热点之一。
首先要引入函数的VC维概念:
函数集Q(f)的VC维是指能够被集合中的函数以所有可能的机器学习笔记(二)基础知识2种方式分成两类的样本的最大数目h.另一个说法是:假如存在一个有h个样本的样本集能够被函数集中的函数按照所有可能的机器学习笔记(二)基础知识2方式分成两类,则称该函数集能把样本为h的样本集打散。VC维就是h的最大值,对于h+1,函数集就无法打乱了。对于线性函数,其VC维很简单,就是函数维数+1,。
定义N(f)代表函数集Q(f)中的函数能够把给定的样本分成多少种类,称H(f)=ln(N(f))为随机熵,描述了函数集在给定数据上的多样性,引入生长函数G(n)=ln(N(f)),则生长函数与VC维的关系为:
G(h)=hln2
G(h+1)小于(h+1)ln2
即生长函数或者是线性的,或者以对数为上界。如果函数集的生长函数是线性的,则函数集的VC维是无穷大的,因为函数集能够打散的数据集数目可以无限大,反之,如果生长函数是以参数h的对数函数为界,则函数集的VC维就是h。
VC衡量了一个函数集的复杂程度,VC维越大,函数集越复杂,虽然函数打散的样本数增加了,但是计算函数的复杂度却增加了,反而不能得到好的结果(引起过拟合),VC维越小,函数集越简单,求解速度快而且方便。支持向量机只关注对偶公示中参数不为0的支持向量的那些样本,因此VC维很小。奥卡姆剃刀原理:在所有可能选择的模型中,能够很好地解释已知数据并且十分简单的才是最好的模型。

引入VC维之后我们再去看看上面红色的部分,即经验风险和期望风险的误差是依概率有界的,通过一系列复杂的公示推导我们得到如下公式:
机器学习笔记(二)基础知识2   n为样本数,h为VC维
不等式右边第一项为经验风险,第二项为置信风险,是一个减函数,整个公示反映了经验风险和真实误差的差距上界,表征了根据经验风险最小化原则得到的模型的泛化能力。称为泛化误差上界。
上述公示表明:当样本数较大时,n/h很大,置信范围就会很小,经验风险最小化接近实际最优解,而当n/h比较小时,置信范围就会很大,经验风险最小化泛化能力就差。

结构风险=经验风险+置信风险,这部分会在SVM那一块仔细介绍。

在李航的书中讲到了模型选择两种典型方法,这里简单介绍一下:
a.正则化
正则化是结构风险最小化策略的实现,在经验风险上加一个正则化项,该项与模型复杂度相关或者模型VC维相关,复杂度越大,正则化值就越大。常用的正则化项有模型参数的范数等。
b.交叉验证
交叉验证的思想就是将训练数据集随机划分成若干个块,这些块称为训练集和验证集,训练集用于训练模型,验证集用于评判训练明星的好坏,在每一块上找到风险最小化函数,然后综合再把结果综合起来考虑。常见的交叉验证包括1/3和2/3划分,k-则交叉验证以及留一法。第一种方法取数据集的2/3进行训练,剩余1/3进行验证,第二种方法取k-1份训练,剩下一份验证,将可能的K种组合都做一次,因此共需要训练k次模型,留一法是k则交叉验证的极端情况,即K=N。

最后注意一下生成模型和判别模型的区别
生成模型更像是找到数据的组织形式,而判别模型是用实现固定好的模型模拟数据。
生成模型由数据学习到联合分布,然后求解条件概率分布,因此学习速度快且能更快的收敛到真实模型。
判别模型直接学习决策函数或条件概率,侧重于预测,因此准确率高。

0 0