大语言模型的评估指标

目录

一、混淆矩阵

1. 混淆矩阵的结构(二分类为例)

2.从混淆矩阵衍生的核心指标

3.多分类任务的扩展

4. 混淆矩阵的实战应用

二、分类任务核心指标

1. Accuracy(准确率)

2. Precision(精确率)

3. Recall(召回率)

二、生成任务核心指标

1. BLEU(Bilingual Evaluation Understudy)

2. ROUGE(Recall-Oriented Understudy for Gisting Evaluation)

3. PPL(Perplexity,困惑度)

三、指标对比与选型指南

四:总结


一、混淆矩阵

混淆矩阵是评估分类模型性能的核心工具,是计算准确率(Accuracy)、精确率(Precision)召回率(Recall)的基础工具,三者直接由混淆矩阵中的四个核心元素(TP、FP、FN、TN)定义。以矩阵形式直观展示模型的预测结果与真实标签的对比情况,尤其适用于二分类问题(可扩展至多分类)。以下是其完整解析:


1. 混淆矩阵的结构(二分类为例)
真实为正类(Positive)真实为负类(Negative)
预测为正类(Positive)True Positive (TP)False Positive (FP)
预测为负类(Negative)False Negative (FN)True Negative (TN)
  • TP(真正例):模型正确预测为正类的样本数(例:真实为垃圾邮件,模型判定为垃圾邮件)。

  • FP(假正例):模型错误预测为正类的样本数(例:真实为正常邮件,模型误判为垃圾邮件)。

  • FN(假负例):模型错误预测为负类的样本数(例:真实为垃圾邮件,模型漏判为正常邮件)。

  • TN(真负例):模型正确预测为负类的样本数(例:真实为正常邮件,模型判定为正常邮件)。

2.从混淆矩阵衍生的核心指标

所有分类评估指标(Accuracy/Precision/Recall/F1)均可通过混淆矩阵计算:

指标公式物理意义
准确率(Accuracy)模型预测正确的总体比例,但对类别不均衡数据敏感(如99%负类时,全预测负类准确率99%)。
精确率(Precision)模型预测为正类的样本中,真实为正类的比例(减少误报)。
召回率(Recall)真实为正类的样本中,被模型正确预测的比例(减少漏报)。
F1-Score精确率和召回率的调和平均数,平衡两者矛盾。
3.多分类任务的扩展

对于多分类问题(如猫、狗、鸟分类),混淆矩阵扩展为 3×3 或更大的矩阵

预测:猫预测:狗预测:鸟
真实:猫TP₁=505(猫→狗)3(猫→鸟)
真实:狗2(狗→猫)TP₂=454(狗→鸟)
真实:鸟1(鸟→猫)2(鸟→狗)TP₃=40
  • 对角线(TP₁, TP₂, TP₃):各类别正确预测数。

  • 非对角线:类别间的混淆情况(如“猫→狗”表示真实为猫但预测为狗的样本数)。

多分类指标计算方式

  • 宏平均(Macro):对每个类别的指标单独计算后取平均(平等看待所有类别)。

  • 微平均(Micro):合并所有类别的TP/FP/FN后计算整体指标(受大类别影响更大)。

4. 混淆矩阵的实战应用

场景1:医疗诊断(二分类)

  • 目标:癌症筛查需最小化漏诊(FN↓),允许一定误诊(FP↑)。

  • 优化策略:提高召回率(Recall),通过降低分类阈值(如概率>0.2即判为患病)。

场景2:电商评论情感分析(三分类:正面/中性/负面)

  • 问题:负面评论的识别对商家更重要。

  • 优化策略:针对“负面”类别单独优化召回率,同时监控宏平均F1-Score。

场景3:推荐系统(点击预测)

  • 需求:减少误推荐(FP↓),避免用户流失。

  • 优化策略:提高精确率(Precision),仅对高置信度样本(如概率>0.8)进行推荐。


