【机器学习02--模型评估】

机器学习 --- 模型评估

  • 你需要得到更好的模型,怎么判断模型更好呢?
  • 你需要先得到训练集和测试集,怎么划分它们呢?
  • 训练完模型之后,在验证集上测试的时候,用什么指标衡量好坏呢?
  • 云里雾里,考察的重点来哩!
    • ROC曲线的含义与作用
    • AUC的定义
    • 计算AUC的过程
    • AUC的实现
  • 基础面试题

你需要得到更好的模型,怎么判断模型更好呢?

在机器学习任务中,通常将训练集上的误差叫做训练误差或经验误差,在新样本上的误差叫做泛化误差,我们肯定是希望模型或者得到的学习器的训练误差越小越好,但是一般情况下,我们并不知道新的样本,所以我们只能关注于经验误差,但是经验误差就算是0,也不能保证泛化误差很小,相反,如果泛化误差很小,一般说明对样本中不重要的特征也记录下来了,一般就会导致过拟合。那么我们应该怎么根据训练集来判断模型之间的好坏呢?就需要一套评价标准。

你需要先得到训练集和测试集,怎么划分它们呢?

一帮情况下,我们会将得到的数据划分为训练集和测试集,通过测试集上的性能来近似评估训练出的模型的泛化性能,因为最终训练出的模型的参数和训练集有关,所以不同的划分方式,可能就会导致得到的模型参数不同,从而导致泛化性能也不同,下面是几种常用的划分训练集和测试集的方法。

  • 留出法:直接将数据集划分为互斥的两个集合,一般70%-80%作为训练集,剩余的作为测试集,并且要注意的是,为了让训练的模型在整个数据集上的偏差较小,一般训练集和测试集中正负样本的数目是相同的,也就是正样本占50%,负样本占50%。
  • 交叉验证法:这种方法将整个数据集划分为互斥的大小相似的k个子集,然后去其中一个作为验证集,一般k取10。若另k=m(样本数量),则每一个子集包含一个样本。这种划分的好处是,使得在训练集上训练的模型和数据集上想要训练出的模型较为相似,但是会导致需要训练的模型很多,计算量很大(因为在k次划分的时候,需要重复p次取不同的训练集训不同的模型)。
  • 自助法:每一次从数据集D中随机抽一个,假设数据集D有m个样本,那么该样本被抽到的概率为 1 m \frac{1}{m} m1,不被抽到的概率为 ( 1 − 1 m ) (1-\frac{1}{m}) (1m1),抽取m次,则一个样本不被抽到的概率为 ( 1 − 1 m ) m (1-\frac{1}{m})^m (1m1)m,当m趋于无穷的时候,一个样本不被抽到的概率近似为 1 e \frac{1}{e} e1(因为m是整数,所以先换元,再洛必达,便得到极限值),即一个样本不被抽到的概率近似为0.368,自助法在数据集较小,难以有效划分训练集和测试集时比较有效,但是自助法产生的数据集改变了初始数据集的分布,会引入估计偏差。

训练完模型之后,在验证集上测试的时候,用什么指标衡量好坏呢?

在衡量一个模型的好坏的时候,需要借助多种性能度量方法,一般有以下几种:
错误率与精度,这个完全就是按照你从测试集中的样本总数中,预测的错误的数量除以总数,从而得到错误率。
查准率、查全率与F1。
查准率,就是在自己预测的所有的正样本中,预测正确的正样本的比率。
查全率,就是在所有的正样本中,预测的正样本的数量与所有正样本的数量的比率。
F1,就是跟这两有关的一个函数
P-R曲线通过将查准率作为纵轴,查全率作为横轴画的图。
ROC的纵轴为真正利率,横轴为假正利率。AUC为ROC下的面积。

云里雾里,考察的重点来哩!

ROC曲线的含义与作用

