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

1 经验误差与过拟合

  • 错误率: E = a m E=\frac{a}{m} E=ma
  • 精度(accuracy): 1 − a m 1-\frac{a}{m} 1ma
  • 误差: y ^ − y \hat y - y y^y
  • 训练误差/经验误差:学习器在训练集上的误差
  • 泛化误差:在新样本上的误差
  • 过拟合:学习器把训练样本学的很好,但把训练样本的一些特点当做了潜在样本都会具有的一般特性,导致泛华性能下降。
    • 因素:学习能力过于强大
  • 欠拟合:训练样本的一般性质尚未学好
    • 因素:学习能力低下

2 评估方法

  • 使用“测试集”,用“测试误差”作为泛化误差的近似,从而选择学习算法及参数。
  • 测试集应尽可能与训练集互斥,即不出现在训练集中。

产生训练集S和测试集T的常见做法 :

留出法(hold-out)
直接将数据集D划分为两个互斥的集合,其中一个集合做训练集S,另一个做测试集T。

  • 训练、测试集划分要尽可能保持数据分布的一致性,避免因为数据划分引入额外的偏差而对最终结果产生影响。
    • 从采样的角度,使用"分层采样",即训练、测试集中的正负样本比例数目应该一致。
  • 单次留出法划分集合得到的结果往往不够稳定可靠,往往要若干次随机划分,返回结果的平均。
  • 当测试集小时,评估结果的方差较大;当训练集小时,结果的偏差较大。

交叉验证(cross validation)
将数据集D划分为K个大小相似的互斥子集;每个子集尽可能保持数据分布的一致性(即从D中分层采样得到)。每次用K-1个子集的并集做训练集,余下的那个用作测试集。最终返回K次训练的平均值。

  • 将D划分为K个子集存在多种划分方式,为了减少因样本划分不同而引入的差别,k折交叉验证通常使用不同的方法划分P次,最终评估p*k次结果的均值,称作“p次K折交叉验证”

自助法(bootstrapping)
给定包含m个样本的数据集D,有放回的随机挑选一个样本,共采样m次,组成的数据集为 D ′ D^\prime D。样本在m次采样中始终不被采到的概率
( 1 − 1 m ) m → 1 e ≈ 0.368 (1-\frac{1}{m})^m \rightarrow \frac{1}{e} \approx0.368 (1m1)me10.368
D ′ D^\prime D作为训练集,没有出现在训练集中的数据做测试集。这样的测试结果称为“包外估计”(out of bag estimate)

  • 在数据集较小、难以有效划分、训练集时很有用
  • 自助法能从初始数据集中产生不同的训练集,对集成学习方法等有很大的好处。

调参(parameter tuning)

  • 对每个参数选定一个范围和变化步长
  • 给定了数据集D,在模型评估和选择过程需要留出一部分数据进行评估测试,只使用了一部分数据训练模型。在模型选择完成后,学习算法和参数配置已选定,此时应该用数据集D重新训练模型,这是最终提交给用户的模型。
  • 一般测试集指估计模型泛化能力的数据集;把训练集另分为训练集和验证集,基于验证集的性能进行模型选择和调参。

3 性能度量

  • 性能度量(performance measure):衡量模型泛化能力的标准
  • 性能度量反映了任务需求。使用不同的性能度量会导致不同的评判结果。

回归任务常用性能度量:均方误差MSE(mean squared error)
E ( f ; D ) = 1 m ∑ i = 1 m ( f ( x i ) − y i ) 2 E(f;D) = \frac{1}{m}\sum_{i=1}^m(f(x_i)-y_i)^2 E(f;D)=m1i=1m(f(xi)yi)2
或用概率密度函数 p ( x ) p(x) p(x)
E ( f ; D ) = ∫ ( f ( x ) − y ) 2 p ( x ) d x E(f;D) = \int(f(x)-y)^2 p(x)dx E(f;D)=(f(x)y)2p(x)dx
分类任务常用的性能度量:错误率和精度;查准率/准确率(precision)、查全率/召回率(recall)、F1;ROC曲线

3.1 错误率和精度

错误率的定义
E ( f , D ) = 1 m ∑ i = 1 m I ( f ( x i ) ≠ y i ) E(f,D) = \frac{1}{m}\sum_{i=1}^m I(f(x_i) \neq y_i) E(f,D)=m1i=1mI(f(xi)=yi)
精度的定义
a c c ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) = y i ) = 1 − E ( f , D ) \begin{aligned} acc(f;D) &= \frac{1}{m}\sum_{i=1}^m I(f(x_i) = y_i) \\ &= 1- E(f,D) \end{aligned} acc(f;D)=m1i=1mI(f(xi)=yi)=1E(f,D)

3.2 查准率/准确率(precision)、查全率/召回率(recall)、F1

例如“检索出的信息中有多少比例是用户感兴趣的”.
对于二分类问题,把数据分为

  • 真正例(true positive)
  • 假正例(false positive)
  • 真反例(true negative)
  • 假反例(false negative)

