一、模型评估方法
1.1 K折交叉验证法(K-Fold Cross Validation)
1.1.1 定义
K折交叉验证法是一种用于评估模型性能的技术。它将数据集分为K个相等的子集,模型会轮流使用一个子集作为测试集 ,其余K-1个子集作为训练集。这个过程会重复K次,最后取K次结果的平均作为模型的最终性能评价。
1.1.2 具体步骤
- 将数据集随机分成K个子集。
- 每次选择一个子集作为测试集,其他K-1个子集作为训练集。
- 对每个子集重复训练和测试K次。
- 取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 个样本的数据集,想通过留出法评估一个分类模型的表现:
- 我们随机将数据集划分为 训练集 (800 个样本)和 测试集(200 个样本)。
- 使用这 800 个样本来训练模型,模型根据这些样本学习如何进行分类。
- 训练完成后,用剩余的 200 个样本(测试集)来评估模型的性能,计算模型在测试集上的准确率、查准率、查全率等评估指标。
- 模型的最终评估结果基于测试集的表现。
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 是用来量化这种排序质量的指标。它通过计算正类样本在负类样本前面的概率来衡量模型的整体表现,体现了模型对样本排序的合理性。