机器学习讲解(2)

本文介绍了机器学习中的模型选择策略,重点讨论了损失函数和风险函数,包括0-1损失、平方损失、绝对损失和对数损失。风险函数是衡量模型预测平均损失的指标,而经验风险则是在有限数据集上的近似。为避免过拟合,提出了结构风险最小化,它在经验风险上增加了模型复杂度的惩罚项。模型选择的目标是在防止过拟合的同时,寻找复杂度适当的模型,以最小化测试误差。
摘要由CSDN通过智能技术生成

参考书籍:  《统计学习方法 》(第二版) -------李航

这一章我们来讲一讲策略方面的问题,说白了,也就是如何从假设空间中选出最佳模型。

假设空间:假设空间即为所有可能的条件概率分布,而决定每个条件概率分布的参数向量则是由w和b构成的,所以所有可能的w和b构成参数空间。

这里,我们先讲解一下损失函数和风险函数,损失函数是度量一次预测的好坏,而风险函数是度量平均意义下模型预测的好坏。

1.损失函数和风险函数

(1)0 - 1损失函数:

$$P(x|Pa_x)=\begin{cases} 1, & x=f(Pa_{x})\\ 0, & other\ values \end{cases}$$

(2)平方损失函数

L(Y,f(X)) = (Y - f(X))^2

(3)绝对损失函数

L(Y,f(X)) = |Y - f(X)|

(4)对数损失函数

L(Y,P(Y|X)) = -logP(Y|X)

上面是几个常用的损失函数,当然,后面我们还会见到不同形式定义的损失函数,但是大部分都是大同小异,他们之所以是不同形式出现的,大部分是为了方便计算,比如说求导什么的。损失函数的值越小,就说明这个模型越好。

接下来我们就来说说风险函数:

                            Rexp(f) = Ep[L(Y,f(X))] = \int_{\chi * y} L(y,f(X))P(x,y)dxdy

这个函数的表达式虽然看起来很长,但是其实很好理解,它其实就是损失函数的期望,同时它又等于,模型的输入,输出(X,Y)的损失函数和X,Y的联合概率密度的乘积的积分。风险函数表述了在平均意义下的损失。一般来说,我们的学习目标就是找到风险函数(期望损失)最小的模型(因为它代表的是平均意义,我们期望平均意义上的损失最小,因为损失函数毕竟只是代表一次的损失)。

接上文:学习的目标就是找到期望风险最小的模型。但是我们发现了一个问题,我们上面的函数有联合概率,但是我们根本不知道X和Y有什么关系,那就相当于我们这个表达式其实没有什么作用。那么我们该怎么去解决这个问题呢?为了解决这个问题,我们引入另一个概念,那就是经验损失。

经验损失:

定义如下:模型f(X)关于训练数据集的平均损失称为经验损失或者经验风险,把它记做:Remp

其中,emp代表的意思是empirical,直译过来是经验主义的。注意我们上面给出的定义,是平均的,所谓平均的,其实就是在整个训练数据集上进行损失函数的计算,然后取一个平均值。表达式如下:

                                                Remp(f) = (\sum_{i = 1}^{N}L(yi,f(xi))) / N

我们之所以可以使用这个式子,这是因为当N趋近于无穷大的时候,根据大数定律(在我用的这本书上是切比雪夫定理来描述的,如果不太清楚是什么东西的兄弟,可以再回去补一下),经验风险是趋近于期望风险的。但是我们知道,数据是不可能无限的,所以在现实生活中,我们直接用经验损失去估计期望风险明显是有问题的。所以这时候为了弥补这些问题,我们想到了一个方法,那就是在经验风险上进行一定的矫正,于是就引出了经验风险最小化和结构风险最小化的这两个概念了。

经验风险最小化:说白了就是让我们上面给的这个式子Remp(f) = (\sum_{i = 1}^{N}L(yi,f(xi))) / N最小化,因为经验风险最小化的策略认为经验风险最小的模型就是最优的模型。这点其实很好理解,我们上面说了我们用经验风险来对期望风险进行评估,如果想要期望风险小,那么其实就是相当于让经验风险小。但是就像我们说的,这种类比是有条件的,什么意思?它必须要在数据量足够大的时候准确率才会不错,但是如果训练集的容量比较小,那么就很有可能出现"过拟合"现象。当训练集足够大的时候,经验风险最小化能保证有很好的学习效果,这也是为什么在现实种被广泛应用的原因。这里我们先对过拟合和欠拟合进行一下口头解释,这两个概念比较简单。经验风险最小化当损失函数选择对数损失函数的时候,经验风险最小化等价于最大似然估计。这里如果不知道的兄弟们可以看一下其他的贴子,这里暂时不做赘述。(主要原因是这个公式编辑器我没太用明白,抱歉/捂脸)

