当前位置: 首页 > article >正文

【机器学习导引】ch2-模型评估与选择

文章目录

  • 经验误差与过拟合 (Empirical error &overfitting)
      • 1. **均方误差(Mean Squared Error, MSE)**
      • 2. **均方根误差(Root Mean Squared Error, RMSE)**
      • 3. **平均绝对误差(Mean Absolute Error, MAE)**
      • 4. **交叉熵损失(Cross Entropy Loss)**
      • 5. **Hinge 损失**
      • 6. **Huber 损失**
      • 7. **KL 散度(Kullback-Leibler Divergence)**
      • 8. **Softmax 损失**
      • 总结:
  • 评估方法 (Evaluation method)
  • 性能度量(Performance measure)
    • 错误率与精度
      • 总结:
    • 查准率、查全率与F1
      • 混淆矩阵(Confusion Matrix):
      • 查准率(Precision, P):
      • 查全率(Recall, R):
      • F1值(F1 Score):
      • 总结:
    • 案例分析:垃圾邮件识别
    • ROC与AUC
      • ROC曲线:
      • 真正例率(True Positive Rate, TPR):
      • 假正例率(False Positive Rate, FPR):
      • AUC(Area Under ROC Curve):
      • 总结:
    • 代价敏感错误率与代价曲线
      • 背景:
      • 公式解释:
      • 代价因素:
      • 解释:
      • 实际应用:
      • 总结:
  • 偏差与方差 (Bias and Variance)
    • 泛化误差分解公式:
      • 各项含义:
      • 结论:

经验误差与过拟合 (Empirical error &overfitting)

  • 经验误差是指学习器 f f f 在训练集上表现出的误差。公式为:

    R e m p ( f ) = 1 m ∑ i = 1 m L ( f ( x i ) , y i ) R_{emp}(f) = \frac{1}{m} \sum_{i=1}^{m} L(f(x_i), y_i) Remp(f)=m1i=1mL(f(xi),yi)

    其中 L ( f ( x i ) , y i ) L(f(x_i), y_i) L(f(xi),yi)损失函数,表示模型在训练样本 ( x i , y i ) (x_i, y_i) (xi,yi) 上的误差。

  • 泛化误差是指学习器 f f f未来的未见样本上所表现出的误差。公式为:

    R ( f ) = E [ L ( f ( x ) , y ) ] = ∫ L ( f ( x ) , y ) d P ( x , y ) R(f) = \mathbb{E}[L(f(x), y)] = \int L(f(x), y) dP(x, y) R(f)=E[L(f(x),y)]=L(f(x),y)dP(x,y)

    • 这里 P ( x , y ) P(x, y) P(x,y) 是样本的真实分布 L ( f ( x ) , y ) L(f(x), y) L(f(x),y) 表示模型对新的样本 ( x , y ) (x, y) (x,y) 的误差。
    • 公式右侧的积分表达式说明了**泛化误差是模型在整个真实数据分布下的平均误差,**即模型不仅要在训练数据上表现好,还需要在未来可能遇到的未知样本上表现良好。