得到混淆矩阵

/预测为正预测为反
实际为正TP (真正)FN(假反)
实际为反FP (假正)TN(真反)

P-R曲线

  • 准确率precision(被判定为正的样例的准确率)
    P = T P T P + F P P = \frac{TP}{TP + FP} P=TP+FPTP
  • 召回率recall(所有本身是正例被判断正确的概率)
    R = T P T P + F N R = \frac{TP}{TP + FN} R=TP+FNTP
    precision和recall即矛盾又统一。为了提高precision,分类器需要尽量在“更有把握时”把样本预测为正样本。但有可能过于保守漏掉很多“没有把握”的正样本,导致recall值降低。

P-R曲线:横轴是召回率,纵轴是精确率。曲线上的点代表在某阈值下,模型将大于该阈值的结果判定为正样本,小于阈值的结果判定为负样本,此时对应的召回率和精确率。曲线是通过将阈值从高到低移动生成的。

两个模型性能的比较:

  • 如果一个模型的p-r曲线能被另一个模型的曲线包住,则后者的性能优于前者
  • 如果两模型曲线相交,比较曲线下面积,在一定程度上表征学习器的两个值“双高”的比例
  • 曲线下面积不容易计算,可以用“平衡点”度量(查准率=查全率的点)

F1 score
精确率和召回率无法精确的反映排序模型的性能。而F1 score是两个值的调和平均值
F 1 = 2 × p r e c i s i o n × r e c a l l p r e c i s i o n + r e c a l l F1= \frac{2 \times precision \times recall}{precision + recall} F1=precision+recall2×precision×recall

3.3 ROC曲线

ROC(Receiver Characteristic Curve,受试者工作特征曲线)曲线常作为评估二值分类器重要的指标。

  • 假阳性率(False Positive Rate,FPR)
    F P R = F P N FPR = \frac{FP}{N} FPR=NFP
  • 真阳性率(True Positive Rate,TPR)
    T P R = T P P TPR = \frac{TP}{P} TPR=PTP

ROC曲线的横坐标是FPR,纵坐标是TPR;通过将二分类阈值由大到小的变化,计算真阳性率和假阳性率画图。

两模型的比较:

  • 若一个模型的ROC把另一模型的ROC包住,前者的性能优于后者
  • 若曲线相交,比较曲线下面积

AUC
AUC指ROC曲线下的面积大小,能量化的反映基于ROC曲线衡量出的模型性能。

P-R曲线和ROC曲线
当正负样本的分布发生变化时,ROC曲线的形状能基本保持不变,而P-R曲线的形状一般会发生剧烈变化。这一特点使ROC降低不同测试集的干扰,更客观的衡量模型本身的性能。

4 比较检验

统计假设检验(hypothesis test),基于假设检验结果腿短:如在测试集上A比B好,A的泛华性能是否在统计意义上优于B。
目前我还get不到

5 偏差与方差

测试集样本x, y D y_D yD是样本在数据集的标记; y y y是x的真实标记(有可能出现噪声使 y D ≠ y y_D \not = y yD=y); f ( x ; D ) f(x;D) f(x;D)是模型的预测输出。已回归任务为例:

  • 学习算法的期望预测:
    f ( x ) ‾ = E D [ f ( x ; D ) ] \overline{f(x)} = E_D[f(x;D)] f(x)=ED[f(x;D)]

  • 方差:使用样本数相同的不同训练集产生的
    v a r ( x ) = E D [ ( f ( x ; D ) − f ( x ) ‾ ) 2 ] var(x) = E_D[(f(x;D) - \overline{f(x)})^2] var(x)=ED[(f(x;D)f(x))2]
    度量了同样大小的训练集的变动所导致的学习性能的变化。刻画了数据扰动所造成的影响。

  • 噪声:
    ϵ 2 = E D [ ( y D − y ) 2 ] \epsilon^2 = E_D[(y_D-y)^2] ϵ2=ED[(yDy)2]

  • 偏差(bias):期望输出与真实标记的差别
    b i a s 2 ( x ) = ( f ( x ) ‾ ) − y ) 2 bias^2(x) = (\overline{f(x)}) - y)^2 bias2(x)=(f(x))y)2
    刻画了学习算法本身的拟合能力。

  • 对算法的期望泛化误差分解
    E ( f ; D ) = E D [ ( f ( x ; D ) − y D ) 2 ] = b i a s 2 ( x ) + v a r ( x ) + ϵ 2 E(f;D) = E_D[(f(x;D)-y_D)^2] = bias^2(x) + var(x) + \epsilon^2 E(f;D)=ED[(f(x;D)yD)2]=bias2(x)+var(x)+ϵ2
    泛化误差可分解为偏差、方差与噪声之和,是由算法的能力、数据的充分性及学习任务本身的难度共同决定的。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值