机器学习2

一、模型评估方法

1.1 K折交叉验证法(K-Fold Cross Validation)

1.1.1 定义

K折交叉验证法是一种用于评估模型性能的技术。它将数据集分为K个相等的子集,模型会轮流使用一个子集作为测试集 ,其余K-1个子集作为训练集。这个过程会重复K次,最后取K次结果的平均作为模型的最终性能评价。

1.1.2 具体步骤
  1. 将数据集随机分成K个子集。
  2. 每次选择一个子集作为测试集,其他K-1个子集作为训练集。
  3. 对每个子集重复训练和测试K次。
  4. 取K次测试结果的平均值,作为最终模型评估结果。
1.1.3 实例

假设我们有1000个样本,使用5折交叉验证法。我们将数据分成5份:

  • 第一次用第1组作为测试集,其他4组作为训练集;
  • 第二次用第2组作为测试集,其他4组作为训练集;
  • 如此重复5次,最后取5次结果的平均值作为最终性能评估。
1.1.4 优缺点
  • 优点:能够充分利用数据集,减少评估的偏差,避免过拟合,适合样本较少的场景。
  • 缺点:计算开销较大,尤其K值较大时。

1.2 留1法(Leave-One-Out Cross Validation)

1.2.1 定义

留1法是K折交叉验证法的极端形式。每次只留出一个样本作为测试集 ,其余所有样本作为训练集。这一过程对每个样本重复多次,每次用一个样本做测试集,其余样本做训练集。

1.2.2 实例

假设我们有100个样本,留1法会重复训练100次,每次使用99个样本作为训练集,1个样本作为测试集。最后将100次测试结果取平均值作为模型的最终评估结果。

1.2.3 优缺点
  • 优点:使用了最大量的训练数据,适合小数据集,模型能够得到最精细的评估。
  • 缺点:计算代价非常高,尤其当数据量较大时,每次只测试一个样本,效率低。

1.3 自助法(Bootstrap)

1.3.1 定义

自助法是一种通过有放回抽样 的方法来生成训练集和测试集。它从原始数据集中有放回地抽取数据,形成训练集,剩余未被抽到的样本组成测试集。

1.3.2 实例

假设我们有100个样本,我们可以从中有放回地抽取100次(可能出现重复的样本),生成训练集,剩下未抽中的样本作为测试集。

1.3.3 优缺点
  • 优点:适合样本数较小的场景,有放回抽样可以增加数据的多样性。
  • 缺点:由于有放回抽样,有可能多个样本被多次选中,导致训练集和测试集可能存在较大的偏差。

1.4 留出法

1.4.1 数据集划分
  • 首先将数据集随机划分为两个不相交的子集:
    • 训练集(Training Set):用于模型训练,包含大部分的数据,一般占总数据的 70% - 80%。
    • 测试集(Test Set):用于模型评估,包含剩余的数据,通常占总数据的 20% - 30%。
1.4.2 模型训练
  • 使用训练集来训练模型,让模型学习数据的模式和特征。
1.4.3 模型评估
  • 训练完模型后,用测试集评估模型的泛化能力,测量模型在未见过的数据上的表现。
1.4.4 优缺点
1.4.4.1 优点
  • 简单直观:留出法的实现和理解都非常简单,只需要一次数据划分和一次模型评估。
  • 快速:由于仅需训练一次模型,计算代价较低,适合大数据集或当模型训练开销较大时使用。
1.4.4.2 缺点
  • 不稳定:留出法对数据划分的方式较为敏感,不同的划分方式可能导致模型性能的变化。尤其在数据量较小时,不同的训练集和测试集划分可能导致较大的评估波动。
  • 数据利用不足:留出法只使用了一部分数据进行模型训练,而没有充分利用全部数据。这可能会导致模型在小数据集上效果较差。
1.4.5 多次留出法

为了解决留出法可能出现的不稳定问题,可以使用多次留出法。其做法是多次随机划分数据集,每次重新训练和评估模型,最后将多次评估结果取平均,作为模型的最终评估结果。

1.4.6 实例解释

假设我们有一个包含 1000 个样本的数据集,想通过留出法评估一个分类模型的表现:

  1. 我们随机将数据集划分为 训练集 (800 个样本)和 测试集(200 个样本)。
  2. 使用这 800 个样本来训练模型,模型根据这些样本学习如何进行分类。
  3. 训练完成后,用剩余的 200 个样本(测试集)来评估模型的性能,计算模型在测试集上的准确率、查准率、查全率等评估指标。
  4. 模型的最终评估结果基于测试集的表现。
1.4.7 适用场景