ROC曲线(Receiver Operating Characteristic Curve) 是一种常用于二分类模型的评价工具,用于可视化模型在不同分类阈值下的表现。ROC曲线描绘了 假正例率(FPR) 和 真正例率(TPR) 之间的关系,帮助我们评估模型在各种分类阈值下的分类能力。
这里提到的真正例率表示所有真样本中,预测出的正的比例,假正例率为所有假的样本中,预测出的正的比例。你看,ROC就是不一样,它既考虑正样本的分类能力,又考虑负样本下的预测分类能力,不像其他,只考虑一个。

AUC的定义

AUC(Area Under the Curve)是ROC(Receiver Operating Characteristic)曲线下的面积,衡量的是模型在不同分类阈值下的表现。AUC值越大,表示模型对正负类样本的区分能力越强。具体来说,AUC的值介于0和1之间,越接近1表示模型越好;AUC为0.5时表示模型表现与随机猜测相似。
AUC实际上刻画的是模型对正负类样本的整体区分能力,不受具体分类阈值的影响。因此,AUC越高,表示模型在 几乎所有的分类阈值下 都能更好地区分正类和负类。

  • AUC = 1:完美分类器,所有正类样本的分数都大于负类样本的分数。
  • AUC = 0.5:随机分类器,模型无法有效地区分正负类,等同于随机猜测。
  • AUC < 0.5:模型性能很差,比随机猜测还要差。
    AUC通过对ROC曲线下的面积计算得出,而ROC曲线是由不同的分类阈值下的 假正例率(FPR)真正例率(TPR) 组成的。

计算AUC的过程

AUC的计算可以通过以下步骤来实现:

  1. 计算模型的输出概率
    模型通常会输出每个样本属于正类的概率,而不是直接给出分类标签。AUC基于这些概率来评估模型的区分能力。
  2. 将样本按预测的概率排序
    将所有测试样本按模型预测的概率从高到低排序,较高的概率表示模型更倾向于该样本是正类。
  3. 计算真正例率和假正例率
    对于每个可能的阈值(即每个预测概率),计算TPR和FPR:
    TPR(召回率) = True Positives True Positives + False Negatives ​ \frac{\text{True Positives}}{\text{True Positives} + \text{False Negatives}}​ True Positives+False NegativesTrue Positives
    FPR = False Positives False Positives + True Negatives \frac{\text{False Positives}}{\text{False Positives} + \text{True Negatives}} False Positives+True NegativesFalse Positives
    然后,绘制ROC曲线,横轴是FPR,纵轴是TPR。
  4. 计算ROC曲线下的面积(AUC)
    AUC值即为ROC曲线下的面积。常用的计算方法包括 梯形法则(Trapezoidal Rule) 来近似计算AUC。

AUC的实现

import numpy as np
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt# 假设y_true是真实标签,y_scores是模型预测的概率值
y_true = np.array([0, 0, 1, 1])  # 真实标签(0表示负类,1表示正类)
y_scores = np.array([0.1, 0.4, 0.35, 0.8])  # 模型预测的概率值# 计算ROC曲线的FPR和TPR
fpr, tpr, thresholds = roc_curve(y_true, y_scores)# 计算AUC
roc_auc = auc(fpr, tpr)# 输出AUC
print(f'AUC: {roc_auc}')# 绘制ROC曲线
plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic (ROC)')
plt.legend(loc="lower right")
plt.show()

基础面试题

  • 有哪些评价指标?
    错误率、精度、查准率、查全率(Recall、查全率)、F1分数、ROC、AUC、PR曲线
    AUC是ROC曲线的面积,衡量的是模型的分类能力,值越大表示模型越好,AOC等于0.5,相当于随机判断模型。
  • AOC的计算方式?
    ROC曲线下的面积,即梯度的面积公式

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

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

相关文章

NPM镜像详解

NPM镜像详解 什么是NPM镜像 NPM镜像&#xff08;NPM Mirror&#xff09;是一个完整的NPM包的副本服务器。由于npm的官方registry服务器部署在国外&#xff0c;国内访问可能会比较慢&#xff0c;因此使用镜像可以加快包的下载速度。 常用的NPM镜像源 npm官方镜像 https://reg…

