ML系列笔记二:模型评估与选择

这是学习周志华老师《机器学习》的一些重要概念的简要笔记 ,仅防个人忘记

文章目录

    • 经验误差与过拟合
    • 评估方法
      • 留出法(hold-out)
      • 交叉验证法(cross validation)
      • 自助法(bootstrapping)
      • 调参与最终模型
    • 性能度量
      • 回归任务
        • 均方误差
      • 分类任务
        • 错误率与精度
        • 查准率(precision)、查全率(recall,亦称召回率)与 F1
          • 查准率-查全率曲线(P-R 曲线)
            • 平衡点(Break-Event Point / BEP)
            • F1 度量
            • n 个二分类混淆矩阵上的查全率、查准率
        • ROC 与 AUC
        • 代价敏感错误率与代价曲线
      • 偏差与方差

经验误差与过拟合

错误率(error rate) = 分类错误样本数 / 样本总数
精度(accuracy)= 1 - 错误率

误差(error)

  • 训练误差(training error)/ 经验误差(empirical error):在训练集上的误差
  • 泛化误差(generalization error):在新样本上的误差

过拟合(overfitting):学习器将训练样本自身的一些特定视为所有潜在样本都会具有的一般性质,这会导致泛化性下降

  • 常见因素是由于学习器的学习能力过强,导致将训练样本包含的不太一般的特性都学到
  • 过拟合是ML面临的关键障碍,各类学习算法都必然带有一些针对过拟合的措施;然而过拟合是无法彻底避免的,仅能“缓解”,即减少其带来的风险

欠拟合(underfitting):对训练样本的一般性质尚未学好

  • 常见因素是由于学习器的学习能力低下造成

评估方法

使用测试集(testing set)来测试学习器对新样本的判别能力,以测试误差(testing error)作为泛化误差的近似
通常假设测试样本也是从样本真实分布中独立同分布采样获得。注意,测试集应尽可能与训练集互斥

留出法(hold-out)

hold-out 直接将数据集 D D D 划分为两个互斥的集合,一个为训练集 S S S ,另一个为测试集 T T T,常用比例是 2 3 ∼ 4 5 \frac{2}{3}\sim\frac{4}{5} 3254 的比例作为 S S S,剩下的作为 T T T

注意, S , T S,T S,T 的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果造成影响。例如在分类任务中至少要保持样本的类别比例相似。若从采样的角度来看待数据划分过程,则保留类别比例的采样方式通常称为”分层采样“(stratified sampling)。若 S , T S,T S,T 中样本类别比例差别很大,则误差估计将由于训练/测试数据分布的差异而产生偏差

然而,不同的划分将导致不同的 S , T S,T S,T,模型评估的结果也会不同。因此,单次使用 hold-out 得到的估计结果往往不够稳定可靠,在使用 hold-out 时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为 hold-out 的评估结果(即若使用 n n n 次hold-out,意味着要训练 n n n 个模型,然后取这些模型的平均估计作为最终的估计结果)

交叉验证法(cross validation)

cross validation,亦称” k k k 折交叉验证“(k-fold cross validation, k k k 常取 5,10,20 等), 先将数据集 D D D 划分为 k k k 个大小相似的互斥子集 D 1 , ⋯   , D k D_1,\cdots,D_k D1,,Dk,每个子集 D i D_i Di 都要尽可能保持数据分布的一致性,即从 D D D 中通过分层采样得到。然后,在每次训练一个完整的模型时(注意不是每迭代一次),用 k − 1 k-1 k1 个子集的并集作为训练集,余下的作为测试集。这样在 k k k 组训练/测试集上,会获得 k k k 个模型,用这 k k k 个模型在各自的测试集上的测试结果的均值作为最终的测试结果

hold-out 与 cross validation 结合:缓解 cross validation 因不同划分所造成的不同评估结果。具体操作如下( p p p k k k 折交叉验证):

  1. 对数据集进行 k-fold cross validation 划分获得 k k k 组训练集/测试集
  2. 在这 k k k 组训练集/测试集上分别训练 k k k 个模型,用这 k k k 个模型平均评估结果作为本次评估结果 e i e_i ei
  3. 重复步骤 1,2 直至达到了 p p p 次。用 p p p 次的评估结果 e 1 , ⋯   , e p e_1,\cdots,e_p e1,,ep 的平均作为最终的评估结果