二、分类任务核心指标

1. Accuracy(准确率)
  • 定义:模型预测正确的样本数量占总样本量的比重。

  • 公式

  • 特点

    • 简单直观,但类别不均衡时失效

    • 例:100个样本中95个正类,全预测正类时准确率95%,但模型无意义

  • 适用场景:类别分布均衡的二分类或多分类任务

  • 意义
    所有预测中正确的比例,反映模型的整体表现。

  • 局限性
    在类别不均衡时(如99%负类),即使全预测为负类,准确率也可高达99%,但模型无实际意义

2. Precision(精确率)
  • 定义:在被识别为正类别的样本中,为正类别的比例。

  • 公式

  • 意义:衡量模型预测的精准度

    • 例:癌症筛查中,减少误诊(FP)更重要,需高精确率

  • 别名:查准率

  • 应用场景
    需减少误报(FP)的任务,如垃圾邮件分类(避免将正常邮件误判为垃圾)。

3. Recall(召回率)
  • 定义:在所有正类别样本中,被正确识别为正类别的比例。

  • 公式

  • 意义:衡量模型对正类的覆盖能力

    • 例:金融风控中,漏掉欺诈交易(FN)损失大,需高召回率

  • 别名:查全率

  • 应用场景
    需减少漏报(FN)的任务,如癌症筛查(宁可误诊,不可漏诊)。


二、生成任务核心指标

1. BLEU(Bilingual Evaluation Understudy)
  • 定义:BLEU 分数是评估一种语言翻译成另一种语言的文本质量的指标. 它将“质量”的好坏定义为与人类翻译结果的一致性程度. 取值范围是[0, 1], 越接近1, 表明翻译质量越好.

  • 用途:机器翻译、文本生成质量评估

  • 原理:通过n-gram(连续n个词)匹配计算生成文本与参考文本的相似度

  • 公式

    • BP(Brevity Penalty):惩罚过短生成结果

    • pnpn​:n-gram精度(匹配次数/生成文本n-gram总数)

  • 特点

    • 值域0~1,越高越好

    • 对长文本连贯性评估不足

    • 侧重精确性(生成文本是否包含参考文本的关键词)。

  • BLEU举例:
        BLEU 根据`n-gram`可以划分成多种评价指标,其中`n-gram`指的是连续的单词个数为n,实践中,通常是取N=1~4,然后对进行加权平均. 
 

下面举例说计算过程(基本步骤):
1. 分别计算candidate句和reference句的N-grams模型,然后统计其匹配的个数,计算匹配度.
2. 公式:candidate和reference中匹配的 n−gram 的个数 /candidate中n−gram 的个数.
Ø 假设机器翻译的译文candidate和一个参考翻译reference如下:

candidate: It is a nice day today
reference: today is a nice day
Ø 使用1-gram进行匹配:
candidate: {it, is, a, nice, day, today}
reference: {today, is, a, nice, day}
结果:其中{today, is, a, nice, day}匹配,所以 匹配度为5/6
Ø 使用2-gram进行匹配:
candidate: {it is, is a, a nice, nice day, day today}
reference: {today is, is a, a nice, nice day}
结果:其中{is a, a nice, nice day}匹配,所以 匹配度为3/5

Ø 使用3-gram进行匹配:

candidate: {it is a, is a nice, a nice day, nice day today}
reference: {today is a, is a nice, a nice day}
结果:其中{is a nice, a nice day}匹配,所以 匹配度为2/4
Ø 使用4-gram进行匹配:
candidate: {it is a nice, is a nice day, a nice day today}
reference: {today is a nice, is a nice day}
结果:其中{is a nice day}匹配,所以 匹配度为1/3

通过上面的例子分析可以发现,匹配的个数越多,BLEU值越大,则说明候选句子更好. 但是也会出现下面的极端情况:

极端例子:
candidate: the the the the
reference: The cat is standing on the ground
如果按照1-gram的方法进行匹配,则匹配度为1,显然是不合理的
优化:
首先,计算一个单词在任意一个参考句子出现的最大次数, 然后用每个(非重复)单词在参考句子中出现的最大次数来修剪--单词在候选句子的出现次数. 如下所示的公式:
其中k表示在候选句子(candidate)中出现的第k个词语, c k 则代表在候选句子中这个词语出现的次数,而s k 则代表在参考文本(reference)中这个词语出现的次数.
优化极端例子
candidate: the the the the
reference: The cat is standing on the ground
如果按照1-gram的方法进行匹配,ck=4 sk=2 ,countk=min(4,2)=2
则匹配度为2/4=1/2.

代码
# 安装nltk的包-->pip install nltk
from nltk.translate.bleu_score import sentence_bleu
def cumulative_bleu(reference, candidate):bleu_1_gram = sentence_bleu(reference, candidate, weights=(1, 0, 0, 0))bleu_2_gram = sentence_bleu(reference, candidate, weights=(0.5, 0.5, 0, 0))bleu_3_gram = sentence_bleu(reference, candidate, weights=(0.33, 0.33, 0.33, 0))bleu_4_gram = sentence_bleu(reference, candidate, weights=(0.25, 0.25, 0.25, 0.25))return bleu_1_gram, bleu_2_gram, bleu_3_gram, bleu_4_gram# 生成文本
condidate_text = ["This", "is", "some", "generated", "text"]
# 参考文本列表
reference_texts = [["This", "is", "a", "reference", "text"],
["This", "is", "another", "reference", "text"]]
# 计算 Bleu 指标
c_bleu = cumulative_bleu(reference_texts, condidate_text)
# 打印结果
print("The Bleu score is:", c_bleu)
# The Bleu score is: (0.6, 0.387, 1.5945e-102, 9.283e-155)
2. ROUGE(Recall-Oriented Understudy for Gisting Evaluation)
  • 定义:ROUGE 指标是在机器翻译、自动摘要、问答生成等领域常见的评估指标. ROUGE 通过将模型生 成的摘要或者回答与参考答案(一般是人工生成的)进行比较计算,得到对应的得分

  • 用途:文本摘要、对话生成评估

  • 常见变体

    • ROUGE-N:基于n-gram的召回率

    • ROUGE-L:基于最长公共子序列(LCS)

      • 评估生成文本与参考文本的语义覆盖度

  • 特点

    • ROUGE-N侧重词汇重叠,ROUGE-L关注语义连贯

    • 值域0~1,越高越好

    • 侧重内容覆盖度(生成文本是否包含参考文本的核心信息)。

    • 侧重召回率

  • ROUGE举例:

        ROUGE指标与BLEU指标非常类似,均可用来衡量生成结果和标准结果的匹配程度,不同的是ROUGE基于召回率,BLEU更看重准确率。ROUGE也分为四种方法:ROUGE-N, ROUGE-L, ROUGE-W, ROUGE-S.

下面举例说计算过程(这里只介绍ROUGE_N):

基本步骤:Rouge-N实际上是将模型生成的结果和标准结果按N-gram拆分后,计算召回率.

Ø 假设模型生成的文本candidate和一个参考文本reference如下:

candidate: It is a nice day today
reference: today is a nice day
Ø 使用ROUGE-1进行匹配:
candidate: {it, is, a, nice, day, today}
reference: {today, is, a, nice, day}
结果:其中{today, is, a, nice, day}匹配,所以匹配度为5/5=1,这说明生成的内容完全覆盖了参考文本中的所有单词,质量较高.
通过类似的方法,可以计算出其他ROUGE指标(如ROUGE-2、ROUGE-L、ROUGE-S)的评分.

代码

