我们在做机器学习模型的时候,训练完模型后,往往需要对模型进行性能评估,进行选择,数值预测模型的评估,有以下的常用评估指标:
其实这些线性回归的评估指标万变不离其宗都离不开二个核心的数值,偏差与方差,说白就是在评估模型的时候,如果评估指标效果理想,就要想办法降低偏差与方差的数值。
这里重点解释一下偏差与方差
泛化误差可以分解成偏差的平方加上方差加上噪声。
偏差:度量了学习算法的期望预测和真实结果的偏离程度,刻画了学习算法本身的拟合能力。
方差:度量了同样大小的训练集的变动所导致的学习性能的变化,刻画了数据扰动所造成的影响,噪声表达了当前任务上任何学习算法所能达到的期望泛化误差下界,刻画了问题本身的难度。
偏差和方差一般称为bias和variance,一般训练程度越强,偏差越小,方差越大,泛化误差一般在中间有一个最小值,如果偏差较大,方差较小,此时一般称为欠拟合,而偏差较小,方差较大称为过拟合。
这是一张常见的靶心图。可以想象红色靶心表示为实际值,蓝色点集为预测值。在模型不断地训练迭代过程中,我们能碰到四种情况:
通常我们在选择偏差与方差作为评估指标的时候,其实就是把模型的误差看成是
误 差 = 方 差 + 偏 差 2 + 噪 声 误差=方差+偏差^2+噪声 误差=方差+偏差2+噪声
数学推导如下:
我们假设有训练数据集 S = ( x i , y i ) S={(x_i,y_i)} S=(xi,yi)
令 y i = f ( x i ) + ε y_i = f(x_i) + ε yi=f(xi)+ε,为实际方程,其中ε是满足正态分布均值为0,标准差为σ的值。
假设预测方程为 h ( x ) = w x + b h(x) = wx + b h(x)=wx+b,这时我们希望总误差
E r r ( x ) = ∑ i = 0 n ( y i − h ( x i ) ) 2 Err(x) = \sum_{i=0}^n(y_i - h(x_i))^2 Err(x)=∑i=0n(yi−h(xi))2 能达到最小值,这里可以把这个问题理解为求期望 E [ y i − h ( x i ) ] 2 E[y_i - h(x_i)]^2 E[yi−h(xi)]2最小值
求解 E r r ( x ) Err(x) Err(x):
E [ y − h ( x ) ] 2 = E [ y 2 − 2 y h ( x ) + h ( x ) 2 ] E [y - h(x)]^2 = E [y2 - 2yh(x) + h(x)^2] E[y−h(x)]2=E[y2−2yh(x)+h(x)2]
= E [ y 2 ] − 2 E [ y ] E [ h ( x ) ] + E [ h ( x ) 2 ] = E [y2] - 2E[y] E[h(x)] + E[h(x)2] =E[y2]−2E[y]E[h(x)]+E[h(x)2]
= E [ ( y − y ) 2 ] + y 2 − 2 E [ y ] h ( x ) + E [ ( h ( x ) − h ( x ) ) 2 ] + h ( x ) 2 = E [(y - y)^2] + y^2 - 2E[y]h(x) + E [(h(x) - h(x))^2] + h(x)^2 =E[(y−y)2]+y2−2E[y]h(x)+E[(h(x)−h(x))2]+h(x)2
= E [ ( y − ( f x ) ) 2 ] + f ( x ) 2 − 2 f ( x ) h ( x ) + E [ ( h ( x ) − h ( x ) ) 2 ] + h ( x ) 2 = E [(y - (fx))^2] + f(x)^2 - 2f(x)h(x) + E [(h(x) - h(x))^2] + h(x)^2 =E[(y−(fx))2]+f(x)2−2f(x)h(x)+E[(h(x)−h(x))2]+h(x)2
= E [ ( h ( x ) − h ( x ) ) 2 ] + ( h ( x ) − f ( x ) ) 2 + E [ ( y − ( f x ) ) 2 ] = E [(h(x) - h(x))^2] + (h(x) - f(x))^2 + E[(y - (fx))^2] =E[(h(x)−h(x))2]+(h(x)−f(x))2+E[(y−(fx))2]
= v a r i a n c e + b i a s 2 + n o i s e = variance + bias^2 + noise =variance+bias2+noise
一般来说,随着模型复杂度的增加,方差会逐渐增大,偏差会逐渐减小。
低偏差,高方差:
高偏差,低方差
备注:通过好的模型验证方法,比如通过交叉验证法(可以解决了variance不同训练集学得的函数的差异,bias不同函数的平均值)的问题。
能更准确反映模型的误差,更精确的做误差分析
具体方法有:
我相信很多做机器学习算法模型的同学,都会疑惑我做好的模型,选择好了评估指标,最终得到的数值,我怎么去衡量这个数值对于模型性能来说是好是坏。
对于像均方误差、平均绝对误差、方均根差这样的评估指标是不能够告诉你,这个模型性能是否好坏的,它们的作用之一,是用来做比较的。也就是说,在优化模型或者更改一下模型参数后,用这些指标,对模型前后的指标数值进行对比。
在线性回归模型中起到决定性评估模型好坏的指标是R平方
具体可以参考这篇文章
决定系数R方是否越大越好?