留出法适用于以下场景:

  • 数据量较大时:在大数据集上,划分一部分数据作为测试集通常足以有效评估模型的表现。
  • 模型训练代价较高时:如果模型训练需要大量时间或资源,留出法可以减少计算负担。

总结来说,留出法 是一种快速简单的模型评估方法,但由于它仅进行一次数据划分,可能导致评估结果不稳定。为了获得更稳定的评估结果,可以通过多次留出法来改进这一问题。


二、分类模型评估指标

2.1 混淬矩阵(Confusion Matrix)

2.1.1 定义

混淬矩阵是评估分类模型表现的重要工具,用于将分类结果划分为四类:

  • 真正例(TP):模型正确预测为正的样本数。
  • 假正例(FP):模型错误预测为正的样本数。
  • 真负例(TN):模型正确预测为负的样本数。
  • 假负例(FN):模型错误预测为负的样本数。
2.1.2 实例

假设我们在癌症诊断中,有如下结果:

  • 真正例(TP) = 40:正确诊断出40名患者患病。
  • 假正例(FP) = 10:10名健康人被错误诊断为患病。
  • 真负例(TN) = 45:正确识别出45名健康患者。
  • 假负例(FN) = 5:5名患病患者被漏诊。
2.1.3 混淬矩阵相关指标
  • 准确率(Accuracy) :模型正确预测的比例。

    \\text{Accuracy} = \\frac{TP + TN}{TP + TN + FP + FN}

  • 查准率(Precision) :预测为正类的样本中,真正为正类的比例。

    \\text{Precision} = \\frac{TP}{TP + FP}

  • 查全率(Recall) :实际为正类的样本中,模型正确识别的比例。

    \\text{Recall} = \\frac{TP}{TP + FN}

  • F1分数 :查准率和查全率的调和平均数,综合考虑二者的平衡。

    F1 = 2 \\times \\frac{\\text{Precision} \\times \\text{Recall}}{\\text{Precision} + \\text{Recall}}


2.2 查准率与查全率

2.2.1 查准率(Precision)

查准率(又称精确率)衡量的是模型预测为正类的样本中,有多少真正为正类。查准率高,表示模型的误报率低

  • 公式

    \\text{Precision} = \\frac{TP}{TP + FP}

2.2.2 查全率(Recall)

查全率(又称召回率)衡量的是实际正类的样本中,模型能识别出多少正类。查全率高,表示模型的漏报率低

  • 公式

    \\text{Recall} = \\frac{TP}{TP + FN}

2.2.3 查准率和查全率的关系
  • 查准率和查全率的权衡 :查准率和查全率通常存在冲突关系,查准率高时,查全率往往较低,反之亦然。例如:
    • 查准率高:模型预测时非常谨慎,只预测非常有把握的样本为正类,但可能漏掉一些实际的正类,导致查全率下降。
    • 查全率高:模型预测时比较宽松,尽可能多地预测为正类,虽然能够捕捉大多数正类,但可能会有较高的误报率,导致查准率下降。
2.2.4 实例

假设模型预测了100个样本,其中有如下结果:

  • 真正例(TP)= 80
  • 假正例(FP)= 20
  • 假负例(FN)= 10

计算查准率和查全率:

  • 查准率:( \text{Precision} = \frac{80}{80 + 20} = 0.8 )
  • 查全率:( \text{Recall} = \frac{80}{80 + 10} = 0.89 )

2.3 F1分数

2.3.1 定义

F1分数是查准率和查全率的调和平均数,综合衡量模型在查准率和查全率之间的平衡

2.3.2 公式

F1 = 2 \\times \\frac{\\text{Precision} \\times \\text{Recall}}{\\text{Precision} + \\text{Recall}}

2.3.3 解释

F1分数的目的是在查准率和查全率之间找到一个平衡点,尤其在数据不平衡时,它是非常有用的指标。F1 分数越高,说明模型的查准率和查全率之间的平衡越好。

2.3.4 实例

假设查准率为0.8,查全率为0.89:

F1 = 2 \\times \\frac{0.8 \\times 0.89}{0.8 + 0.89} = 0.844

F1分数为0.844,表示查准率和查全率之间有一个较好的平衡。


2.4 Fβ分数

2.4.1 定义

Fβ分数F1分数 的一种变体,用来强调查准率(Precision)和查全率(Recall)之间的不同权重。β 参数控制了查全率和查准率的相对重要性:

  • β > 1 时,更注重查全率,适合漏报代价较高的场景。
  • β < 1 时,更注重查准率,适合误报代价较高的场景。
  • β = 1 时,Fβ 分数就是标准的 F1 分数,查准率和查全率同等重要。