Linux 查看系统资源常用命令

目录 Linux 查看系统资源常用命令 一、top 二、htop 三、vmstat 四、iostat 五、mpstat 六、free 七、sar 八、ps 九、pstree 十、lsof 十一、uptime 十二、dmesg 十三、dmidecode 十四、lsblk 十五、blkid 十六、fdisk -l 十七、parted -l 十八、df -h 十…

【计算机网络】实验4:生成树协议STP的功能以及虚拟局域网VLAN

实验 4&#xff1a;生成树协议STP的功能以及虚拟局域网VLAN 一、 实验目的 加深对生成树协议STP的功能的理解。 了解虚拟局域网VLAN。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、验证交换机生成树协议STP的功能 (1) 第一步&#xff1a;构建网络拓…

Linux中的常用基本指令(下)

Linux常用基本指令 Linux中的基本指令12.head指令13.tail指令简单解释重定向与管道(重要) 14.date指令(时间相关的指令)15.cal指令(不重要)16.find指令(灰常重要&#xff09;17.grep指令(重要)18.which指令和alias指令19.zip/unzip指令&#xff1a;20.tar指令&#xff08;重要&…

服务器数据恢复—硬盘掉线导致热备盘同步失败的RAID5阵列数据恢复案例

服务器存储数据恢复环境&#xff1a; 华为S5300存储中有12块FC硬盘&#xff0c;其中11块硬盘作为数据盘组建了一组RAID5阵列&#xff0c;剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用&#xff0c;存放的数据主要是Oracle数据库。 服务器存储故障&#…

Vue+vite 组件开发的环境准备

一.nodejs安装 进入Node.js 官网&#xff08;Node.js — Run JavaScript Everywhere&#xff09;&#xff0c;点击下载。 双击打开&#xff0c;进行安装 双击打开后&#xff0c;点击 next&#xff08;下一步&#xff09;,后面也是一直点击 next 无其他设置&#xff0c;直到 …

20241129解决在Ubuntu20.04下编译中科创达的CM6125的Android10出现找不到库文件libtinfo.so.5的问题

20241129解决在Ubuntu20.04下编译中科创达的CM6125的Android10出现找不到库文件libtinfo.so.5的问题 2024/11/29 20:41 缘起&#xff1a;中科创达的高通CM6125开发板的Android10的编译环境需要。 [ 11% 15993/135734] target Java source list: vr [ 11% 15994/135734] target …

react 路由鉴权

权限路由一般两种 1中接口中返回菜单 2 接口中返回权限&#xff0c;前端做匹配 一般都是那种结合&#xff0c;react中没有vue那种钩子函数如何做&#xff1f; 在项目中写一个高阶函数&#xff0c;在高阶函数中判断权限、是否登录等操作app.tsx或者man.tsx中使用 《AuthRouter》…

Monkey操作及问题场景具体样例日志分析

目录 1. 应用崩溃 (App Crashes) 2. ANR (Application Not Responding) 3. 内存问题 (Memory Issues) 4、生成及查看日志&#xff1a; 1. 应用崩溃 (App Crashes) Monkey操作导致的场景&#xff1a; 你可以使用Monkey发送大量的点击事件、滑动操作或按键操作来模拟极端的…

k8s集群中金丝雀发布 + 声明式资源管理yaml

一、K8S常见的发布方式 旨在降低发布风险并提高发布速度 1、蓝绿发布 两套环境&#xff08;设备&#xff09;交替升级&#xff0c;旧版本保留一定时间便于回滚 优点&#xff1a;对用户无感&#xff0c;是最安全的发布方式&#xff0c;业务稳定 缺点&#xff1a;需要两套系统&…

openssl的运用

一、概述 Opssl是一个用于TLS/SSL协议的工具包&#xff0c;也是一个通用密码库。 包含了国密sm2 sm3 sm4&#xff0c;包含了对称加密&#xff0c;非对称加密&#xff0c;单项散列&#xff0c;伪随机、签名&#xff0c;密码交换&#xff0c;证书等一些算法库。 为了深层次的学习…

基于SpringBoot+Vue的靓车汽车销售网站-无偿分享 (附源码+LW+调试)

目录 1. 项目技术 2. 功能菜单 3. 部分功能截图 4. 研究背景 5. 研究目的 6. 可行性分析 6.1 技术可行性 6.2 经济可行性 6.3 操作可行性 7. 系统设计 7.1 概述 7.2 系统流程和逻辑 7.3 系统结构 8. 数据库设计 8.1 数据库ER图 &#xff08;1&#xff09;材料分…

基于飞腾S2500处理器的全国产加固服务器

近日&#xff0c;西安康德航测电子科技有限公司凭借其深厚的行业底蕴和创新精神&#xff0c;正式推出了基于飞腾S2500处理器的全国产加固服务器。这一产品的问世&#xff0c;不仅标志着我国在信息技术领域的自立自强迈出了坚实的一步&#xff0c;更以其卓越的性能、坚固的设计和…

Ubuntu源码安装gitlab13.7集群多前端《二》

Ubuntu源码安装gitlab13.7《一》 gitaly需要调整的服务 redis socket->ipbind ....* # 0.0.0.0pg vim /etc/postgresql/14/main/pg_hba.confhost all all ..../32 md5gitaly vim /home/git/gitaly/config.tomlbin_dir "/home/gi…

OpenStack-Glance组件

Glance Glance使用磁盘格式和容器格式基础配置镜像转换 Glance 是 OpenStack 的镜像服务&#xff0c;负责存储、发现和管理虚拟机镜像。它允许用户创建和共享镜像&#xff0c;用于启动虚拟机实例。 Glance 的主要功能 &#xff08;1&#xff09;虚拟机镜像的管理 支持镜像的上…

C++编程:模拟实现CyberRT的DataVisitor和DataDispatcher

文章目录 0. 引言1. 设计概要1.1 主要组件1.2 类关系图1.3 工作流程 2. 代码实现2.1. 定义数据结构2.2. 实现 DataVisitor2.3. 实现 DataDispatcher2.4. 实现 Receiver2.5. 实现具体的 DataVisitor2.6. 示例主程序2.7. 编译和运行 0. 引言 使用 C 实现一个类似CyberRT 架构的 …

求助——AssertionError: Attribute pipeline is missing from configuration.json.

我在本地运行Sunsimiao大模型的时候遇到了“AssertionError: Attribute pipeline is missing from configuration.json.”的问题。在网上找了很多问题都没有解决&#xff0c;求助一下广大网友。有什么好的解决方法吗&#xff1f; 本地环境如上所示&#xff0c;不知是哪里出…

虚幻引擎5(Unreal Engine 5)高级教程

虚幻引擎5&#xff08;Unreal Engine 5&#xff09;高级教程 引言 虚幻引擎5&#xff08;Unreal Engine 5&#xff0c;简称UE5&#xff09;是Epic Games推出的一款功能强大的游戏引擎&#xff0c;广泛应用于游戏开发、影视制作和虚拟现实等领域。UE5以其先进的图形渲染技术、…

2024年顶级小型语言模型前15名

本文&#xff0c;我们将深入了解2024年备受瞩目的十五款小型语言模型&#xff08;SLMs&#xff09;&#xff0c;它们分别是Llama 3.1 8B、Gemma2、Qwen 2、Mistral Nemo、Phi-3.5等。这些SLMs以其精巧的体积和高效率著称&#xff0c;它们不需要依赖庞大的服务器资源&#xff0c…

P3916 图的遍历(Tarjan缩点和反向建边)

P3916 图的遍历 - 洛谷 | 计算机科学教育新生态 写法一&#xff1a;Tarjan 思路&#xff1a;先运用Tarjan算法得到每个连通块中最大的编号&#xff0c;然后对每个连通块进行缩点重新建图&#xff0c;进行dfs&#xff0c;得到缩点后的连通块能够达到的最大编号。 Code: conste…