留一法(Leave-One-Out,简称 LOO):仅留一个样本作为测试集,其余作为训练集,是 cross validation 的一个特例

  • 优点:在绝大多数情况下,留一法中被实际评估的模型与期望评估的用 D D D 训练出的模型很相似,因此,留一法的评估结果往往被认为比较准确
  • 缺点:
    • 当数据集比较大时,所需训练的模型数量庞大,需要的计算开销难以忍受
    • 留一法的评估结果未必永远比其它评估方法准确

自助法(bootstrapping)

目的:希望评估的是用 D D D 训练出的模型,但留出法和交叉验证法由于保留了一部分样本用于测试,因此实际评估的模型所使用的训练集比 D D D 小,而这必然会引入一些因训练样本规模不同而导致的估计偏差;而留一法的计算复杂度太高,不适合使用。因此,bootstrapping 是一种比较好的解决方法

自助采样

  1. 给定数据集 D D D,初始化一个空集 D ′ D' D
  2. 随机从 D D D 中挑选一个样本并将其拷贝 D ′ D' D,然后将该样本放回 D D D,注意, D ′ D' D 可包含重复元素
  3. 重复步骤 2 直至 ∣ D ∣ = ∣ D ′ ∣ |D| = |D'| D=D

注意,通过自助采样后, D D D 中有一部分样本会在 D ′ D' D 中重复出现,另一部分不出现。而样本在 ∣ D ∣ |D| D 次采用中始终不被采到的概率为 ( 1 − 1 ∣ D ∣ ) ∣ D ∣ (1 - \frac{1}{|D|})^{|D|} (1D1)D,取极限可得:
lim ⁡ ∣ D ∣ → ∞ ( 1 − 1 ∣ D ∣ ) ∣ D ∣ = 1 e ≈ 0.368 \lim_{|D| \to \infty} \left(1 - \frac{1}{|D|}\right)^{|D|} = \frac{1}{e} \approx 0.368 Dlim(1D1)D=e10.368
因此,通过自助采样,初始数据集 D D D 中约有 36.8 % 36.8\% 36.8% 的样本未出现在采样数据集 D ′ D' D

自助法就是通过自助采样法获得 D , D ′ D,D' D,D,然后将 D ′ D' D 作为训练集, D \ D ′ D \backslash D' D\D 作为测试集。这样,实际评估的模型与期望评估的模型都使用了 ∣ D ∣ |D| D 个训练样本,而我们仍有数据总量约 1/3 的、没在训练集中出现的样本用于测试。这样的测试结果,亦称“包外估计”(out-of-bag estimate)

自助法:

  • 适用场景:数据集较小、难以有效划分训练/测试集时
  • 缺点:改变初始数据集的分布,会引入估计偏差。因此,在初始数据量足够时,留出法及交叉验证法更常用些

调参与最终模型

调参方式主要分为两种:网格搜索与随机搜索,详见ML模型超参数调节:网格搜索、随机搜索与贝叶斯优化

最终模型:给定包含 m m m 个样本的数据集 D D D 并用训练/测试集中评估并选择好模型后,即学习算法及参数配置确定后,再用整个 D D D 重新训练模型,给模型作为最终模型

一般,数据集为划分:

  • 训练集(training set)
  • 验证集(validation set):用于进行模型的选择和调参
  • 测试集(testing set):用于评估模型的泛化性能

性能度量

回归任务

均方误差

回归中最常用的性能度量是“均方误差”(mean squared error, MSE),即:
(1) E ( f ; D ) = 1 ∣ D ∣ ∑ i = 1 ∣ D ∣ ( f ( x i ) − y i ) 2 = ∫ x ∼ D ( f ( x ) − y ) 2 p ( x ) d x E(f;D) = \frac{1}{|D|} \sum_{i=1}^{|D|} (f(x_i) - y_i)^2 = \int_{x \sim D} (f(x) - y)^2 p(x) dx \tag{1} E(f;D)=D1i=1D(f(xi)yi)2=xD(f(x)y)2p(x)dx(1)
其中 D D D 为数据分布,即为数据集, p ( ⋅ ) p(\cdot) p() 为概率密度函数

分类任务

错误率与精度

分类中最常用的两种性能度量,即:
(2) E ( f ; D ) = 1 ∣ D ∣ ∑ i = 1 ∣ D ∣ 1 ( f ( x ) = ̸ y i ) = ∫ x ∼ D 1 ( f ( x ) = ̸ y ) p ( x ) d x acc ( f ; D ) = 1 − E ( f ; D ) \begin{array}{l} E(f;D) = \displaystyle\frac{1}{|D|} \sum_{i=1}^{|D|} 1(f(x) =\not y_i) = \int_{x \sim D} 1(f(x) =\not y) p(x) dx \\ \text{acc}(f;D) = 1 - E(f;D) \end{array} \tag{2} E(f;D)=D1i=1D1(f(x)≠yi)=xD1(f(x)≠y)p(x)dxacc(f;D)=1E(f;D)(2)
其中 E ( ⋅ ) E(\cdot) E() 为错误率,acc ( ⋅ ) (\cdot) () 为精度

查准率(precision)、查全率(recall,亦称召回率)与 F1

ML系列笔记二:模型评估与选择_第1张图片
对于二分类问题,可将样例根据其真实类别与预测类别的组合划分为:真正例(TP)、假正例(FP)、真反例(TN)、假反例(FN),则查准率与查全率的定义如下:
(3) P = T P T P + F P = T P 被 预 测 成 正 例 的 数 量 R = T P T P + F N = T P 数 据 集 中 所 有 正 例 数 量 \begin{array}{l} P = \displaystyle\frac{TP}{TP + FP} = \frac{TP}{被预测成正例的数量} \\[1.2em] R = \displaystyle\frac{TP}{TP + FN} = \frac{TP}{数据集中所有正例数量} \end{array} \tag{3} P=TP+FPTP=TPR=TP+FNTP=TP(3)
查准率 P P P 和查全率 R R R 是一对矛盾的度量。一般而言, P P P 越高时, R R R 往往偏低;而 R R R 高时, P P P 往往偏低(前提:一个好的分类器)。通常只有在一些简单任务中,才可能使二者均高

查准率-查全率曲线(P-R 曲线)

ML系列笔记二:模型评估与选择_第2张图片
用于综合考虑 P , R P,R P,R 来对模型的性能进行度量。此处以一个简单的例子看它应如何计算
假设现在有一个二分类器对数据集 D = { d 1 , d 2 , d 3 } D=\{ d_1, d_2, d_3 \} D={d1,d2,d3} 的预测结果如下:

样本 真实类别 预测概率
d 2 d_2 d2 1 0.9
d 1 d_1 d1 0 0.8
d 3 d_3 d3 1 0.2

注意,样本已经根据预测概率进行了排序,则分别看排名前1,前2,前3个样本,通过式 (3) 分别计算这三个阶段对应的 P , R P,R P,R 值:

n n n T P TP TP F P FP FP P P P R R R
1 1 0 1 0.5
2 1 1 0.5 0.5
3 1 1 0.5 0.5

例如以前 2 为例,通过表 1 可知,排名前 2 为 d 2 , d 1 d_2,d_1 d2,d1,其中 d 2 d_2 d2 T P TP TP,而 d 1 d_1 d1 N P NP NP,故在前 2 个中有 1 个 T P TP TP 和 1 个 N P NP NP,对应到表 2 的 T P TP TP 列即为 1。同理可知 N P NP NP。然后再通过公式 (3) 即可得到 P , R P,R P,R 值。将所计算得到的所有 P , R P,R P,R 作为 ( P , R ) (P,R) (P,R) 点即可绘制 P-R曲线。更详细的例子可参考链接