2.4.2 公式

F_\\beta = (1 + \\beta\^2) \\times \\frac{\\text{Precision} \\times \\text{Recall}}{(\\beta\^2 \\times \\text{Precision}) + \\text{Recall}}

其中,β 用于调节查全率和查准率之间的平衡。

2.4.3 解释
  • β > 1:查全率的权重增加,模型更关注减少漏报(FN),适用于需要捕捉尽可能多的正类样本的场景(如医疗诊断中漏诊的代价较大)。
  • β < 1:查准率的权重增加,模型更关注减少误报(FP),适用于需要减少误报的场景(如垃圾邮件过滤,错误判断正常邮件为垃圾邮件的代价较高)。
2.4.4 实例

假设模型的查准率为0.75,查全率为0.85,且我们希望更关注查全率,因此选择 β = 2 。计算 F2 分数:

F_2 = (1 + 2\^2) \\times \\frac{0.75 \\times 0.85}{(2\^2 \\times 0.75) + 0.85} = 5 \\times \\frac{0.6375}{3.0 + 0.85} = 0.851

F2 分数为 0.851,表示我们在这个场景下更加注重查全率。


2.5 P-R 曲线(Precision-Recall Curve)

2.5.1 定义

P-R 曲线 展示了查准率(Precision)和查全率(Recall)在不同决策阈值下的变化。它用于评估分类模型在不平衡数据集上的表现,特别是在正类样本较少的情况下。

2.5.2 具体解读
  • 横轴:查全率(Recall),表示实际正类样本中,模型识别出来的比例。
  • 纵轴:查准率(Precision),表示预测为正类的样本中,真正为正类的比例。
  • 平衡点 :P-R 曲线中的平衡点通常是查准率和查全率之间的最佳权衡点,可以通过F1分数Fβ分数来评估该点。
2.5.3 实例

假设我们在一个二分类问题中调整模型的决策阈值,从而产生不同的查准率和查全率。通过不断调整阈值,我们可以绘制出模型的 P-R 曲线。模型越好,P-R 曲线越靠近右上角,说明查准率和查全率同时较高。

2.5.4 适用场景

P-R 曲线在不平衡数据集上尤其有用,例如在垃圾邮件检测、欺诈检测等场景中,正类(如垃圾邮件或欺诈)通常非常少,P-R 曲线能够更好地反映模型在正类样本上的表现。


2.6 ROC 曲线(Receiver Operating Characteristic Curve)

2.6.1 定义

ROC 曲线 展示了不同阈值下模型的**真阳性率(TPR)假阳性率(FPR)**之间的关系。它广泛用于评估分类模型在平衡数据集上的表现。

2.6.2 具体解读
  • 横轴:假阳性率(FPR),即负类样本中被误分类为正类的比例。
  • 纵轴:真阳性率(TPR),即正类样本中被正确分类为正类的比例。
  • AUC(曲线下面积):AUC 表示 ROC 曲线下面的面积,AUC 越大,说明模型性能越好,AUC = 1 表示完美模型,AUC = 0.5 表示模型的表现与随机猜测相同。
2.6.3 实例

假设我们训练了一个癌症诊断模型。我们通过调整阈值,得到不同的真阳性率和假阳性率,并绘制 ROC 曲线:

  • 阈值高:模型非常谨慎,只预测高概率样本为正类,假阳性率低,但真阳性率也可能较低。
  • 阈值低:模型较宽松,真阳性率较高,但假阳性率也会上升。

AUC 值可以帮助我们量化模型的性能。例如,AUC = 0.85 表示模型有 85% 的概率可以正确区分正类和负类样本。

2.6.4 适用场景

ROC 曲线适用于平衡数据集,当正类和负类样本数量相当时,ROC 曲线能全面展示模型在不同阈值下的表现。如果数据严重不平衡,P-R 曲线可能更适合。


三、代价敏感分类

3.1 代价敏感错误率(Cost-Sensitive Error Rate)

3.1.1 定义

代价敏感错误率 是一种加权的错误率,它不仅考虑模型的错误率,还根据不同错误类型(如假阳性和假阴性)的代价对错误率进行加权。它常用于那些错误代价不对称的场景。

3.1.2 公式

\\text{Cost-Sensitive Error Rate} = P(\\text{FP}) \\times C(\\text{FP}) + P(\\text{FN}) \\times C(\\text{FN})

  • ( P(\text{FP}) ):假阳性发生的概率。
  • ( P(\text{FN}) ):假阴性发生的概率。
  • ( C(\text{FP}) ):假阳性代价。
  • ( C(\text{FN}) ):假阴性代价。
