机器学习札记3——《统计学习方法》第一章(2)

浏览: 1192

模型评估和选择

训练误差和测试误差

假设学习模型是Y=\hat{f}(X),训练误差是模型关于训练数据集的平均损失:R_{emp}(\hat{f})
R_{emp}(\hat{f})=\frac{1}{N}\sum_{i=1}^NL(y_i,\hat{f}(x_i))其中N是训练样本的容量
训练误差是关于数据集的平均损失:e_{test}=\frac{1}{N'}\sum_{i=1}^{N'}L(y_i,\hat{f}(x_i))其中N'是测试样本的容量

当损失函数是0-1损失时,测试误差就变成了常见的测试数据集上的误差率error ratee_{test}=\frac{1}{N'}\sum_{i=1}^{N'}I(y_i \neq {\hat{f}}(x_i))
I是指示函数,即y\neq{\hat{f}}(x)时为1,否则为0;相应的测试集上的准确率为r_{test}=\frac{1}{N'}\sum_{i=1}^{N'}I(y_i = {\hat{f}}(x_i))
明显的:r_{test} + e_{test}=1

总结

  • 测试误差反应了学习方法对未知的测试数据集的预测能力
  • 通过学习方法对未知数据的预测能力称为泛化能力

过拟合与模型选择

过拟合:一味地追求提高对训练数据的预测能力,所选模型的复杂度会比真实模型高,这种现象称之为过拟合

  • 过拟合是指学习时选择的参数过多
  • 过拟合对已知数据能够很好的判断,但是对未知数据预测的效果很差
  • 模型选择的目的在于避免过拟合并且提高模型的预测能力

栗子:对M次多项式进行拟合f_M(x,w)=w_0+w_1x+w_2x^2+...+w_Mx^M=\sum_{j=0}^Mw_jx^j

image.png



解决办法:

  • 确定模型的复杂度,即多项式的次数
  • 在给定的模型复杂度下,根据经验风险最小的策略,求解参数,即多项式的系数
  • 经验风险最小化L(w)=\frac{1}{2}\sum_{i=1}^{N}(f(x_i,w)-y_i)^2
  • 损失函数是平方损失,系数\frac{1}{2}是为了后续的求导计算。
  1. 在多项式拟合中,训练误差随着多项式系数即模型复杂度的增加而减小
  2. 测试误差随着模型复杂度的增加先减小后增加
  3. 优化的目的:使得测试误差达到最小
  4. 当模型的复杂度过大,就会出现过拟合的现象,使用正则化和交叉验证来解决

image.png

正则化

模型选择的典型方法是正则化。正则化是结构风险最小化策略的实现,在经验风险的基础上加上了一个正则项regularrizer或者罚项penalty term。正则化的一般形式\mathop{min}\limits_{f\in \Gamma}\frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i))+\lambda J()

  • 第一项是经验风险
  • 第二项是正则化项
  • 两者构成了结构风险
  • \lambda是正则化系数
  • 正则化项具有不同的形式:比如回归问题中,参数向量的L_1范数L(w)=\frac{1}{N}\sum_{i=1}^N(f(x_i;w)-y_i)^2+\lambda ||w||_1或者表示成参数向量的L_2范数L(w)=\frac{1}{N}\sum_{i=1}^N(f(x_i;w)-y_i)^2+{\frac{\lambda}{2}||w||^2}

正则化作用:选择经验风险和模型复杂度同时较小的模型

交叉验证

普通模型选择方法

进行模型选择的一般做法是指将数据集分成三个部分:

  • 训练集training set
    • 作用是训练模型
  • 验证集validation set
    • 作用是用于模型的选择;一般数据足够多
  • 测试集test set
    • 对学习方法的评估

在学习到不同复杂度的模型中,选择对验证集有最小预测误差的模型

简单交叉验证

交叉验证cross validation的做法是数据分成两部分:

  • 训练集 70%
  • 测试集 30%

通过训练集在不同的条件下进行模型的训练,从而得到模型,再把测试集数据放入模型进行评估,选择出测试误差最小的模型

S折交叉验证

S-fold cross validation 的做法是:

  • 将数据随机分成S个互不相交、大小相同的子集
  • 利用S-1个子集进行训练
  • 利用剩下的子集进行测试
  • S中选择重复进行
  • 最后选择S次评测中测试误差最小的模型

留一交叉验证

S折交叉验证的特殊情形是S=N,变成留一交叉验证 leave-ont-out cross validation,往往是在数据缺乏的情况下使用

泛化能力

什么是泛化误差

学习方法的泛化能力是指由学习方法得到的模型对未知数据的预测能力,是学习方法重要的性质。通常是采用通过测试误差来评估学习方法的泛化能力。缺陷是

  • 过于依赖于测试数据
  • 测试数据是有限的,评估结果未必可靠

如果学到的模型是\hat{f},用该模型对未知数据预测的误差称为泛化误差generalization error,通过泛化误差来反映学习的泛化能力:
\begin{align} R_{exp}(f) & = E_P[L(Y,\hat{f}(X))]\\ & = \int_{X{\times}Y}{L(y, \hat{f}(x))P(x,y)}{\rm d}x{\rm d}y \end{align}

泛化误差就是所学习到的模型的期望风险

泛化误差上界GEB

泛化能力分析往往是通过研究比较泛化误差的概率上界来实现的,称之为泛化误差上界 generalization error bound。泛化误差两个特质:

  • GEB是样本容量的函数,样本容量增减,GEB趋于0;
  • GEB是假设空间容量的函数,假设空间容量越大,模型越难学,GEB越大

二分类问题的GEB讨论

  • 已知训练集:T={(x_1,y_1), (x_2,y_2),...(x_i,y_i),...,(x_N,y_N)}N是样本容量,T是从联合概率分布P(X,Y)独立同分布产生的,X\in R^n,Y\in\{-1,+1\}
  • 假设空间是函数的集合\Gamma = \{f_1, f_2, ..., f_d\},d是函数的个数。
  • 损失函数是0-1损失
  • 假设f是从\Gamma中选择出来,则f的
    期望风险是R(f)=E[L(Y,f(X))]
    经验风险是\hat R(f)=\frac{1}N\sum_{i=1}^NL(y_i, f(x_i))
    经验风险最小化函数是f_N=arg \mathop{min}\limits_{f\in \Gamma}\hat R(f)
    泛化能力R(f_N)=E[L(Y,f_N(X))]
    其中f_N依赖于样本容量N。

泛化误差上界定理
对于二分裂问题,当假设空间是有限个函数的集合,\Gamma = \{f_1, f_2, ..., f_d\},d是函数的个数,任意的f\in \Gamma,至少有以概率1-\delta, 0 < \delta < 1使得如下式子成立:R(f) \leq \hat R(f)+\epsilon (d,N,\delta),其中\epsilon (d,N,\delta)=\sqrt {\frac{1}N(logd+log \frac {1}\delta)}

  • 等式的左边是泛化误差,右端是泛化误差上界
  • 在泛化误差上界中第一项是训练误差,训练误差越小,泛化误差越小
  • 第二项中\epsilon (d,N,\delta)是样本容量N的单调递减函数,当N趋于无穷大时\delta趋于0
  • 同时第二项也和假设函数个数d相关;假设空间\Gamma包含的函数越多,其值越大
推荐 0
本文由 皮大大 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册