# 安装rouge-->pip install rouge
from rouge import Rouge# 生成文本
generated_text = "This is some generated text."
# 参考文本列表
reference_texts = ["This is a reference text.", "This is another generated reference text."]
# 计算 ROUGE 指标
rouge = Rouge()
scores = rouge.get_scores(generated_text, reference_texts[1])# 打印结果
print("ROUGE-1 precision:", scores[0]["rouge-1"]["p"])
print("ROUGE-1 recall:", scores[0]["rouge-1"]["r"])
print("ROUGE-1 F1 score:", scores[0]["rouge-1"]["f"])
# ROUGE-1 precision: 0.8
# ROUGE-1 recall: 0.6666666666666666
# ROUGE-1 F1 score: 0.7272727223140496
3. PPL(Perplexity,困惑度)
  • 定义:PPL用来度量一个概率分布或概率模型预测样本的好坏程度. PPL越小,标明模型越好.

  • 用途:语言模型(如GPT、BERT)的预训练评估

  • 定义:模型对测试数据集的“困惑程度”,反映预测能力

  • 公式

    • NN为测试集总词数,PP为模型预测概率

  • 特点

    • PPL越低,模型对语言分布拟合越好

    • 与生成质量间接相关(低PPL的模型生成文本更流畅,但未必内容正确)。

    • 例:GPT-3的PPL约20,远优于传统RNN模型(PPL>100)

代码

import math#定义语料库
sentences = [
['I', 'have', 'a', 'pen'],
['He', 'has', 'a', 'book'],
['She', 'has', 'a', 'cat']
]
#定义语言模型
unigram = {'I':1/12, 'have':1/12, 'a': 3/12, 'pen':1/12, 'He':1/12,'has':2/12,'book':1/12,'She':1/12, 'cat':1/12}# 计算困惑度
perplexity = 0
for sentence in sentences:sentence_prob = 1for word in sentence:sentence_prob *= unigram[word]temp = -math.log(sentence_prob, 2)/len(sentence)perplexity+=2**temp
perplexity = perplexity/len(sentences)
print('困惑度为:', perplexity)
# 困惑度为: 8.15

三、指标对比与选型指南

任务类型推荐指标核心关注点
文本分类Accuracy, F1, AUC-ROC类别均衡性、精确率与召回率平衡
机器翻译BLEU, METEORn-gram匹配、语义相似度
文本摘要ROUGE-L, ROUGE-1/2内容覆盖度、关键信息保留
语言模型预训练PPL语言建模能力(预测下一个词的能力)
情感分类Accuracy(均衡数据),F1(不均衡数据)

 四:总结

        Accuracy、Precision、Recall主要用于分类任务(如翻译、摘要),评估模型预测的准确性、精确性和覆盖性。而BLEU、ROUGE用于生成任务(如情感分析、意图识别),如机器翻译和文本摘要,评估生成文本的质量。PPL(困惑度)则用于评估语言模型本身的预测能力,不直接涉及具体任务的结果。以下是它们的关联与区别详解:

核心定位与任务类型

指标类型适用任务核心目标
BLEU/ROUGE/PPL生成任务(文本生成、翻译、摘要)评估生成文本的质量(内容匹配、流畅性)
Accuracy/Precision/Recall分类任务(二分类、多分类)评估分类结果的准确性、覆盖度与精准度
BLEU指标: 评估一种语言翻译成另一种语言的文本质量的指标.. 取值范围是[0, 1], 越接近1, 表明翻译质量越好.
ROUGE指标 ROUGE指标用来衡量生成结果和标准结果的匹配程 度,不同的是ROUGE基于召回率,BLEU更看重准确率。
PPL指标 PPL用来度量一个概率分布或概率模型预测样本的好 坏程度.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/78402.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot Gradle插件:构建与打包配置

文章目录 引言一、Spring Boot Gradle插件基础二、依赖管理与配置三、应用打包配置四、启动脚本与运行配置五、多环境构建与配置六、集成Docker与云原生支持七、实践案例:自定义Spring Boot应用构建总结 引言 在Java生态系统中,Gradle作为一种灵活且强大…

Vue3 组件通信与插槽