3.1.3 实例

在癌症诊断中,假设假阳性代价为 500 元,假阴性代价为 10000 元。模型有 10% 的假阳性率和 5% 的假阴性率。代价敏感错误率为:

\\text{Cost-Sensitive Error Rate} = (0.10 \\times 500) + (0.05 \\times 10000) = 50 + 500 = 550

550 表示在考虑错误代价后,模型的加权错误率。


3.2 期望总体代价(Expected Total Cost, ETC)

3.2.1 定义

期望总体代价 是用于衡量模型在实际场景中的预期总成本。它结合了错误发生的概率、错误代价以及样本数量,用于评估模型在实际应用中的经济成本。

3.2.2 公式

ETC = P(\\text{FP}) \\times C(\\text{FP}) \\times N_{\\text{neg}} + P(\\text{FN}) \\times C(\\text{FN}) \\times N_{\\text{pos}}

  • ( N_{\text{neg}} ):负类样本数。
  • ( N_{\text{pos}} ):正类样本数。
3.2.3 实例

在癌症诊断中,假设我们有 900 名健康人和 100 名患者。假阳性代价为 500 元,假阴性代价为 10000 元。模型的假阳性率为 10%,假阴性率为 5%。期望总体代价为:

ETC = (0.10 \\times 500 \\times 900) + (0.05 \\times 10000 \\times 100) = 45000 + 50000 = 95000

95000 元是模型在这 1000 个测试样本上的预期总成本。


3.3 代价曲线(Cost Curve)

3.3.1 定义

代价曲线(Cost Curve) 展示了模型在不同假阳性和假阴性代价权重条件下的表现。通过调整假阳性与假阴性代价的比值,可以观察模型的错误率如何随代价权重变化。代价曲线常用于那些不同错误代价具有不对称性的应用场景。

3.3.2 具体解读
  • 横轴:表示不同的代价权重,即假阳性和假阴性代价的比值。
  • 纵轴:表示代价敏感错误率或模型的代价表现。随着代价权重的变化,模型的总代价表现会随之变化。
3.3.3 实例

假设在医疗场景中,假阳性代价较低(500元),假阴性代价较高(10000元)。我们可以通过调整代价权重来观察模型的表现:

  • 当代价曲线呈现出急剧上升时,说明假阴性的代价占据了主导地位,模型需要更加注重降低假阴性。
  • 如果代价曲线呈现平缓上升,说明模型在当前代价比下表现较为平衡。

通过观察代价曲线,决策者可以找到一个合适的代价权衡点,以减少总损失。

3.3.4 适用场景

代价曲线适用于错误代价不对称的场景,如医疗诊断、欺诈检测等,在这些领域中,错误类型的代价(误诊和漏诊、误报和漏报)往往差异很大。


四、代价敏感错误率与期望总体代价的区别

4.1 代价敏感错误率

  • 应用场景:用于评估模型的加权错误率,主要用来比较不同模型在不同错误代价条件下的表现。它关注的是模型的错误率,并根据不同错误类型的代价进行加权。
  • 公式

    \\text{Cost-Sensitive Error Rate} = P(\\text{FP}) \\times C(\\text{FP}) + P(\\text{FN}) \\times C(\\text{FN})

    它的重点是衡量模型的表现,而不直接计算总经济成本。

4.2 期望总体代价

  • 应用场景 :用于评估模型在实际应用中的总成本,尤其当需要衡量模型的错误会带来多大的实际经济损失时。期望总体代价考虑了样本数量,直接计算出模型在整个数据集上的预期总损失。
  • 公式

    ETC = P(\\text{FP}) \\times C(\\text{FP}) \\times N_{\\text{neg}} + P(\\text{FN}) \\times C(\\text{FN}) \\times N_{\\text{pos}}

    期望总体代价强调的是模型在实际使用时会带来的成本,适合实际应用中做决策。

4.3 关键区别总结

  • 代价敏感错误率:是评估指标,关注的是模型的加权错误率,用来比较多个模型的性能表现。
  • 期望总体代价:是成本评估,计算模型在实际应用中可能带来的总经济损失,特别适合决策中的成本分析。

五、知识体系总结

5.1 模型评估方法

  • K折交叉验证法:通过将数据集划分为K个子集,循环训练和测试,减少模型评估的偏差。
  • 留1法:每次只留一个样本作为测试集,计算代价高但使用最大训练数据。
  • 自助法:通过有放回抽样生成训练集,适合小样本数据集,增加数据多样性。

