机器学习——损失函数,风险函数,误差,模型选择方法

损失函数

监督学习问题是在假设空间 F \mathcal F F 中选取模型 f f f 作为决策函数,对于给定的输入 X X X,由 f ( X ) f(X) f(X) 给出相应的输出 Y Y Y,这个输出的预测值 f ( X ) f(X) f(X) 与真实值 Y Y Y 可能一致也可能不一致,用一个损失函数或代价函数来度量预测错误的程度。损失函数是 f ( X ) f(X) f(X) Y Y Y 的非负实值函数,记作 L ( Y , f ( X ) ) L(Y,f(X)) L(Y,f(X))

常用的损失函数有以下几种:

0-1 损失函数

L ( Y , f ( X ) ) = { 1 ,        Y ≠ f ( X ) 0 ,        Y = f ( X ) L(Y,f(X))= \begin{cases} 1,\;\;\; Y\ne f(X) \\ 0,\;\;\; Y=f(X) \end{cases} L(Y,f(X))={ 1,Y̸=f(X)0,Y=f(X)

平方损失函数

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

绝对损失函数

L ( Y , f ( X ) ) = ∣ Y − f ( X ) ∣ L(Y,f(X))=|Y-f(X)| L(Y,f(X))=Yf(X)

对数损失函数(对数似然损失函数)

L ( Y , f ( X ) ) = − log ⁡ P ( Y ∣ X ) L(Y,f(X))=-\log P(Y|X) L(Y,f(X))=logP(YX)
损失函数值越小,模型就越好。由于模型的输入、输出 ( X , Y ) (X,Y) (X,Y) 是随机变量,遵循联合分布 P ( X , Y ) P(X,Y) P(X,Y),所以损失函数的期望是:
R e x p ( f ) = E p [ L ( Y , f ( X ) ) ] = ∫ X × Y L ( y , f ( x ) ) P ( x , y ) d x d y R_{exp}(f)=E_p[L(Y,f(X))]=\int_{\mathcal{X\times Y}}L(y,f(x))P(x,y)dxdy Rexp(f)=Ep[L(Y,f(X))]=X×YL(y,f(x))P(x,y)dxdy这是理论上模型 f ( X ) f(X) f(X) 关于联合分布 P ( X , Y ) P(X,Y) P(X,Y) 的平均意义下的损失,称为风险函数期望损失。学习的目标就是选择期望风险最小的模型。

风险函数

经验风险

给定一个训练数据集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} T={ (x1,y1),(x2,y2),...,(xN,yN)}模型 f ( X ) f(X) f(X) 关于训练数据集的平均损失称为经验风险经验损失,记作 R e m p R_{emp} Remp
R e m p ( f ) = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) R_{emp}(f)=\frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i)) Remp(f)=N1i=1NL(yi,f(xi))期望风险 R e x p ( f ) R_{exp}(f) Rexp(f) 是模型关于联合分布的期望损失,经验风险 R e m p ( f ) R_{emp}(f) Remp(f) 是模型关于训练样本集的平均损失。根据大数定律,当样本容量 N N N 趋于无穷时,经验风险 R e m p ( f ) R_{emp}(f) Remp(f) 趋于期望风险 R e x p ( f ) R_{exp}(f) Rexp(f)

结构风险

结构风险在经验风险上加上表示模型复杂度的正则项或罚项。在假设空间、损失函数以及训练数据集确定的情况下,结构风险的定义是:
R s m ( f ) = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) + λ J ( f ) ) R_{sm}(f)=\frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i))+\lambda J(f)) Rsm(f)=N1i=1NL(yi,f(xi))+λJ(f))其中 J ( f ) J(f) J(f) 为模型的复杂度,是定义在假设空间 F \mathcal F F 上的泛函。模型越复杂, J ( f ) J(f) J(f) 越大。

风险最小化

经验风险最小化

经验风险最小化的策略认为,经验风险最小的模型是最优模型:
min ⁡ f ∈ F 1 N ∑ i = 1 N L ( y i , f ( x i ) ) \min_{f\in \mathcal F} \frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i)) fFminN1i=1NL(yi,f(xi))其中, F \mathcal F F 是假设空间。

当样本容量足够大时,经验风险最小化能保证有很好的学习效果,在现实中被广泛采用。当模型是条件概率分布,损失函数是对数损失函数时,经验风险最小化就等价于极大似然估计。

但是,当样本容量很小时,经验风险最小化学习的效果容易“过拟合”,因此为了防止出现过拟合现象,提出了结构风险最小化。

结构风险最小化

结构风险最小化等价于正则化,认为结构风险最小的模型是最优的模型。所以求最优模型就是求解最优化问题:
min ⁡ f ∈ F 1 N ∑ i = 1 N L ( y i , f ( x i ) ) + λ J ( f ) ) \min_{f\in \mathcal F} \frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i))+\lambda J(f)) fFminN1i=1NL(yi,f(xi))+λJ(f))当模型是条件概率分布、损失函数是对数损失函数、模型复杂度由模型的先验概率表示时,结构风险最小化就等价于最大后验概率估计。

