读书笔记《机器学习》:第二章:模型评估与选择

2.1 经验误差与过拟合
2.2 评估方法
2.3 性能度量
2.4 比较检验
2.5 偏差与方差


2.1 经验误差与过拟合

错误率(error rate)
精度(accuracy): accuracy = 1 - error rate
误差(error)
训练误差(training error)/ 经验误差(empirical error)
泛化误差(generalization error)
学习的目的是希望得到泛化误差小的模型,但是我们并不知道所有的样本,所以实际能做的就是尽可能减少经验误差。

思考:经验误差越小,泛化误差就越小?
不一定,由于存在过拟合和欠拟合的现象。
过拟合:学习能力过于强大,把训练样本中包含的不太一般的特性都学习到了。过拟合是无法彻底避免的,只能尽可能减少过拟合的风险。
欠拟合:学习能力低下造成的。

过拟合为什么不可避免?
周老师给出的解释:
机器学习面临的问题通常是NP难甚至更难,而有效的算法是在多项式时间内完成的,如果能彻底避免过拟合,则通过经验误差最小化就能获得最优解,这就意味着我们构造性的证明了 P=NP,但是P!=NP,所以过拟合不可避免。

2.2 评估方法

核心问题:选用哪一种算法?选用哪一种参数配置?

理想的解决方案是直接看泛化误差,因为学习的目的就是为了得到泛化误差小的模型。但很显然,无法直接计算泛化误差,而训练误差因为存在过拟合的风险也不能作为唯一的标准。

现实中的解决方案:使用测试集测试模型的,用测试误差当作泛化误差的近似。需要注意两点前提:
- 一般都会假设,训练集和测试集都是从样本集中基于独立同分布采样而来。
- 测试样本尽量不在训练中使用。

如何划分数据集?

2.2.1 留出法(hold out)

留出法:直接一分为二,一部分训练,一部分测试。
注意:

  1. 划分尽可能保证数据分布的一致性,避免划分的过程引入额外的偏差。如通过分层采样(stratified sampling)的方式保证样本类别比例相似。
  2. 多次随机划分,重复试验取平均值:单次试验结果不够稳定可靠。

缺点:划分比例不好确定,从偏差-方差角度看,测试集小,评估结果方差较大,测试集大,评估结果偏差较大。一般划分比例2/3~4/5之间。

2.2.2 交叉验证(cross validation)

这张图能很好的解释交叉检验的概念。当然分为10份也是分层采样得到的。常见的如十次十折交叉检验。交叉检验在实际中应用的较多。
这里写图片描述
留一法(leave one out, LOO):交叉检验的特例,每份只有一个样本。只适合小样本问题,计算开销实在是太大。

2.2.3 自助法(bootstrapping)

我们希望得到的模型是通过D训练出来的,但是划分训练测试集之后,得到的模型使用的训练集其实比D小,必然引入一些因训练样本规模不同而导致的估计偏差,因此要想办法减少因为训练样本规模不同造成的影响,同时高效的进行试验估计。

自助法:其实就是有放回的抽样,大约有36.8%的样本是不会被抽到的,可以用来当做测试集使用。这样的测试结果,也叫包外估计(out of bag estimate).

应用场景:不知道如何划分训练集测试集且数据集较小的情况下。
优点:能够产生多个不同的训练集,如后面集成学习中会用到(随机森林的好而不同)。
缺点:自助法产生的数据集改变了初始数据集的原始分布,会引入估计偏差。

2.2.4 调参(parameter tuning)与最终模型

常规做法:设定参数范围及变化步长,利用上述评估方法评估。
在学习算法和模型参数都已经确定的前提下,用上所有的训练集重新训练一个模型,作为最终的结果。

关于数据集还有一种说法,知道即可:
模型评估和选择的过程中用于测试的数据称为验证集(validation set).
得到模型后,模型上线实际使用过程中碰到的新数据称为测试数据。

2.3 分类任务中性能度量(performance measure)

关于回归以及聚类的性能度量在此节并未讲解。
回归一般看均方误差(mean squared error):


更一般地,对数据分布D和概率分布函数p(.),均方误差表示如下:

2.3.1 错误率和精度

分类任务中常用的,二分类和多分类均可使用。

2.3.2 查准率、查全率、F1

二分类问题的混淆矩阵(confusion matrix)以及precision、recall:

真实情况预测结果(正例positive)预测结果(反例negative)
正例(true)TP(真正例)FN(假反例)
反例(false)FP(假正例)TN(真反例)

precision = TP / (TP + FP): 预测为正例中,有多少真的是正例,也就是我判别为正例中有多大比例是对的。
recall = TP / (TP + FN):所有正样本中,有多少被我判别成了正例,也就是正例中我召回了多少比例。

P-R曲线
这里写图片描述
横坐标是recall,纵坐标是precision。
绘制方法:对预测结果进行排序,最有可能是正例的排在最前面,最不可能是正例的排在最后面,按这个顺序逐个把样例当正例计算recall、precision,描点连线即可。现实任务中的P-R曲线是非单调、不平滑的,局部上下波动。

如何利用P-R曲线评估分类器好坏?
最外围的,把其他曲线都包住的分类器性能好
如何没有完全包住,存在交叉,则看平衡点(Break-Event Point, BEP)recall = precision时的取值。谁大谁更优。

更常用的是F1度量
这里写图片描述

F1是基于recall和precision的调和平均定义的。与算术平均和几何平均相比,调和平均更重视较小值。
这里写图片描述
更一般的, Fβ 能表达对recall、precision的不同偏好。
这里写图片描述
这里写图片描述
β>1 时,recall影响更大;
β<1 时,precision影响更大;
β=1 时,就是F1值,二者作用相同。

上述讲述的都是评估单个混淆矩阵,在n个二分类混淆矩阵上综合考察recall和precision,最直接的方法是直接对P和R作平均,取平均值,得到宏查准率(macro-P)、宏查全率(macro-R)、以及宏F1值(macro-F1).

或者对TP、FN、FP、TN作平均,然后计算微查准率(micro-P)、微查全率(micro-R)、微F1值(micro-F1).

2.3.3 ROC与AUC

这部分直接参照之前写的 ROC与AUC 一文,已经详细阐述过。

2.3.4 代价敏感错误率与代价曲线

简而言之,创建一个和混淆矩阵类似的二分类代价矩阵,对分类错误的sample给予不同的代价惩罚,来权衡不同错误造成的不同损失。
这里写图片描述
这里写图片描述

2.4 比较检验

基于假设检验(hypothesis test)的结果我们可以推断出,如果在测试集上学习器A表现地比B好,则A的泛化性能是否在统计意义上优于B,以及这个结论的把握有多大,这就是假设检验干的事。

2.4.1 假设检验
2.4.2 交叉验证t检验
2.4.3 McNeMar检验
2.4.4 Friedman检验和Nemenyi后续检验

2.5 偏差与方差

偏差-方差分解(bias-variance decomposition):解释泛化性能的一种重要的工具。
这里写图片描述

偏差:度量了学习算法的期望预测与真实结果的偏离程度,即刻画学习算法本身的拟合能力。
方差:度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画数据扰动所造成的影响。
噪声:表达了当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。
好的泛化性能,指的是较小的偏差(充分拟合数据)、较小的方差(数据扰动影响小)。
然而,偏差和方差是有冲突的,如图所示。
左半部分,偏差主导泛化误差,容易欠拟合;右半部分,方差主导泛化误差,容易过拟合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值