分类算法
分类算法
分类问题可以分为二分类问题和多分类问题,二分类问题的评价指标和多分类问题的评价指标不一样。
1. 分类算法评估指标
TP(True Positive):模型正确预测为正类的样本数
TN(True Negative):模型正确预测为负类的样本数
FP(False Positive):模型错误预测为正类的样本数
FN(False Negative):模型错误预测为负类的样本数
1.1. 为何要引入上述四个指标
在分类模型中,为何要提出 TP、TN、FP、FN 这几个概念,为何不能简单地用预测正确的除以所有预测样本。
在分类模型中,提出 TP(True Positive)、TN(True Negative)、FP(False Positive)、FN(False Negative) 这些概念,主要是为了更细致地分析和评估模型的性能,尤其是在面对类别不平衡数据集时,单纯的准确率(即预测正确的样本数占总样本数的比例)往往会具有误导性。
1.1.1. 准确率不能区分不同类型的错误
仅仅用“预测正确的样本数占总样本数的比例”无法告诉我们模型错误预测的具体类型。不同类型的错误在实际应用中可能有着非常不同的后果。比如:
- 假阳性 (FP):模型预测为正类,但实际是负类。这种错误在某些情况下可能带来严重影响,例如将健康的人预测为有疾病,从而引发不必要的治疗或心理压力。
- 假阴性 (FN):模型预测为负类,但实际是正类。这种错误在其他场景中可能更为严重,例如在安全系统中未检测到威胁。
准确率仅仅表示总的正确率,但不告诉我们模型在哪些方面(正类或负类)表现较差,而 TP、TN、FP、FN 的概念则帮助我们具体分析这些不同的错误类型。
1.1.2. 类别不平衡问题
当数据集中某一类占据绝大多数时,模型即使只对多数类进行正确预测,也能获得很高的准确率,但这并不意味着模型性能很好。例如,考虑一个极端的不平衡数据集,其中99%的样本属于负类,1%属于正类。一个只预测所有样本都是负类的模型,准确率仍然是 99%,但模型完全没有正确预测正类样本。
在这种情况下,FP 和 FN 变得极其重要,帮助我们评估模型在小样本类别(如正类)上的表现。使用这些指标,像精确率 (Precision) 和 召回率 (Recall) 这样的评估标准可以更好地衡量模型在不平衡数据集中的有效性。
1.1.3. 不同应用场景对错误的容忍度不同
在许多实际应用中,错误预测的代价是不同的。TP、TN、FP、FN 的概念允许我们计算诸如精确率、召回率、F1 值等评估指标,以权衡这些代价。例如:
- 在医疗诊断中,假阴性 (FN) 的代价通常很高,因为没有检测出疾病可能导致患者未能及时接受治疗。因此,召回率(即关注 FN 的指标)可能比准确率更重要。
- 在垃圾邮件过滤中,假阳性 (FP) 的代价可能更高,因为将重要邮件误认为垃圾邮件会影响用户体验,因此更关注精确率。
不同应用场景可能更关心特定的错误类型,TP、TN、FP、FN 的划分使得我们可以有针对性地选择最适合的评估指标。
1.1.4. 模型的综合评估
通过引入 TP、TN、FP、FN 的概念,我们能够从不同的角度综合评估模型的性能,避免只依赖于单一指标。基于这些概念可以计算出多个有助于模型优化和理解的指标,例如:
- 精确率 (Precision):模型预测为正类的样本中,实际为正类的比例。
- 召回率 (Recall):所有实际为正类的样本中,模型预测为正类的比例。
- F1 值 (F1 Score):精确率和召回率的调和平均,用于平衡精确率和召回率。
这些指标能反映模型在不同类型错误下的表现,帮助我们更全面地理解和改进模型。
1.1.5. 应用于不同类型的决策
根据不同场景的需要,模型需要在不同类型的错误之间做出权衡。通过分析 TP、TN、FP、FN,可以对模型进行更加细致的调节。例如:
- 在某些情况下,提高精确率 比 提高召回率 更重要,例如金融欺诈检测中,如果误报率(FP)过高,会增加银行的处理成本,因此模型应尽量减少 FP。
- 在其他情况下,提高召回率 更为关键,例如在癌症筛查中,FN 的代价非常高,因此应尽量减少 FN。
准确率无法为这种复杂的决策提供足够的信息,而 TP、TN、FP、FN 可以帮助我们从错误类型出发,灵活调节模型性能。
1.1.6. 结论
TP、TN、FP、FN 概念的提出,帮助我们深入理解分类模型的错误类型,并提供了多种性能评估指标,如精确率、召回率、F1 值,用于处理类别不平衡问题以及不同应用场景中的特殊需求。通过这些指标,能够帮助我们更有针对性地优化模型,适应不同场景的需求。单纯的准确率无法提供这些关键信息,因此引入 TP、TN、FP、FN 等概念是非常必要的。
1.2. 二分类具体指标
| 指标 | 定义 | 公式 | 通俗解释 |
|---|---|---|---|
| 准确率 (Accuracy) | 模型预测正确的样本数占总样本数的比例 | (TP + TN) / (TP + TN + FP + FN) | 模型整体上有多少比例的预测是对的 |
| 精确率 (Precision) | 预测为正类的样本中,实际为正类的比例 | TP / (TP + FP) | 预测为正的结果中有多少是真的 |
| 召回率 (Recall) | 实际为正类的样本中,预测为正类的比例 | TP / (TP + FN) | 所有真正是正类的样本中,有多少被成功预测为正类 |
| F1 值 (F1 Score) | 精确率与召回率的调和平均值 | 2 * (Precision * Recall) / (Precision + Recall) | 综合精确率和召回率的表现,用于衡量模型整体能力 |
| 假阳性率 (False Positive Rate) | 错误预测为正类的比例,即 FP / (FP + TN) | FP / (FP + TN) | 原本是负的样本被错误预测为正的比例 |
| 真阳性率 (True Positive Rate) | 模型对正类样本的识别能力,即 TP / (TP + FN) | TP / (TP + FN) | 模型对正类的识别能力有多强 |
| 特异性 (Specificity) | 模型对负类样本的识别能力,即 TN / (TN + FP) | TN / (TN + FP) | 模型对负类的识别能力有多强 |
| ROC 曲线 (ROC Curve) | 通过绘制 FPR 和 TPR 的曲线评估模型性能 | 通过 FPR 和 TPR 的变化绘制的曲线 | 显示模型在不同阈值下正确预测正类与错误预测正类的权衡 |
| AUC (Area Under Curve) | ROC 曲线下的面积,表示模型对正负类的区分能力 | ROC 曲线下面积,范围 [0, 1] | 面积越大,模型越能区分正负类样本 |
| 对数损失 (Log Loss) | 预测概率与真实标签之间的差异,损失越小模型越好 | - (1/N) * Σ(y_i log(p_i) + (1 - y_i) log(1 - p_i)) | 预测结果越接近实际标签,损失越小 |
1.2.1. 召回率的现实意义
召回率也称为查全率,是指在所有实际为正的样本中,被正确预测为正的样本所占的比例。简单来说,就是衡量一个系统能够找到多少真正的正样本。
- 信息检索:
- 在搜索引擎中,召回率衡量了搜索引擎能够找到多少与用户查询相关的文档。如果召回率低,意味着很多相关的文档没有被检索出来,用户可能会错过重要的信息。
- 例如,用户搜索关于 “人工智能的发展趋势” 的文档,一个高召回率的搜索引擎会尽可能多地返回与这个主题相关的文档,而不是只返回一部分。
- 机器学习中的分类问题:
- 在二分类问题中(如判断邮件是否为垃圾邮件、肿瘤是良性还是恶性等),召回率可以帮助我们评估模型在识别正类样本方面的性能。
- 如果一个用于检测癌症的机器学习模型召回率低,可能会导致很多患有癌症的病人被漏诊,这将带来严重的后果。
- 异常检测:
- 在检测系统异常或网络入侵等场景中,高召回率意味着能够尽可能多地发现真正的异常情况,减少漏报的风险。
1.3. 多分类问题指标
| 指标 | 定义 | 公式 | 通俗解释 |
|---|---|---|---|
| 准确率 (Accuracy) | 模型预测正确的样本数占总样本数的比例 | (正确预测的样本数) / (总样本数) | 模型所有预测中有多少是正确的。适合类别均衡的场景,若类别严重不平衡,准确率可能会产生误导。 |
| 宏平均精确率 (Macro-averaged Precision) | 每个类别的精确率,最后对所有类别取平均值 | (每个类别的精确率之和) / (类别数) | 计算每个类别被预测为正类的正确性,并对每个类别赋予相同的权重,适合类别样本量相差较大的场景。 |
| 宏平均召回率 (Macro-averaged Recall) | 每个类别的召回率,最后对所有类别取平均值 | (每个类别的召回率之和) / (类别数) | 计算每个类别的召回率,表示模型对每个类别是否能够成功捕捉正类样本,并对每个类别赋予相同权重。 |
| 宏平均 F1 值 (Macro-averaged F1 Score) | 每个类别的 F1 值,最后对所有类别取平均值 | (每个类别的 F1 值之和) / (类别数) | 综合精确率和召回率的表现,对每个类别都同等对待,适合类别不平衡的场景。 |
| 加权平均精确率 (Weighted-averaged Precision) | 每个类别的精确率,按类别样本数量加权取平均值 | (每个类别的精确率 * 类别样本数之和) / (总样本数) | 根据每个类别的样本数给精确率赋权重,大类别对结果的影响更大,适合样本量差距较大的多分类场景。 |
| 加权平均召回率 (Weighted-averaged Recall) | 每个类别的召回率,按类别样本数量加权取平均值 | (每个类别的召回率 * 类别样本数之和) / (总样本数) | 计算每个类别的召回率,并根据类别样本数赋权重,反映模型整体上是否能有效捕捉正类样本。 |
| 加权平均 F1 值 (Weighted-averaged F1 Score) | 每个类别的 F1 值,按类别样本数量加权取平均值 | (每个类别的 F1 值 * 类别样本数之和) / (总样本数) | 综合精确率和召回率,考虑类别样本数的影响,适合类别样本量差距较大的多分类问题。 |
| 微平均精确率 (Micro-averaged Precision) | 将所有类别的预测结果合并后计算的精确率 | (所有类别的 TP 之和) / (所有类别的 TP 和 FP 之和) | 把所有样本当作一个整体来计算,适合在类间样本数量差别不大时使用。 |
| 微平均召回率 (Micro-averaged Recall) | 将所有类别的预测结果合并后计算的召回率 | (所有类别的 TP 之和) / (所有类别的 TP 和 FN 之和) | 把所有类别的正类样本当作一个整体来计算,对整体召回率进行评估。 |
| 微平均 F1 值 (Micro-averaged F1 Score) | 将所有类别的 F1 值合并计算后的 F1 值 | 2 * (微平均精确率 * 微平均召回率) / (微平均精确率 + 微平均召回率) | 把所有类别当作一个整体来平衡精确率和召回率,适合关注整体性能的场景。 |
| 混淆矩阵 (Confusion Matrix) | 显示不同类别的真实标签和预测标签的分布情况 | 表示预测类别与实际类别的对应关系,形成矩阵 | 一个矩阵形式的表格,显示每个类别的正确预测数、误分类数,帮助直观了解模型在哪些类别上容易出错。 |
| Log Loss(对数损失) | 评估模型给出的概率分布与实际分类标签的差异 | - (1/N) * Σ(y_true * log(y_pred)) | 考虑到每个类别的预测概率,罚错得越离谱的预测,适用于输出概率的模型。 |
| ROC 曲线 (ROC Curve) | 将每个类别视为二分类问题,通过绘制假阳性率和真阳性率评估模型 | 每个类别单独画 ROC 曲线 | 用于评估模型区分类别的能力,曲线越接近左上角,模型的分类能力越好。 |
| AUC (Area Under Curve) | ROC 曲线下面积,表示模型对类别区分能力的平均值 | ROC 曲线下的面积,范围在 [0, 1] 之间 | AUC 值越接近 1,模型越能区分各类样本。适合需要评估整体分类能力的场景。 |
| Cohen's Kappa 系数 | 考虑随机猜测的影响,评估模型预测的可靠性 | (模型准确率 - 随机猜测准确率) / (1 - 随机猜测准确率) | 反映模型的实际表现与随机预测相比的改进程度,值越接近 1 表示模型效果越好。适合数据不平衡时使用。 |
1.4. 详细解释
- 准确率 (Accuracy):表示模型所有预测中有多少是正确的。适合类别分布较均衡的多分类任务,但如果某些类别样本极少,准确率容易被大类主导,掩盖模型对小类的表现。
- 宏平均精确率 (Macro-averaged Precision):计算每个类别的精确率,然后对这些精确率取平均值。它对每个类别一视同仁,适合类别数量不均衡的场景,不管大类或小类,都同样重视。
- 宏平均召回率 (Macro-averaged Recall):计算每个类别的召回率并取平均。和宏平均精确率类似,它关注每个类别的召回率,而不是依赖于大类。适合在每个类别都需要被关注的情况下使用。
- 宏平均 F1 值 (Macro-averaged F1 Score):计算每个类别的 F1 值,然后对这些 F1 值取平均。它均衡考虑精确率和召回率,适合在多分类任务中类别样本量差异较大时使用。
- 加权平均精确率/召回率/F1 值 (Weighted-averaged Precision/Recall/F1 Score):根据每个类别的样本数进行加权,因此样本量大的类别对结果影响更大。适用于类别样本量差异较大的情况。
- 微平均精确率/召回率/F1 值 (Micro-averaged Precision/Recall/F1 Score):将所有类别的预测结果合并为一个整体,适合类别样本数差异不大,或希望综合评估模型整体性能的场景。
- 混淆矩阵 (Confusion Matrix):一个表格,用于显示模型的预测结果与真实结果的匹配情况。它可以帮助直观了解模型在哪些类别上容易出错,方便进行模型调优。
- 对数损失 (Log Loss):衡量模型给出预测概率与实际分类标签之间的差异。它会惩罚那些置信度很高但预测错误的结果,适合需要概率输出的多分类任务。
- ROC 曲线 (ROC Curve):通过将多分类问题转化为多个二分类问题,对每个类别分别绘制 ROC 曲线,以评估模型的区分能力。
- AUC (Area Under Curve):表示 ROC 曲线下面积,用来衡量模型对所有类别的区分能力。AUC 值越接近 1,表示模型越能正确地区分各类样本。
- Cohen's Kappa 系数:在评估模型性能时,考虑了随机猜测的影响,适用于类别不平衡的数据。它可以帮助衡量模型的实际预测性能是否比随机猜测有显著提升。

浙公网安备 33010602011771号