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

LightGBM评估指标中至关重要的参数【average】介绍

LightGBM评估指标中至关重要的参数【average】介绍

      • 核心概念:为什么需要 `average`?
      • 各参数详解与应用场景
        • 1. `average='binary'`
        • 2. `average='micro'`
        • 3. `average='macro'`
        • 4. `average='weighted'`
        • 5. `average='samples'`
        • 6. `average=None`
      • 总结与选择建议

官方介绍:

average : {'micro', 'macro', 'samples', 'weighted', 'binary'} or None, \default='binary'This parameter is required for multiclass/multilabel targets.If ``None``, the metrics for each class are returned. Otherwise, thisdetermines the type of averaging performed on the data:``'binary'``:Only report results for the class specified by ``pos_label``.This is applicable only if targets (``y_{true,pred}``) are binary.``'micro'``:Calculate metrics globally by counting the total true positives,false negatives and false positives.``'macro'``:Calculate metrics for each label, and find their unweightedmean.  This does not take label imbalance into account.``'weighted'``:Calculate metrics for each label, and find their average weightedby support (the number of true instances for each label). Thisalters 'macro' to account for label imbalance; it can result in anF-score that is not between precision and recall.``'samples'``:Calculate metrics for each instance, and find their average (onlymeaningful for multilabel classification where this differs from:func:`accuracy_score`).

核心概念:为什么需要 average

在多分类(如识别猫、狗、鸟)或多标签(如为文章打上“科技”、“财经”、“体育”等多个标签)问题中,模型会为每个样本预测一个或多个类别。我们计算精确率(Precision)、召回率(Recall)、F1-score 等指标时,不再像二分类问题那样只有“正类”和“负类”两个维度。

average参数的作用就是​​指定一种策略,将多个类别的评估结果汇总成一个单一的数字​​,以便于我们快速、宏观地比较不同模型的性能。


各参数详解与应用场景

假设我们有一个三分类问题的结果,其混淆矩阵简化如下(TP = True Positive, FP = False Positive, FN = False Negative):

类别TPFPFN样本数(Support)
0105212 (10+2)
1203020 (20+0)
2128517 (12+5)
1. average='binary'
  • ​含义​​:​​二分类模式​​。只报告由 pos_label参数指定的那个类别的指标,完全忽略其他类别。将所有其他类别都视为“负类”。

  • ​使用场景​​:

    • ​仅适用于二分类问题​​。这是 Scikit-learn 中许多指标(如 f1_score, precision_score, recall_score)的默认值。
    • 如果你在一个多分类问题上错误地使用了 average='binary',而 pos_label又使用默认值(通常是1),那么它只会计算​​类别1​​的指标(如上例中,P=20/(20+3)≈0.87, R=20/(20+0)=1.0, F1≈0.93),这完全不能代表模型在整个数据集上的表现。
  • ​结论​​:​​只在标准的二分类问题中使用​​。

2. average='micro'
  • ​含义​​:​​微平均​​。先​​全局统计​​所有的 TP、FP、FN 的总数量,然后用这些总和来计算一个全局的指标。

    • 全局 TP = 10 + 20 + 12 = 42
    • 全局 FP = 5 + 3 + 8 = 16
    • 全局 FN = 2 + 0 + 5 = 7
    • Micro-Precision = 42 / (42 + 16) ≈ 0.724
    • Micro-Recall = 42 / (42 + 7) ≈ 0.857
    • Micro-F1 = (2 * 0.724 * 0.857) / (0.724 + 0.857) ≈ 0.785
  • ​特点​​:​​平等看待每个样本​​。无论样本属于哪个类别,它对最终指标的贡献都是相同的。因此,它受​​大类​​(样本数量多的类别)的性能影响更大。

  • ​使用场景​​:

    • 当你关心整个数据集上的​​整体性能​​,并且认为每个样本的权重应该相同时。
    • 在类别样本量​​不平衡​​的数据集上,如果你想衡量模型对​​大多数样本​​的识别能力,微平均是一个很好的选择。
  • ​一个重要特性​​:在多分类任务中,micro-average的 Precision、Recall、F1 三者​​值相等​​,并且等于​​准确率(Accuracy)​​。

3. average='macro'
  • ​含义​​:​​宏平均​​。​​先独立计算每个类别的指标​​,然后简单地计算这些指标的​​算术平均值​​。

    • P0 = 10 / (10 + 5) ≈ 0.667
    • P1 = 20 / (20 + 3) ≈ 0.870
    • P2 = 12 / (12 + 8) = 0.600
    • ​Macro-Precision​​ = (0.667 + 0.870 + 0.600) / 3 ≈ 0.712
  • ​特点​​:​​平等看待每个类别​​。无论类别的大小,每个类别对最终指标的贡献都是相同的。一个小众类别(如“2”)的性能会和一个大众类别(如“1”)的性能被同等对待。

  • ​使用场景​​:

    • 当你认为​​所有类别都同等重要​​时,无论它们的样本数量多少。例如,在医疗诊断中,一个罕见病(样本少)的重要性不亚于一个常见病(样本多)。
    • 当你想了解模型在​​小类别​​上的表现,而不希望其被大类别“淹没”时。
  • ​缺点​​:可能会被表现极差的少数类别拉低平均值,从而不能很好地反映模型在大多数样本上的表现。