要点

  • 经验误差并非越小越好,因为过度减小经验误差可能导致模型过拟合(即模型在训练集上表现非常好,但在新样本上表现差)。

  • 常见的损失函数与适用范围

    1. 均方误差(Mean Squared Error, MSE)

    • 公式 M S E = 1 n ∑ i = 1 n ( y i − y i ^ ) 2 MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y_i})^2 MSE=n1i=1n(yiyi^)2
    • 适用场景:主要用于回归任务,例如预测房价或气温。
    • 解释:MSE 计算的是真实值 y i y_i yi 与预测值 y i ^ \hat{y_i} yi^ 之间的平方差。这个损失函数惩罚较大的误差,因此对异常值较为敏感

    2. 均方根误差(Root Mean Squared Error, RMSE)

    • 公式 R M S E = 1 n ∑ i = 1 n ( y i − y i ^ ) 2 RMSE = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y_i})^2} RMSE=n1i=1n(yiyi^)2
    • 适用场景:同样适用于回归任务,其单位与输出变量一致,因此易于解释。
    • 解释:与 MSE 类似,但在计算后进行了平方根处理,避免了过度放大大误差的影响。

    3. 平均绝对误差(Mean Absolute Error, MAE)

    • 公式 M A E = 1 n ∑ i = 1 n ∣ y i − y i ^ ∣ MAE = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y_i}| MAE=n1i=1nyiyi^
    • 适用场景:用于回归任务,但相比 MSE 更加鲁棒,适用于异常值较多的场景。
    • 解释:MAE 计算的是预测值与真实值之间的绝对误差,所有误差的权重相同,因此对异常值的影响较小。

    4. 交叉熵损失(Cross Entropy Loss)

    • 公式:对于二分类问题:

      H ( p , q ) = − 1 n ∑ i = 1 n [ y i log ⁡ y i ^ + ( 1 − y i ) log ⁡ ( 1 − y i ^ ) ] H(p, q) = - \frac{1}{n} \sum_{i=1}^{n} [y_i \log \hat{y_i} + (1 - y_i) \log (1 - \hat{y_i})] H(p,q)=n1i=1n[yilogyi^+(1yi)log(1yi^)]

    • 适用场景:主要用于分类任务,例如二分类任务(如猫和狗的分类)、多分类任务(如手写数字识别)。

    • 解释:交叉熵损失衡量的是两个概率分布之间的差异,预测值 y i ^ \hat{y_i} yi^ 越接近真实值 y i y_i yi ,损失越小。

    5. Hinge 损失

    • 公式 L ( y , y ^ ) = max ⁡ ( 0 , 1 − y ⋅ y ^ ) L(y, \hat{y}) = \max(0, 1 - y \cdot \hat{y}) L(y,y^)=max(0,1yy^)
    • 适用场景:主要用于**支持向量机(SVM)**等分类模型。
    • 解释:当样本的预测结果 y ⋅ y ^ ≥ 1 y \cdot \hat{y} \geq 1 yy^1 时,损失为 0 0 0;当预测错误时,损失会增加。Hinge 损失用于区分模型的预测结果是否足够有信心。

    6. Huber 损失

    • 公式

      L δ ( a ) = { 1 2 a 2 if  ∣ a ∣ ≤ δ δ ( ∣ a ∣ − 1 2 δ ) otherwise L_{\delta}(a) = \begin{cases} \frac{1}{2}a^2 & \text{if } |a| \leq \delta \\ \delta(|a| - \frac{1}{2}\delta) & \text{otherwise} \end{cases} Lδ(a)={21a2δ(a21δ)if aδotherwise

    • 适用场景:用于回归任务,尤其在需要平衡鲁棒性异常值敏感性时。

    • 解释:Huber 损失在误差较小时表现为均方误差(MSE),在误差较大时表现为平均绝对误差(MAE),因此在处理异常值时更加稳健。

    7. KL 散度(Kullback-Leibler Divergence)

    • 公式

      D K L ( P ∣ ∣ Q ) = ∑ i P ( i ) log ⁡ P ( i ) Q ( i ) D_{KL}(P || Q) = \sum_{i} P(i) \log \frac{P(i)}{Q(i)} DKL(P∣∣Q)=iP(i)logQ(i)P(i)

    • 适用场景:用于测量两个概率分布之间的差异,常用于生成模型自监督学习

    • 解释 K L KL KL 散度度量了真实分布 P P P 与预测分布 Q Q Q 之间的信息损失,越接近越好。

    8. Softmax 损失

    • 公式: L = − 1 N ∑ i = 1 N log ⁡ e y i ^ ∑ j e y j ^ 公式: L = - \frac{1}{N} \sum_{i=1}^{N} \log \frac{e^{\hat{y_i}}}{\sum_{j} e^{\hat{y_j}}} 公式:L=N1i=1Nlogjeyj^eyi^
    • 适用场景:通常用于多分类问题的神经网络输出层,结合交叉熵损失。
    • 解释 S o f t m a x Softmax Softmax 损失将多个分类的输出归一化为概率分布,并计算与真实标签的交叉熵损失。

    总结:

    • 回归任务:常用 MSE、MAE、Huber 损失等。
    • 分类任务:常用交叉熵损失、Hinge 损失、Softmax 损失等。
    • 生成模型/概率测量:常用 KL 散度等。

    损失函数的选择取决于具体的任务类型、数据特性以及模型需求。

评估方法 (Evaluation method)

  1. 留出法 (Hold-out method)

    这是最简单的验证方法之一,将数据集分成两个或三个部分:训练集和测试集(有时还有验证集)。训练集用于训练模型,测试集用于评估模型的性能。常见的划分比例是70%用于训练,30%用于测试。这种方法简单直接,但在数据量较小时可能不够稳定。

  2. 交叉验证法 (Cross-validation)

    交叉验证是一种比留出法更可靠的验证技术。最常见的是 k折交叉验证。数据集被分成k个相同大小的部分,模型训练k次,每次使用一个不同的部分作为测试集,其余部分作为训练集。这样可以更好地减少模型性能估计的方差,提供更稳定的结果。

  3. 自助法 (Bootstrapping)

    • 自助法是一种重采样技术,数据点从数据集中随机选取,允许有放回地抽样,以创建多个新的训练集。这种方法在数据集较小时尤其有用,因为它可以通过创建许多样本来帮助估计模型性能的不确定性。自助法主要用于估计统计量的分布或不确定性。
    • 通过自助法,初始数据集 D D D 中约有 36.8 % 36.8 \% 36.8% 的样本未被采样到数据集 D D D’ 中。
  4. 调参与最终模型 (Parameter tuning and final model)

    这指的是调整模型的超参数以优化性能的过程。常用的方法包括网格搜索(Grid Search)和随机搜索(Random Search),它们用于找到最佳的参数组合。在找到最佳参数之后,最终模型会在整个训练集上进行训练,并在测试集上评估模型的性能。

性能度量(Performance measure)

错误率与精度

  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} \mathbb{I}(f(x_i) \neq y_i) E(f;D)=m1i=1mI(f(xi)=yi)

      其中:

      • m m m 是数据集中的样本总数;
      • f ( x i ) f(x_i) f(xi) 是模型对样本 x i x_i xi 的预测结果;
      • y i y_i yi 是样本 x i x_i xi 的真实标签;
      • I ( f ( x i ) ≠ y i ) \mathbb{I}(f(x_i) \neq y_i) I(f(xi)=yi) 是一个指示函数,当 f ( x i ) ≠ y i f(x_i) \neq y_i f(xi)=yi 时取值为 1 1 1(表示预测错误),否则取值为 0 0 0
    • 错误率的意思是,模型在整个数据集上预测错误的样本占总样本数的比例。

  2. 精度
    • 精度表示模型预测正确的比例。公式如下:

      acc ( f ; D ) = 1 m ∑ i = 1 m I ( f ( x i ) = y i ) \text{acc}(f;D) = \frac{1}{m} \sum_{i=1}^{m} \mathbb{I}(f(x_i) = y_i) acc(f;D)=m1i=1mI(f(xi)=yi)

      • 精度公式与错误率类似,不同的是,这里的指示函数是 I ( f ( x i ) = y i ) \mathbb{I}(f(x_i) = y_i) I(f(xi)=yi) ,当模型预测正确时取值为 1 1 1(即 f ( x i ) = y i f(x_i) = y_i f(xi)=yi ),否则为 0 0 0

      • 因为精度和错误率是互补的关系,所以我们可以用以下公式表示精度:

        acc ( f ; D ) = 1 − E ( f ; D ) \text{acc}(f;D) = 1 - E(f;D) acc(f;D)=1E(f;D)

        即:精度等于 1 1 1 减去错误率。

总结:

  • 错误率精度 是评估模型性能的两个基本指标。错误率衡量模型的错误预测比例,而精度则衡量模型的正确预测比例。两者之间的关系是互补的,精度等于 1 1 1 减去错误率。

查准率、查全率与F1

在这里插入图片描述
在这里插入图片描述

混淆矩阵(Confusion Matrix):

表格中展示了分类结果的四种情况:

  • TP (True Positive):真正例,即模型正确预测为正类的样本。
  • FN (False Negative):假反例,即模型错误地预测为负类的正类样本。
  • FP (False Positive):假正例,即模型错误地预测为正类的负类样本。
  • TN (True Negative):真反例,即模型正确预测为负类的样本。

查准率(Precision, P):

  • 查准率衡量的是模型预测为正类的样本中,实际为正类的比例。公式为:

    P = T P T P + F P P = \frac{TP}{TP + FP} P=TP+FPTP

    解释:在所有被模型预测为正的样本中,有多少是实际正类。

查全率(Recall, R):

  • 查全率衡量的是所有实际为正类的样本中,模型正确预测为正类的比例。公式为:

    R = T P T P + F N R = \frac{TP}{TP + FN} R=TP+FNTP

    解释:在所有真实正类样本中,有多少被模型正确预测为正。

F1值(F1 Score):

  • F 1 F1 F1 值是查准率和查全率的调和平均,用来平衡查准率和查全率之间的权衡。公式为:

    F 1 = 2 × P × R P + R = 1 1 2 × ( 1 P + 1 R ) F1 = \frac{2 \times P \times R}{P + R} = \frac{1}{\frac{1}{2} \times (\frac{1}{P} +\frac{1}{R})} F1=P+R2×P×R=21×(P1+R1)1

    解释: F 1 F1 F1同时考虑了查准率和查全率,当这两者数值差距较大时, F 1 F1 F1 值能提供一个平衡的评估。

总结:

  • 查准率 衡量的是预测为正类的准确性。
  • 查全率 衡量的是对所有正类样本的覆盖程度。
  • F1值 提供了查准率和查全率的平衡评价,是在查准率和查全率有冲突时的常用指标。

案例分析:垃圾邮件识别

在这里插入图片描述

ROC与AUC

ROC曲线:

在这里插入图片描述

  • ROC曲线 是一个常用的评估分类模型性能的工具,特别是在二分类问题中。ROC曲线通过不同的分类阈值绘制出真正例率( T P R TPR TPR假正例率( F P R FPR FPR 的关系,帮助分析模型在不同阈值下的表现。

真正例率(True Positive Rate, TPR):

  • 真正例率也称为召回率(Recall),表示在所有真实的正类样本中,模型正确预测为正类的比例。公式如下:

    T P R = T P T P + F N TPR = \frac{TP}{TP + FN} TPR=TP+FNTP

    其中:

    • T P TP TP 是真正例(模型正确预测为正的样本数);
    • F N FN FN 是假反例(实际为正,但被模型预测为负的样本数)。

假正例率(False Positive Rate, FPR):

  • 假正例率表示在所有真实的负类样本中,模型错误预测为正类的比例。公式如下:

    F P R = F P F P + T N FPR = \frac{FP}{FP + TN} FPR=FP+TNFP

    其中:

    • F P FP FP 是假正例(实际为负,但被模型预测为正的样本数);
    • T N TN TN 是真反例(模型正确预测为负的样本数)。

AUC(Area Under ROC Curve):

在这里插入图片描述

  • A U C AUC AUC R O C ROC ROC曲线下面积,表示模型在不同阈值下的总体表现 A U C AUC AUC 值的范围是 0 0 0 1 1 1 A U C AUC AUC 越接近 1 1 1,说明模型的分类性能越好。
    • A U C AUC AUC 1 1 1:表示模型有完美的分类能力
    • A U C AUC AUC 0.5 0.5 0.5:表示模型的分类能力与随机猜测相当

总结:

  • ROC曲线 通过观察模型在不同阈值下真正例率假正例率的变化,评估模型的区分能力。
  • AUC 是ROC曲线下的面积,用来量化模型的整体表现,越接近 1 1 1代表模型性能越好。

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

背景:

例如,错误地将小区居民识别为陌生人,和将陌生人错误识别为小区居民,这两种错误在实际应用中会有不同的代价。因此,在分类模型的评估中,我们需要考虑不同类型错误的代价,而不仅仅是简单的错误率。

公式解释:

E ( f ; D ; c o s t ) = 1 m ( ∑ x i ∈ D + I ( f ( x i ) ≠ y i ) × c o s t 01 + ∑ x i ∈ D − I ( f ( x i ) ≠ y i ) × c o s t 10 ) E(f; D; cost) = \frac{1}{m} \left( \sum_{x_i \in D^+} \mathbb{I}(f(x_i) \neq y_i) \times cost_{01} + \sum_{x_i \in D^-} \mathbb{I}(f(x_i) \neq y_i) \times cost_{10} \right) E(f;D;cost)=m1(xiD+I(f(xi)=yi)×cost01+xiDI(f(xi)=yi)×cost10)

  • E ( f ; D ; c o s t ) E(f; D; cost) E(f;D;cost) :表示考虑错误代价后的总体错误率
  • m m m:数据集中样本的总数。
  • I ( f ( x i ) ≠ y i ) \mathbb{I}(f(x_i) \neq y_i) I(f(xi)=yi):一个指示函数,当模型 f ( x i ) f(x_i) f(xi) 预测错误(即 f ( x i ) ≠ y i f(x_i) \neq y_i f(xi)=yi )时,值为 1 1 1,否则为 0 0 0

代价因素:

  • D + D^+ D+ :样例集中正类的子集,也就是标签为 0 0 0(正类)的样本。
  • D − D^- D :样例集中负类的子集,也就是标签为 1 1 1(负类)的样本。
  • c o s t 01 cost_{01} cost01:将正类样本错误预测为负类样本的代价。例如,在实际中,将一个正常用户误判为危险用户可能产生较小的代价。
  • c o s t 10 cost_{10} cost10 :将负类样本错误预测为正类样本的代价。例如,将一个危险用户误判为正常用户,可能会带来很大的风险。

解释:

  • 该公式考虑了不同错误类型的代价。通过为不同的错误(假正例和假反例)分配不同的代价权重,模型可以更合理地应对代价不对称的情况。
  • 如果某种错误比另一种错误代价更高,公式会通过加权方式增加该类错误的惩罚,使模型更注重减少此类错误。

实际应用:

在一些场景中,错误的代价可能不均衡,比如在疾病诊断中,误诊为病人的代价(假正例)和漏诊的代价(假反例)是不一样的。漏诊可能导致更严重的后果,因此我们通常希望减少假反例(更高的代价)。

总结:

此公式提供了一种引入代价的错误率计算方式,通过权衡不同错误的代价,帮助设计出更符合实际应用需求的分类模型。

偏差与方差 (Bias and Variance)

泛化误差分解公式:

泛化误差 E ( f ; D ) E(f; D) E(f;D) 表示模型在新数据上的期望误差,它可以通过偏差(bias)方差(variance)不可避免的噪声项进行分解:

E ( f ; D ) = bias 2 ( x ) + var ( x ) + ϵ 2 E(f; D) = \text{bias}^2(x) + \text{var}(x) + \epsilon^2 E(f;D)=bias2(x)+var(x)+ϵ2

  • 偏差 bias 2 ( x ) \text{bias}^2(x) bias2(x) :衡量模型的预测值 f ˉ ( x ) \bar{f}(x) fˉ(x) 与真实输出 y y y 的差异,即模型的系统误差。偏差反映了模型在捕捉数据特征时的偏离程度。公式如下:

    bias 2 ( x ) = ( f ˉ ( x ) − y ) 2 \text{bias}^2(x) = \left( \bar{f}(x) - y \right)^2 bias2(x)=(fˉ(x)y)2

    偏差高通常意味着模型过于简单,无法很好地拟合数据(即欠拟合)。

  • 方差 var ( x ) \text{var}(x) var(x):衡量模型在不同训练集上的预测结果之间的波动性,反映了模型对训练数据的敏感程度。公式如下:

    var ( x ) = E D [ ( f ( x ; D ) − f ˉ ( x ) ) 2 ] \text{var}(x) = \mathbb{E}_D \left[ (f(x; D) - \bar{f}(x))^2 \right] var(x)=ED[(f(x;D)fˉ(x))2]

    方差高通常意味着模型过度依赖训练数据,容易过拟合(即过拟合)。

  • 噪声项 ϵ 2 \epsilon^2 ϵ2 :这是不可避免的误差,它来自数据本身的固有噪声,表示即使模型完美拟合数据,也无法消除的误差。公式如下:

    ϵ 2 = E D [ ( y D − y ) 2 ] \epsilon^2 = \mathbb{E}_D \left[ (y_D - y)^2 \right] ϵ2=ED[(yDy)2]

各项含义:

  • 偏差期望输出和真实输出的差别,代表了模型的学习能力。当模型过于简单时,偏差较大,容易出现欠拟合。
  • 方差:同样大小的训练集变动引起的模型预测变动,代表了模型对数据的敏感程度。当模型过于复杂时,方差较大,容易出现过拟合。
  • 噪声:数据本身所带来的无法消除的误差,这部分无法通过改进模型来减少。

在这里插入图片描述

结论:

泛化性能由学习算法的能力数据的充分性以及任务本身的难度共同决定。偏差和方差的权衡是机器学习中的一个核心问题,模型需要在复杂度和对数据的敏感性之间找到一个平衡点,既避免欠拟合(偏差过高),也避免过拟合(方差过高)。


http://www.kler.cn/a/310487.html

相关文章:

  • 有什么初学算法的书籍推荐?
  • 【Linux篇】面试——用户和组、文件类型、权限、进程
  • 云防护单节点2T抗攻击能力意味着什么?
  • 实现3D热力图
  • Vue2+3 —— Day3/4
  • 光流法与直接法在SLAM中的应用
  • Spring6梳理9—— 依赖注入之注入对象类型属性
  • array和linked list的区别
  • 从IPC摄像机读取视频帧解码并转化为YUV数据到转化为Bitmap
  • 探索Java中的设计模式:原则与实例
  • ubuntu24系统普通用户免密切换到root用户
  • 整流器制造5G智能工厂物联数字孪生平台,推进制造业数字化转型
  • 【Delphi】知道控件名称(字符串),访问控件
  • 数据结构与算法-18算法专向(hash)
  • 浅显易懂的Git教程
  • c基本知识
  • Windows10电脑右下角时间显示到秒
  • Golang | Leetcode Golang题解之第414题第三大的数
  • C++(学习)2024.9.18
  • Zabbix企业分布式监控(Zabbix Enterprise Distributed Monitoring)
  • Electron 图标修改
  • 深度学习 之 常见损失函数简介:名称、作用及用法
  • mysql 8.0 日期维度表生成(可运行)
  • CSS传统布局方法(补充)——WEB开发系列37
  • 【路径规划】WDM网络中RWA问题的教育网络规划工具(基于MILP和启发式)
  • 图说GPT网络结构(参数量与计算量估计)