误差

训练误差

假设学习到的模型是 Y = f ^ ( X ) Y=\hat f(X) Y=f^(X),训练误差是模型 Y = f ^ ( X ) Y=\hat f(X) Y=f^(X) 关于训练数据集的平均损失:
R e x p ( f ^ ) = 1 N ∑ i = 1 N L ( y i , f ^ ( x i ) ) R_{exp}(\hat f)=\frac{1}{N}\sum_{i=1}^NL(y_i,\hat f(x_i)) Rexp(f^)=N1i=1NL(yi,f^(xi))其中 N N N 是训练样本容量。

测试误差

测试误差是模型 Y = f ^ ( X ) Y=\hat f(X) Y=f^(X) 关于测试数据集的平均损失:
e t e s t = 1 N ′ ∑ i = 1 N ′ L ( y i , f ^ ( x i ) ) e_{test}=\frac{1}{N^{'}}\sum_{i=1}^{N^{'}} L(y_i,\hat f(x_i)) etest=N1i=1NL(yi,f^(xi))其中 N ′ N^{'} N 是测试样本容量。

训练误差的大小,对判断给定的问题是不是一个容易学习的问题是有意义的,但本质上不重要。测试误差反映了学习方法对未知的测试数据集的预测能力,是学习中的重要概念。显然,测试误差小的方法具有更好的预测能力,通常将学习方法对未知数据的预测能力称为泛化能力

过拟合

如果一味追求提高对训练数据的预测能力,所选模型的复杂度则往往会比真模型更高,这种现象称为过拟合。过拟合是指学习时选择的模型所包含的参数过多,以致于出现这一模型对已知数据预测很好,但对未知数据预测差的现象。

当模型复杂度增大时,训练误差会逐渐减小并趋于0;而测试误差会先减小,达到最小值后又增大。

模型选择方法

正则化

正则化是结构风险最小化策略的实现,在经验风险上加入一个正则化项或罚项。正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化值就越大。正则化一般具有如下形式:
min ⁡ f ∈ F 1 N ∑ i = 1 N L ( y i , f ( x i ) ) + λ J ( f ) ) \min_{f\in \mathcal F} \frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i))+\lambda J(f)) fFminN1i=1NL(yi,f(xi))+λJ(f))第2项正则化项可以取不同的形式,例如可以是参数向量的 L 2 L_2 L2 范数、 L 1 L_1 L1 范数:
L ( w ) = 1 N ∑ i = 1 N ( f ( x i ; w ) − y i ) 2 + λ 2 ∥ w ∥ 2 L ( w ) = 1 N ∑ i = 1 N ( f ( x i ; w ) − y i ) 2 + λ ∥ w ∥ 1 L(w)=\frac{1}{N}\sum_{i=1}^N(f(x_i;w)-y_i)^2+\frac{\lambda}{2} \lVert w \rVert ^2 \\ L(w)=\frac{1}{N}\sum_{i=1}^N(f(x_i;w)-y_i)^2+\lambda\lVert w \rVert _1 L(w)=N1i=1N(f(xi;w)yi)2+2λw2L(w)=N1i=1N(f(xi;w)yi)2+λw1正则化符合奥卡姆剃刀原理:在所有可能选择的模型中,能够很好地解释已知数据并且十分简单才是最好的模型。

交叉验证

交叉验证的基本想法是重复地使用数据,把给定的数据进行切分,将切分的数据集组合为训练集与测试集,在此基础上反复地进行训练、测试以及模型选择。简单交叉验证改变的是训练环境, S \bf\mathcal S S 折交叉验证和留一交叉验证改变的是训练数据。

简单交叉验证

简单交叉验证方法是:首先随机地将已给数据分为训练集和测试集(例如70%train+30%test)然后用训练集在各种条件下训练出不同模型,再测试集上评价各个模型的测试误差,最后选择测试误差最小的模型。

S 折交叉验证

应用最多的是 S \mathcal S S 折交叉验证:首先随机地将已给数据切分为 S \mathcal S S 互不相交的大小相同的子集;然后利用 S − 1 \mathcal S-1 S1 个子集的数据训练模型,利用余下的子集测试模型;将这一过程对可能的 S \mathcal S S 种选择重复进行;最后选出 S \mathcal S S 次评测中平均误差最小的模型。

留一交叉验证

S \mathcal S S 折交叉验证的特殊情况,当 S = N \mathcal S=N S=N 时, N N N 是给定数据集的容量,留一交叉验证往往在数据缺乏的情况下使用。

参考文献

[1] 李航. 统计学习方法. 清华大学出版社. 2012

猜你喜欢

转载自blog.csdn.net/qq_38021750/article/details/90053147