评估模型

2016-04-10 Borg 更多博文 » 博客 » GitHub »

数据分析 回归分析 笔记

原文链接 https://bigborg.github.io/2016/04/10/note-ml-course2-week3/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


如何评估一个回归模型

loss function

首先定义loss function,即预测错误带来的损失,通常使用y-yhat的绝对值或者平方。但不绝对,比如在预测放假时如果估值过高,则可能完全卖不出去,带来的损失更大,因此可以定义loss function使估值过高带来的loss比估值过低带来的loss更大。 loss function

然后看到一句很有意思的话: quote

training error, generalization error, test error

training error

training error的计算方式: quote

以下是以suare error为例(再次强调是loss function,不一定是error的平方): quote

随着模型复杂度增加,traing error会不断减少 quote

generalization error

generalization error的定义,注意对于每一对(x,y)要乘上相应的概率。就是说,generlization error是对于每一个可能的(x,y)求loss,即整体population的loss的期望值。举例来说,现实生活中的房屋面积分布,离均值越远,概率越小,所以对loss的期望值影响也应当越小。 quote

那么实际上由于现实生活中的房屋不能全部调查,所以generalization error是没法计算的。不过理论上,随着模型复杂度增加,首先呈减小趋势,随后由于overfitting,generlization error又增加。 quote

test error

test error就不用说了,跟training error一样,只是用test data计算。由于generalization error无法计算,所以可以用test error估计。由于是估计,所以会有偏差,于是就是沿着generalization error上下波动了。 quote

3 source of error

error有三个来源:noise, bias, variance quote

noise

由于模型不可能完全反应客观世界,比如预测房价时不可能把邻居,卫生间数,车库等所有因素考虑进来,所以noise是必然存在的。 quote

bias

选择一个模型复杂度,如果使用的traing data不同,那么得到的模型也会有所不同。把所有可能的training data训练的到的模型取平均,并与理想的真实能反应客观的模型对比。 quote
quote
当模型复杂度低的时候bias高,模型复杂度高的时候bias低(虽然overfitting,但是由于取了平均,所以bias还是降低的) quote
quote

variance

如bias部分所述,固定复杂度,当得到的training data不同时训练得到的模型也有所不同。这些模型之间的差异就是variance。 quote

当模型复杂度增加,由于overfitting,只要改变一两个样本点就会对模型产生很大的影响,于是variance就增加。 quote
quote
quote

Again,bias和variance不能实际计算出来,而用MSE(Mean Square Error,即square error的期望值)来衡量总的error。 quote

下图是随获得的数据集越大,training error和true error(即generalization error)的变化。注意在固定的模型复杂度下,数据集较少时traing error是较低的,但随着数据集越大,模型渐渐不能反应traing data,于是training error增大。随着数据集越来越大,training data实际是趋于与实际的population相等,于是两条曲线有共同的极限,该极限值是由于bias和noise造成的。 quote