P-R 图直观地显示出学习器在样本总体上的查全率、查准率。在进行比较时,若一个学习器的 P-R 曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者;若二者的曲线发生了交叉,则难以一般性地断言两者孰优孰劣,只能在具体查准率或查全率条件下比较。一般而言,比较 P-R 曲线下面积的大小,可一定程度上表征学习器在查准率和查全率上取得相对 “双高”的比例,但该值不太容易计算

因 P-R 曲线的面积不太容易计算,其它相对交容易且能综合考虑查准率、查全率的性能度量被提出,具体如下:

平衡点(Break-Event Point / BEP)

该点是“查准率=查全率”的取值,如图上所示。值越大,则可认为学习器越优

F1 度量

因 BEP 过于简单,更常用的为 F 1 F1 F1 度量,具体定义如下:
(4) F 1 = 2 × P × R P + R = 2 × T P 样 例 总 数 + T P − T N ( 直 接 套 入 公 式 ( 3 ) 中 P , R 的 定 义 即 可 解 得 等 号 右 边 ) F1 = \frac{2×P×R}{P+R} = \frac{2×TP}{样例总数+TP-TN}(直接套入公式(3)中P ,R的定义即可解得等号右边)\tag{4} F1=P+R2×P×R=+TPTN2×TP(3)P,R(4)
它的一般形式为 F β F_{\beta} Fβ,定义如下:
(5) F β = ( 1 + β 2 ) × P × R ( β 2 × P ) + R F_\beta = \frac{(1+\beta^2)×P×R}{(\beta^2 × P)+R} \tag{5} Fβ=(β2×P)+R(1+β2)×P×R(5)
可用于表达对查 P / R P/R P/R的不同的偏好。当 β = 1 \beta=1 β=1 时退化成标准的 F 1 F1 F1 β > 1 \beta>1 β>1 时对 P P P 有更大影响, β < 1 \beta<1 β<1 时则相反。( F β = ( 1 + β 2 ) 1 β 2 1 R + 1 P \displaystyle F_\beta = (1+\beta^2) \frac{1}{\beta^2\frac{1}{R} + \frac{1}{P}} Fβ=(1+β2)β2R1+P11

n 个二分类混淆矩阵上的查全率、查准率

此处的二分类混淆矩阵,即值在数据集上进行训练/测试后得到的 T P , N P , F P , F N TP,NP,FP,FN TP,NP,FP,FN 的统计数量,即上面的表 2.1

假设存在多个二分类混淆矩阵,例如进行多次训练/测试,或在多个数据集上进行训练/测试,每次可获得一个混淆矩阵,希望可以估计在这 n n n 个二分类混淆矩阵上综合考察 P , R P,R P,R。下面记录两种做法:

  • 先在各混淆矩阵上分别计算 P , R P,R P,R,记为 ( P 1 , R 1 ) , … , ( P n , R n ) (P_1,R_1),\dots,(P_n,R_n) (P1,R1),,(Pn,Rn),再用其平均值作为性能指标,即”宏查准率“(macro-P)、”宏查全率“(macro-R),以及相应的”宏 F 1 F1 F1“(macro- F 1 F1 F1):
    (6) macro- P = 1 n ∑ i = 1 n P i macro- R = 1 n ∑ i = 1 n R i macro- F 1 = 2 × macro- P × macro- R macro- P + macro- R \begin{array}{l} \text{macro-}P = \displaystyle\frac{1}{n} \sum_{i=1}^n P_i \\ \text{macro-}R = \displaystyle\frac{1}{n} \sum_{i=1}^n R_i \\ \text{macro-}F1 = \displaystyle\frac{2×\text{macro-}P×\text{macro-}R}{\text{macro-}P+\text{macro-}R} \end{array} \tag{6} macro-P=n1i=1nPimacro-R=n1i=1nRimacro-F1=macro-P+macro-R2×macro-P×macro-R(6)
  • 先将各混淆矩阵对应元素求均,得到 T P , N P , F P , F N TP,NP,FP,FN TP,NP,FP,FN 的平均值 T P ‾ , N P ‾ , F P ‾ , F N ‾ \overline{TP},\overline{NP},\overline{FP},\overline{FN} TP,NP,FP,FN,再用它计算”微查准直“(micro- P P P),”微查全值“(micro- R R R),”微 F 1 F1 F1“(micro- F 1 F1 F1):
    (7) micro- P = T P ‾ T P ‾ + F P ‾ micro- R = T P ‾ T P ‾ + F N ‾ macro- F 1 = 2 × macro- P × macro- R macro- P + macro- R \begin{array}{l} \text{micro-}P = \displaystyle\frac{\overline{TP}}{\overline{TP} + \overline{FP}} \\[.8em] \text{micro-}R = \displaystyle\frac{\overline{TP}}{\overline{TP} + \overline{FN}} \\[.8em] \text{macro-}F1 = \displaystyle\frac{2×\text{macro-}P×\text{macro-}R}{\text{macro-}P+\text{macro-}R} \end{array} \tag{7} micro-P=TP+FPTPmicro-R=TP+FNTPmacro-F1=macro-P+macro-R2×macro-P×macro-R(7)

ROC 与 AUC

ML系列笔记二:模型评估与选择_第3张图片
截断点:根据分类预测结果对样本进行排序,然后人为选择一个“截断点”/分类阈值,该点将样本分为两部分,截断点以前的分为正例,否者为反例

P , R P,R P,R 中,若我们更重视 P P P,则可选择排序靠前的位置进行截断;若更重视 R R R,则可选择排序靠后的位置进行截断——因此,排序本身质量的好坏体现了综合考虑学习器在不同任务下的“期望泛化性能”的好坏,即“一般情况下泛化性能的好坏。而 ROC 曲线则是从该角度来对学习器泛化性能进行研究的工具

ROC 曲线,全称“受试者工作特征”(Receiver Operating Characteristic)曲线,用于衡量学习器在一般情况下泛化性能的好坏。该曲线的横、纵轴为“假正例”(False Positive Rate,简称 FPR)、“真正率”(True Positivate Rate,简称 TPR),具体定义如下:
(8) FPR = F P T N + F P = F P 测 试 数 据 中 反 例 的 数 量 TPR = T P T P + F N = T P 测 试 数 据 中 正 例 的 数 量 = R \begin{array}{l} \text{FPR} = \displaystyle\frac{FP}{TN + FP} = \frac{FP}{测试数据中反例的数量}\\[1em] \text{TPR} = \displaystyle\frac{TP}{TP + FN} = \frac{TP}{测试数据中正例的数量} = R \end{array} \tag{8} FPR=TN+FPFP=FPTPR=TP+FNTP=TP=R(8)
注意 FPR,TPR \text{FPR,TPR} FPR,TPR 的分母均为常数,变的仅为分子。

ROC 曲线的绘制过程如下:给定 m + m^+ m+ 个正例和 m − m^- m 个反例

  1. 根据学习器预测结果对样例进行排序
  2. 将分类阈值 / 截断点设为最大,即把所有样例均预测为反例,此时 FPR = TPR = 0 \text{FPR}=\text{TPR}=0 FPR=TPR=0
  3. 将分类阈值 / 截断点依次设为每个排序样例的预测值,即依次将每个样例划分为正例。计算对应的 FPR,TPR \text{FPR,TPR} FPR,TPR设前一个点为 ( x = F P m − , y = T P m + ) (x=\displaystyle\frac{FP}{m^-}, y=\frac{TP}{m^+}) (x=mFP,y=m+TP)。若当前样例为真正例,则对应的坐标点为 ( x , T P + 1 m + = y + 1 m + ) (x, \displaystyle\frac{TP+1}{m^+}=y+\frac{1}{m^+}) (x,m+TP+1=y+m+1);同理,若为假正例,则对应坐标点为 ( x + 1 m − , y ) (x+ \displaystyle\frac{1}{m^-}, y) (x+m1,y)即相邻两点,只会变化纵坐标或横坐标其中的一个,而不会同时变化,即离散下 ROC 曲线呈现锯齿状
  4. 点连线,即为 ROC 曲线

与 P-R 曲线一样,若一个学习器的 ROC 曲线被另一个的曲线完全“包住”,则断言后者的性能优于前者;若有交叉,则难以一般断言,此时可通过比较 ROC 曲线下的面积来判断。ROC 曲线下的面积,即为 AUC(Area Under ROC Curve),假设共有 m m m 个样本/点,则它的估算公式为:
(9) AUC = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ( y i + 1 + y i ) \text{AUC} = \frac{1}{2} \sum_{i=1}^{m-1} (x_{i+1}-x_i)(y_{i+1}+y_i) \tag{9} AUC=21i=1m1(xi+1xi)(yi+1+yi)(9)

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

非均等代价(unequal cost):在现实中,不同类型的错误所造成的后果不同。因此,为权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价”(unequal cost)

代价矩阵(cost matrix):由人为根据领域知识所构建,矩阵中的每一项 c o s t i j cost_{ij} costij 表示将第 i i i 类样本预测为第 j j j 类样本的代价。一般而言,预测正确的代价为 0,即 c o s t i i = 0 cost_{ii}=0 costii=0

在非均等代价上,优化的目标不再是简单地最小化错误次数(公式 (1)),而是最小化“总体代价”(total cost)。以二分类为例,将 c o s t 01 cost_{01} cost01 作为假反例 F N FN FN 的代价, c o s t 10 cost_{10} cost10 作为假正例 F P FP FP 的代价。数据集 D D D D − D^- D 个反例,有 D + D^+ D+ 个正例, 则“代价敏感”(cost-sensitive)错误率为:
(10) E ( f ; D ; c o s t ) = 1 ∣ D ∣ ( ∑ x i ∈ D + 1 ( f ( x i ) = ̸ y i ) × c o s t 01 + ∑ x i ∈ D − 1 ( f ( x i ) = ̸ y i ) × c o s t 10 ) E(f;D;cost) = \frac{1}{|D|} \left( \sum_{x_i \in D^+} 1(f(x_i) =\not y_i) × cost_{01} + \sum_{x_i \in D^-} 1(f(x_i) =\not y_i) × cost_{10} \right) \tag{10} E(f;D;cost)=D1(xiD+1(f(xi)≠yi)×cost01+xiD1(f(xi)≠yi)×cost10)(10)
类似的,也可定义一些其它性能度量的代价敏感版本

在非均等代价上,ROC 曲线不能直接反映出学习器的期望总体代价,而“代价曲线”(cost curve)则可达到该目的。该曲线的横、纵轴分别为正例概率代价 P ( + ) c o s t P(+)cost P(+)cost、归一化代价(cost_{norm}):
(11) P ( + ) c o s t = p ∗ c o s t 01 p ∗ c o s t 01 + ( 1 − p ) ∗ c o s t 10 c o s t n o r m = FNR ∗ p ∗ c o s t 01 + FPR ∗ ( 1 − p ) ∗ c o s t 10 p ∗ c o s t 01 + ( 1 − p ) ∗ c o s t 10 \begin{array}{l} P(+)cost = \displaystyle\frac{p*cost_{01}}{p*cost_{01} + (1-p)*cost_{10}} \\[1.2em] cost_{norm} = \displaystyle\frac{\text{FNR}*p*cost_{01}+\text{FPR}*(1-p)*cost_{10}}{p*cost_{01} + (1-p)*cost_{10}} \end{array} \tag{11} P(+)cost=pcost01+(1p)cost10pcost01costnorm=pcost01+(1p)cost10FNRpcost01+FPR(1p)cost10(11)
其中 p p p 是数据集中样例为正例的概率(注意不是预测概率),在此即为 p = D + D p = \displaystyle\frac{D^+}{D} p=DD+ FPR \text{FPR} FPR 即为公式 (8) 中定义的假正率, FNR = 1 − TPR \text{FNR} = 1-\text{TPR} FNR=1TPR 为假反率。cost curve 的绘制除了可直接利用式 (11) 来求得外,更简便的方法便是利用 ROC 曲线。具体步骤如下:
(12) cost curve = min ⁡ { f ( FPR i , TPR i )  for (FPR i , TPR i ) in “points of ROC" } \begin{array}{l} \text{cost curve} = \min \left\{ f(\text{FPR}_i,\text{TPR}_i) \text{ for (FPR$_i$, TPR$_i$) in ``points of ROC"} \right\} \end{array} \tag{12} cost curve=min{f(FPRi,TPRi) for (FPRi, TPRi) in “points of ROC"}(12)
其中 f ( a , b ) = ( ( 1 − b ) − a ) ∗ x + a , x ∈ [ 0 , 1 ] f(a,b) = ((1-b)-a)*x + a, x \in [0,1] f(a,b)=((1b)a)x+a,x[0,1] 为一条过点 ( 0 , a ) , ( 1 , 1 − b ) (0,a), (1,1-b) (0,a),(1,1b) 的直线,即 ROC 曲线上的每一点对应了代价平面上的一条线段。设 ROC 曲线上点的坐标为 ( FPR, TPR ) (\text{FPR, TPR}) (FPR, TPR),则根据 FNR = 1 − TPR \text{FNR} = 1-\text{TPR} FNR=1TPR 可得到对应的 ( FPR,FNR ) (\text{FPR,FNR}) (FPR,FNR),然后在代价平面上绘制一条从 ( 0 , FPR ) (0,\text{FPR}) (0,FPR) ( 1 , FNR ) (1,\text{FNR}) (1,FNR) 的线段,线段下的面积表示该条件下的期望总体代价。如此操作即可将 ROC 上的所有点均转换成在代价平面上对应的线段,然后取所有线段的下界,即为代价曲线,其所围成的面积,即为在所有条件下学习器的期望总体代价。具体示例如下图所示:

ML系列笔记二:模型评估与选择_第4张图片

偏差与方差

“偏差-方差”(bias-variance decomposition)试图对学习算法的期望泛化错误率进行拆解。算法在不同训练集上学得的结果很可能不同,即使这些训练集来自同一个分布。

对测试样本 x x x,令 y D y_D yD x x x 在数据集中的标记, y y y x x x 的真实标记, f ( x ; D ) f(x;D) f(x;D) 为训练集 D D D 上学得模型 f f f x x x 上的预测输出,则

  • 期望预测
    f ‾ ( x ) = E D f ( x ; D ) \overline f(x) = \Bbb E_D f(x; D) f(x)=EDf(x;D)
  • 方差:在样本数相同的不同训练集 D D D 上。用于度量同样大小的训练集的变动所导致的学习性能的变化,刻画了数据扰动所造成的影响
    v a r ( x ) = E D [ ( f ( x ; D ) − f ‾ ( x ) ) 2 ] var(x) = \Bbb 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 = \Bbb E_D (y_D - y)^2 ϵ2=ED(yDy)2
  • 偏差:用于度量学习算法的期望预测与真实结果的偏离程度,刻画了学习算法本身的拟合能力
    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 ) = b i a s 2 ( x ) + v a r ( x ) + ϵ 2 E(f;D) = bias^2(x) + var(x) + \epsilon^2 E(f;D)=bias2(x)+var(x)+ϵ2
该分解说明了,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定

偏差-方差窘境(bias-variance dilemma):即一般而言偏差与方差是有冲突的。给定学习任务,假定学习算法的训练程度可控,则在训练不足时,学习器的拟合能力不够强,训练数据的扰动不足以使学习器昌盛显著变化 ,此时偏差主导了泛化错误率;随着训练程度的加深,学习器的拟合能力逐渐增强,训练数据发生的扰动逐渐能被学习到,方差逐渐主导了泛化错误率;在训练程度充足后,学习器的拟合能力已非常强,训练数据发生的轻微扰动都会导致学习器发生显著变化。若训练数据自身的、非全局的特性被学习器学到,则发生过拟合
ML系列笔记二:模型评估与选择_第5张图片

你可能感兴趣的:(ML系列笔记二:模型评估与选择)