Vue3 组件通信方式全解(10种方案) 一、组件通信方式概览 通信方式适用场景数据流向复杂度Props/自定义事件父子组件简单通信父 ↔ 子⭐v-model 双向绑定父子表单组件父 ↔ 子⭐⭐Provide/Inject跨层级组件通信祖先 → 后代⭐⭐事件总线任意组件间通信任…

【KWDB 创作者计划】_嵌入式硬件篇---数字电子器件

文章目录 前言一、系列前缀(如 "74" 或 "54")74(商用级)54(工业级)二、逻辑家族(如 "LS"、"HC"、"HCT" 等)TTL(晶体管-晶体管逻辑)家族CMOS(互补金属氧化物半导体)家族BiCMOS(双极 CMOS)家族三、功能编号(如…

黄勇的《架构探险:从Java到大数据》内容详解

《架构探险:从Java到大数据》内容详解 1. 书籍核心主题 黄勇的《架构探险:从Java到大数据》是一本系统性探讨架构设计演进的著作,结合Java技术栈和大数据场景,深入分析了从单体架构到分布式、微服务、云原生的演进路径&#xff0…

【动手学强化学习】番外8-IPPO应用框架学习与复现

文章目录 一、待解决问题1.1 问题描述1.2 解决方法 二、方法详述2.1 必要说明(1)MAPPO 与 IPPO 算法的区别在于什么地方?(2)IPPO 算法应用框架主要参考来源 2.2 应用步骤2.2.1 搭建基础环境2.2.2 IPPO 算法实例复现&am…

驱动开发硬核特训 · Day 17:深入掌握中断机制与驱动开发中的应用实战

🎥 视频教程请关注 B 站:“嵌入式 Jerry” 一、前言 在嵌入式驱动开发中,“中断”几乎无处不在。无论是 GPIO 按键、串口通信、网络设备,还是 SoC 上的各种控制器,中断都扮演着核心触发机制的角色。对中断机制掌握程度…

通过门店销售明细表用PySpark得到每月每个门店的销冠和按月的同比环比数据

假设我在Amazon S3上有销售表的Parquet数据文件的路径,包含ID主键、门店ID、日期、销售员姓名和销售额,需要分别用PySpark的SparkSQL和Dataframe API统计出每个月所有门店和各门店销售额最高的人,不一定是一个人,以及他所在的门店…

PostgreSQL 常用日志

PostgreSQL 常用日志详解 PostgreSQL 提供了多种日志类型&#xff0c;用于监控数据库活动、排查问题和优化性能。以下是 PostgreSQL 中最常用的日志类型及其配置和使用方法。 一、主要日志类型 日志类型文件位置主要内容用途服务器日志postgresql-<日期>.log服务器运行…

MySQL 存储过程:解锁数据库编程的高效密码

目录 一、什么是存储过程?二、创建存储过程示例 1:创建一个简单的存储过程示例 2:创建带输入参数的存储过程示例 3:创建带输出参数的存储过程三、调用存储过程调用无参数存储过程调用带输入参数的存储过程调用带输出参数的存储过程四、存储过程中的流控制语句示例 1:使用 …

基于STM32的物流搬运机器人

功能&#xff1a;智能循迹、定距夹取、颜色切换、自动跟随、自动避障、声音夹取、蓝牙遥控、手柄遥控、颜色识别夹取、循迹避障、循迹定距…… 包含内容&#xff1a;完整源码、使用手册、原理图、视频演示、PPT、论文参考、其余资料 资料只私聊

pg_jieba 中文分词

os: centos 7.9.2009 pg: 14.7 pg_jieba 依赖 cppjieba、limonp pg_jieba 下载 su - postgreswget https://github.com/jaiminpan/pg_jieba/archive/refs/tags/vmaster.tar.gzunzip ./pg_jieba-master cd ~/pg_jieba-mastercppjieba、limonp 下载 su - postgrescd ~/pg_jie…

基于Python+Flask的MCP SDK响应式文档展示系统设计与实现

以下是使用Python Flask HTML实现的MCP文档展示系统&#xff1a; # app.py from flask import Flask, render_templateapp Flask(__name__)app.route(/) def index():return render_template(index.html)app.route(/installation) def installation():return render_templa…

【“星睿O6”AI PC开发套件评测】GPU矩阵指令算力,GPU带宽和NPU算力测试

【“星睿O6”AI PC开发套件评测】GPU矩阵指令算力&#xff0c;GPU带宽和NPU算力测试 安谋科技、此芯科技与瑞莎计算机联合打造了面向AI PC、边缘、机器人等不同场景的“星睿O6”开发套件 该套件异构集成了Armv9 CPU核心、Arm Immortalis™ GPU以及安谋科技“周易”NPU 开箱和…

【Go语言】RPC 使用指南(初学者版)

RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;是一种计算机通信协议&#xff0c;允许程序调用另一台计算机上的子程序&#xff0c;就像调用本地程序一样。Go 语言内置了 RPC 支持&#xff0c;下面我会详细介绍如何使用。 一、基本概念 在 Go 中&…

11、Refs:直接操控元素——React 19 DOM操作秘籍

一、元素操控的魔法本质 "Refs是巫师与麻瓜世界的连接通道&#xff0c;让开发者能像操控魔杖般精准控制DOM元素&#xff01;"魔杖工坊的奥利凡德先生轻抚着魔杖&#xff0c;React/Vue的refs能量在杖尖跃动。 ——以神秘事务司的量子纠缠理论为基&#xff0c;揭示DOM…

MinIO 教程:从入门到Spring Boot集成

文章目录 一. MinIO 简介1. 什么是MinIO&#xff1f;2. 应用场景 二. 文件系统存储发展史1. 服务器磁盘&#xff08;本地存储&#xff09;2. 分布式文件系统(如 HDFS、Ceph、GlusterFS)3. 对象存储&#xff08;如 MinIO、AWS S3&#xff09;4.对比总结5.选型建议6.示例方案 三.…

电竞俱乐部护航点单小程序,和平地铁俱乐部点单系统,三角洲护航小程序,暗区突围俱乐部小程序

电竞俱乐部护航点单小程序开发&#xff0c;和平地铁俱乐部点单系统&#xff0c;三角洲护航小程序&#xff0c;暗区突围俱乐部小程序开发 端口包含&#xff1a; 超管后台&#xff0c; 老板端&#xff0c;打手端&#xff0c;商家端&#xff0c;客服端&#xff0c;管事端&#x…

基于 IPMI + Kickstart + Jenkins 的 OS 自动化安装

Author&#xff1a;Arsen Date&#xff1a;2025/04/26 目录 环境要求实现步骤自定义 ISO安装 ipmitool安装 NFS定义 ks.cfg安装 HTTP编写 Pipeline 功能验证 环境要求 目标服务器支持 IPMI / Redfish 远程管理&#xff08;如 DELL iDRAC、HPE iLO、华为 iBMC&#xff09;&…

如何在SpringBoot中通过@Value注入Map和List并使用YAML配置?

在SpringBoot开发中&#xff0c;我们经常需要从配置文件中读取各种参数。对于简单的字符串或数值&#xff0c;直接使用Value注解就可以了。但当我们需要注入更复杂的数据结构&#xff0c;比如Map或者List时&#xff0c;该怎么操作呢&#xff1f;特别是使用YAML这种更人性化的配…

短信验证码安全实战:三网API+多语言适配开发指南

在短信服务中&#xff0c;创建自定义签名是发送通知、验证信息和其他类型消息的重要步骤。万维易源提供的“三网短信验证码”API为开发者和企业提供了高效、便捷的自定义签名创建服务&#xff0c;可以通过简单的接口调用提交签名给运营商审核。本文将详细介绍如何使用该API&…