过拟合:对训练集的数据训练的十分完美(也就是说在训练集上正确率非常的高),但是在测试集上的表现比较糟糕,产生这点的原因是因为把训练集的数据训练的太"好"了,甚至于把一些噪声也训练到了,但是这些会在测试集上起到反作用。举个例子,比如我们测试一个人的体重和年龄的关系,但是我们数据集中加入了一些无关的项,比如说年龄,性别什么的,如果把这些也一同训练,可能就会起到反作用,反而让测试集中的数据的准确率下降。说白了,过拟合就是太过于依赖训练集,以至于把噪声都学进去了。这是一点原因。同时还有另外的一种原因,比如说你给的训练集实在是太少了,很多特征都没有学到啊,很多数据的特征还没有学习完全,这种也很好理解,很多特征没学好,自然在测试集中表现就比较差,就像你考试没有准备完全,而它又考的非常综合,就会导致你的正确率下降是一个道理,这也是会导致过拟合的原因。

欠拟合:对训练集的数据没有训练完全,很多训练集的特征都还没有学到啊。这种情况我们就可以增加模型的复杂度了,但是如果太过于复杂又会出现过拟合的问题,所以维持两者的平衡是非常重要的一件事情。所以在我看来,机器学习的一个非常重要的事情就是:调参,可以这么说,参数的调定对于模型的好坏有很重要的影响因素,比如决策树(暂时不用理解)这个模型,它的树的深度就是一个很重要的参数,它对模型的好坏有着较大的影响。

结构风险最小化:它是为了防止过拟合而提出的策略,它的实质其实就是给予惩罚。它的定义式:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        Rsrm(f)=( \sum_{i = 1}^{N}L(yi,f(xi)) ) / N + \lambda J(f)

其中J(f)是模型的复杂度,模型f越复杂。复杂度J(f)就越大,反之,如果模型f越简单,复杂度J(f)就越小。复杂度其实就代表了对复杂模型的惩罚。\lambda >= 0 是系数,用来权衡经验风险和模型的复杂度。结构风险化的要求就更加的严格,注意看,它有两项,第一项是经验风险,也就是我们前面提到的东西,同时它后面还有一项对模型复杂度的评估,也就相当于如果想要它比较小,不仅要求经验风险要小,也要求模型复杂度要小。虽然要求严格,但是要求严格带来的模型往往对训练数据以及未知的测试数据都有较好的预测。同时,结构风险最小化的策略认为结构风险最小的模型就是最优的模型。贝叶斯估计中的最大后验估计其实就是结构风险最小化的一个实例(贝叶斯估计请关注我后续的讲解,贝叶斯估计的代码部分请见我的贝叶斯算法,应该就在本人的主页,使用C++算法实现,有3种使用方法,如果有任何疑问或者想交流请与本人联系。)

由上面的知识,我们就可以引出模型选择的方法了。

模型选择:由前面我们对过拟合和欠拟合的叙述,我们知道,当模型的复杂度增大的时候,训练误差会减小并趋近于0,这个很好理解,因为你模型越来越复杂,我们取个极端情况,就是你这个模型把所有的训练集的东西全部包含进去了,那么最后训练的误差率肯定就是0了,而随着你模型的复杂度升高,一开始测试数据的预测误差会减小,这是因为你在慢慢学习到数据的特征,预测的正确率在逐渐提高,但是随着后续模型越来越复杂,你可能连噪声或者一些不必要的数据特征都学习到了,亦或者说你已经学习到了这个训练集数据的所有特征,但是还有一部分特征你并没有接触到(就是说没有在训练集中体现),如果这个时候你再增加模型的复杂度,就会导致过拟合现象的发生了。所以,在学习时就要防止过拟合,模型应该选择复杂度适当,以达到使测试误差最小的学习目的。

后续我将介绍几种常用的模型选择方法,请关注后续动态。

谢谢您的观看。如有问题,欢迎交流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值