4. average='weighted'
  • ​含义​​:​​加权平均​​。也是先独立计算每个类别的指标,然后计算这些指标的​​加权平均​​,​​权重是每个类别的真实样本数(Support)​​。

    • P0 ≈ 0.667, Support=12
    • P1 ≈ 0.870, Support=20
    • P2 = 0.600, Support=17
    • 总样本数 = 12 + 20 + 17 = 49
    • ​Weighted-Precision​​ = (0.667 * 12 + 0.870 * 20 + 0.600 * 17) / 49 ≈ 0.731
  • ​特点​​:是 macromicro之间的一种折衷。它通过类别样本量来调整权重,既考虑了每个类别的性能,又考虑了类别的重要性(样本越多越重要)。

  • ​使用场景​​:

    • 处理​​类别不平衡​​数据集时的​​首选​​。它比 macro更能反映模型在整体数据上的表现,同时又不像 micro那样完全被大类别主导。
    • 当你希望指标的数值能够考虑到类别分布时。
5. average='samples'
  • ​含义​​:​​按样本平均​​。这个指标的计算方式与前几种完全不同,它​​专为多标签问题设计​​。它为​​每个样本​​计算其所有标签的指标(基于真实标签和预测标签),然后对所有样本的指标求平均。

  • ​使用场景​​:

    • ​仅适用于多标签分类​​(一个样本可以有多个标签)。对于单标签多分类问题(一个样本只有一个标签),samples的结果与 micro相同。
    • 当你关心的是​​每个样本的预测质量​​,而不是每个标签的预测质量时。例如,一篇文章被预测为 [科技, 财经] 而它的真实标签是 [科技],那么对于这个样本,它的 Precision 就是 1/2=0.5(预测对了1个,多预测了1个),Recall 是 1/1=1.0(真实有1个,预测对了1个)。
6. average=None
  • ​含义​​:​​不进行平均​​。返回一个数组,其中包含​​每个类别​​的指标值。

  • ​使用场景​​:

    • 进行​​详细的模型诊断​​时。你可以清楚地看到模型在哪个类别上表现好,在哪个类别上表现差,从而进行有针对性的改进。
    • 这是最全面的方式,在你完成最终模型评估后,分析模型行为时非常有用。

总结与选择建议

参数核心思想适用场景对类别不平衡的敏感性
'binary'只看指定的一个类​仅限二分类​-
'micro'​平等看待每个样本​关心整体性能,尤其是大类的表现​敏感​​(受大类影响)
'macro'​平等看待每个类别​所有类别同等重要,关心小类的表现​不敏感​
'weighted'​按样本量加权看待每个类别​​处理类别不平衡时的首选​​,兼顾类别重要性​敏感​​(通过权重)
'samples'​平等看待每个样本​​的多标签​仅限多标签分类​​,关心每个样本的预测质量-
None不汇总,看全部细节模型诊断和详细分析-

​一般性建议:​

  1. ​二分类问题​​:使用 average='binary'

  2. ​多分类问题​​:

    • 如果​​类别平衡​​,macroweighted差别不大,用 macro可以看平均性能。
    • 如果​​类别不平衡​​,想更好地反映整体性能,优先使用 weighted
    • 如果想​​诊断模型在特定类别上的问题​​,一定要使用 None来查看所有类别的单独指标。
  3. ​多标签问题​​:根据你的目标选择 micro, macro, weightedsamplessamples提供了独特的视角。

http://www.dtcms.com/a/465113.html

相关文章:

  • 基于tcl脚本构建Xilinx Vivado工程
  • 从3C电子到半导体封装,微型导轨具备哪些优势?
  • TCP中的流量控制
  • 专业建站推广网络公司网站建设和维护实训
  • AMD发布专为工业计算与自动化平台打造的锐龙嵌入式9000系列处理器
  • 短视频矩阵系统哪个好用?2025最新评测与推荐|小麦矩阵系统
  • 代理IP+账号矩阵:Cliproxy与TGX Account如何赋能品牌全球化表达?
  • 张量、向量与矩阵:多维世界的数据密码
  • 前端框架深度解析:Angular 从架构到实战,掌握企业级开发标准
  • 廊坊做网站教程泉州网站建设技术支持
  • 安全月报 | 傲盾DDoS攻击防御2025年9月简报
  • 有哪些做品牌特卖的网站做网页专题 应该关注哪些网站
  • 探索MySQL8.0隐藏特性窗口函数如何提升数据分析效率
  • 对于生物样本库的温湿度监控是如何实现对数据进行历史数据分析的呢?
  • 深入解析 Amazon Athena:云上高效数据分析的关键引擎
  • [SQL]如何使用窗口函数提升数据分析效率实战案例解析
  • Centos 7 | 定时运行 gzip 进程导致 CPU 过高,但无法确定系统自动运行 gzip 的原因 排查思路
  • Python爬虫实战:获取证监会外国投资机构信息及数据分析
  • seo网站推广费用装饰公司看的设计网站
  • 全栈开发杂谈————JAVA微服务全套技术栈详解
  • 微服务——SpringBoot使用归纳——Spring Boot中使用拦截器——拦截器的快速使用
  • 仿小红书短视频APP源码:Java微服务版支持小程序编译的技术解析
  • 免费行情网站app斗印wordpress增加内存分配给php
  • mysql高可用架构之MHA部署(一)(保姆级)
  • MySQL索引优化实战从慢查询到高性能的解决方案
  • 力扣每日一题(二)任务安排问题 + 区间变换问题 + 排列组合数学推式子
  • LeetCode-33.搜索旋转排序数组-二分查找
  • R语言基础入门详细教程
  • 用wordpress建立学校网站吗人工智能教育培训机构排名
  • 网站及其建设的心得体会wordpress能做大站吗