5.2 分类模型评估指标

  • 混淆矩阵:衡量分类模型的性能,计算真正例、假正例、真负例、假负例。
  • 查准率与查全率:分别衡量模型在正类预测中的准确性和召回率。
  • F1分数与Fβ分数 :查准率与查全率的调和平均数,用于平衡二者,Fβ分数 可以调节查全率和查准率的相对重要性。
  • P-R 曲线:展示查准率和查全率在不同阈值下的变化,适合不平衡数据集。
  • ROC 曲线:展示真阳性率与假阳性率的关系,适合平衡数据集,AUC 用于量化模型表现。

5.3 代价敏感分类

  • 代价敏感错误率:通过加权的错误率衡量模型在不同代价条件下的表现,用于模型的性能比较。
  • 期望总体代价:计算模型在实际应用中的预期经济损失,用于决策时的成本分析。
  • 代价曲线:展示模型在不同代价权重下的表现,帮助优化模型在不同代价比值条件下的权衡。

六、附录

6.1. AUC与排序质量

6.1.1 AUC 的定义和解读

AUC 是 ROC 曲线下面的面积,用来衡量分类器区分正类和负类样本的能力。AUC 值的范围是 0 到 1,AUC 值越接近 1,表示分类器的性能越好,能够更好地区分正类和负类样本。AUC = 0.5 时,表示模型的表现和随机猜测差不多;AUC < 0.5 则表示模型性能较差,甚至有可能反向预测。

6.1.2 AUC 衡量排序质量的含义

AUC 之所以与样本预测的排序质量 相关,是因为它实际上衡量了正类样本的预测概率是否普遍高于负类样本。具体来说,AUC 反映了当你随机选择一个正类样本和一个负类样本时,模型将正类样本的预测得分排在负类样本前面的概率。

6.1.3 排序的含义

在分类任务中,模型对每个样本都会给出一个概率分数,这个分数可以理解为模型认为样本属于正类的置信度。如果模型正确预测,它应该对正类样本给出较高的分数,对负类样本给出较低的分数。因此,排序质量 就是指模型是否能够正确地将正类样本排在负类样本之前。

  • 高排序质量:正类样本的预测分数普遍高于负类样本,AUC 越接近 1。
  • 低排序质量:正类样本的预测分数与负类样本接近,甚至负类样本的分数高于正类样本,AUC 越低。
6.1.4 计算排序质量的具体方式

当计算 AUC 时,可以通过以下方式来理解模型的排序质量:

  • 对于任意一个正类样本和负类样本组合,计算模型是否正确地给正类样本的预测分数比负类样本高。如果大多数情况下,正类样本的分数比负类样本高,则 AUC 会较高。
  • AUC 实际上可以看作是模型为正类样本排在负类样本之前的比例。如果这个比例接近 1,则说明模型的排序能力很好;如果这个比例接近 0.5,则说明模型的排序能力接近随机。
6.1.5 实例

假设我们有以下 6 个样本(3 个正类,3 个负类),模型给出了每个样本的预测概率:

  • 正类样本:0.9、0.8、0.6
  • 负类样本:0.3、0.2、0.1

我们可以计算所有正类样本与负类样本组合的排序情况:

  • 0.9 > 0.3、0.9 > 0.2、0.9 > 0.1
  • 0.8 > 0.3、0.8 > 0.2、0.8 > 0.1
  • 0.6 > 0.3、0.6 > 0.2、0.6 > 0.1

在所有可能的正负样本对中,模型都将正类样本的预测分数排在负类样本之前。因此,模型的排序质量非常高,AUC 接近 1。

如果我们反过来,假设模型给出的分数是:

  • 正类样本:0.4、0.3、0.2
  • 负类样本:0.8、0.7、0.6

在这种情况下,所有正类样本的分数都低于负类样本,因此模型的排序质量非常差,AUC 会非常低,接近 0。

6.1.6 区别和联系
  • 排序质量 主要关注模型对正类和负类样本的相对置信度排序,评估的是模型能否把正类样本的预测值普遍排在负类样本之前。
  • AUC 是用来量化这种排序质量的指标。它通过计算正类样本在负类样本前面的概率来衡量模型的整体表现,体现了模型对样本排序的合理性。
相关推荐
文心快码BaiduComate29 分钟前
百度云与光本位签署战略合作:用AI Agent 重构芯片研发流程
前端·人工智能·架构
风象南1 小时前
Claude Code这个隐藏技能,让我告别PPT焦虑
人工智能·后端
Mintopia2 小时前
OpenClaw 对软件行业产生的影响
人工智能
陈广亮3 小时前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬3 小时前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia3 小时前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区3 小时前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两6 小时前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
前端付豪6 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain