这一章的内容是模型评价与选择断断续续看了两周时间
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这一章的内容是模型评估与选择,断断续续看了两周时间,感觉比看模型还费劲。其实这一章的大部分内容我是熟悉的,包括各种模型选择的准则,交叉验证以及bootstrap,这些在实际建模的时候也经常用到,但是关于其原理确实不是很清晰。这一章给出了详尽,但是又不那么理论的阐述。经典确实是经典。闲话不多说了,开始读书笔记。对于同一个问题,比如分类问题或者预测问题,往往会有一系列的模型都可以做。那么这些模型表现的如何,如何从这些模型中选择一个合适的,最好的模型,就成为了一个问题。而这个问题在实际中是非常重要的。我们都知道,模型是建立在训练样本上的,而预测是需要在一个独立的新的样本上进行的。在训练样本上所建立的模型,其在一个新的独立的样本上的表现如何进行评估,是一个非常重要的问题。这一章首先介绍了偏差(bias),方差(variance)以及模型复杂度(model complexity)。我们有一个target variable Y,以及输入向量X,以及通过训练样本得到的对于响应的估计(也就是我们的
模型)fˆ(X)。此外,我们还应该有一个损失函数L(Y,fˆ(X))。损失函数可以有多种选择,比如平方损失,绝对值损失,这两个主要是针对定量的响应的,对于定性的响应,也有0-1损失,对数似然之类的。一般而言,损失函数中比较常用的就是这些。有了模型以及损失函数之后,首先定义test error(原谅我在这里中英混杂,因为我发现用这种方法可以更好地区分几个不同的概念)。test error是损失函数在一个新的,
独立的检验样本上的期望。Err=E[L(Y,fˆ(X))]。这个期望的计算需要涉及到新的检测样本的联合分布。以上是test error的概念。于此对应的是training error的定义,training error是指在训练样本上的损失的平均值。errˉ=1N∑Ni=1L(y i,fˆ(x i))
上面的图综合的阐述了模型复杂度,偏差,方差之间的关系。从图中,我们可以看出,training error显然不是test error的一个好的估计。显然,training error都低估了test error。这个原因很容易解释,training error
所用的数据依然是建立模型用的数据,当然误差要小。另外,从这张图可以看出,随着模型复杂度的增加,training error是再不断减小的,而且如果模型足够复杂,是不会有training error的。这种现象,往往被称为过拟合。也就是说,拟合的太过头了。这也不是一个好现象。我们想要评估一个模型的好坏,想要知道的,肯定是test error。通常而言,我们对于解决某个问题,会有一族模型,这族模型有一个tuning parameter
α。我们记这族模型为fˆα(x)。通常这个tuning parameter是用以辨识模型复杂程度的。这一章的主要
任务是估计test error曲线。而通常的模型选择和评估大致分为两个步骤,先通过training error来选择模型,然后再通过test error评估模型。对于test error的估计,通常有两种策略。一种是解析的做法,比如AIC,BIC之类的。另外一种则是用交叉验证(cross-validation)或者bootstrap来估计。这两类方法也是本书这一章的主要的内容构成。在介绍这些方法之前,有必要先看一看bias-variance分解。
Err(x0)=σ2e+Bias2(f(x0))+Variance
通常而言,模型越复杂,bias越低,而方差variance则越高。关于这一部分,在之前的一篇笔记中已经通过一个图提到了,这里也不再详述。通常,training error都是小于test error的。Err在某种意义上是extra-sample error。若我们定义in-sample error,则training error对于test error的乐观估计则更好理解。
in-sample error的定义是Err in=1N∑L(Y newi,fˆ(x i))。则这个估计的乐观的部分如下定义
op=Err in−E y(errˉ)
而通过推到,我们可以得到(这个推到书上也没有,应该是某一系列论文中的成果,我们这里不具体推,只要知道这个结果就行)
Err in=E y(errˉ)+2N∑cov(y i,yˆi)
这个结果揭示了一个很重要的事儿,就是乐观估计的程度与估计值和真实值之间的相关性是密切相关的。写到这我也有点糊涂了,按理说,我们需要的是test error的估计,而现在,我们只需要来估计in-sample error 了。作者在这里说了一句话,
“In-sample error is not usually of direct interest since future values of the features are not likely to coincide with their training set value.But for comparison between models,in-sample error is convenient and often leads to effective model selection”
。那么我们就按照作者的经验,来开始对in-sample error进行估计吧。对于in-sample error的估计,有两
个不同的角度可以进行,一种是估计op,然后加到errˉ上即可。这也就是AIC,BIC的思路。另外一种就是利用重抽样,比如cross-validation或者bootstrap的策略,来估计in-sample error。下面的部分,就分别比较详细的介绍一下这些方法。C p统计量:
Errˆin=errˉ+opˆ
是通用的一个式子,不同的准则有对这个式子不同的估计,我们先来看最常用的C p准则。
C p=errˉ+2dNσ2e
这个公式适用于加法模型,而且如果估计值是线性的情况下。AIC准则:
AIC=−2Loglik+2dN.当损失函数对数似然损失函数的时候,这个准则比C p准则更加广义。其所依赖的理论是一个大样本性质,当N趋于无穷大的时候,
−2E[logPrθˆ(Y)]∼−2N E[loglik]+2dN
其中loglik=∑logPrθˆ(y i)
用AIC准则进行模型选择的时候,是选择AIC越小愈好。这一部分书中有一个简单的例子,但是很能说明问题,不在此多说了。BIC准则:
BIC=−2loglik+(logN)d
BIC准则的得来的motivate是非常不同的,选择BIC最小的模型,事实上是在选择后验概率最大的模型。BIC准则的得来,是通过bayes理论推导得到的。这里在书中也有具体的公式推导。MDL:minimum description length。这个部分,我几乎没怎么看明白,其核心是编码理论。以上是一些模型选择的准则。模型选择的准则都涉及到了模型有效参数的个数,因此,这一章也对这个问题做了一些讲解。包括7.6the effective number of parameters以及7.9的Vapnik-Chernovenkis dimension,都是主要讲了模型复杂度的度量。这两部分的内容我看的并不是很清晰,也没什么感觉。希望再读此书能有所收获。这次阅读,这部分我都略过了。以上的一些准则,都是对op的一个比较解析的估计。下面介绍两种通过重抽样的策略,来估计in-sample error的方法。cross-validation:
CV=1N sum Ni=1L(y i,fˆ−k(i)(x i))
交叉验证,就是把训练样本大致平均地分成K分,然后每次剔除一部分,用另外的部分进行模型构建,然后用剔除的那一部分来估计误差,这样做K次,然后平均K次的误差。通常而言,都是用5-cross validation 或者10-cross validation。当然还有每次剔除一个值,leave-one-out。如何选择K是一个问题,当K=N的时候,CV是预测误差的渐进无偏估计。但是方差可能会很大。当K比较小的时候,方差会比较小,但是偏差比较大,也是一个问题。作者说
"over-all five or ten fold cross-validation are recommended as a good compromise"
。拿来用用,比一比即可。bootstrap方法:这一部分我不想多说,在豆瓣里我有分享过关于bootstrap的