如何评价模型的好坏?

news2024/11/15 11:02:38

回归:

  • MSE(均方误差)—— 判定方法:值越小越好(真实值-预测值,平方之后求和平均)
  • RMSE(均根方误差)—— 判定方法:值越小越好(MSE开根号)
  • R squared/拟合优度   —— 判定方法:值越接近1模型表现越好

分类:

  • ROC —— 判定方法:ROC曲线应尽量偏离参考线(越远模型预测效果越好)
  • AUC —— 判定方法:AUC大于0.5
  • K-S图 —— 判定方法:其值在0到100之间,值越大,模型表现越好
  • gini系数 —— 判定方法:基尼系数应大于60%
  • 混淆矩阵 —— 判定方法:根据不同的模型选不同的参数

Sklearn中的模型评估:

  • estimator的score方法:sklearn中的estimator都具有一个score方法,提供一个缺省的评估法则来解决问题。
  • Scoring参数:使用cross-validation的模型评估工具,依赖于内部的scoring策略。
  • Metric函数:metrics模块实现了一些函数,用来评估预测误差。

Sklearn.metrics函数:

https://scikit-learn.org/stable/modules/classes.html#module-sklearn.metrics

【分类指标】

  • accuracy_score(y_true,y_pre) : 精度 
  • auc(x, y, reorder=False) : ROC曲线下的面积
  • average_precision_score(y_true, y_score, average='macro', sample_weight=None) : AP
  • brier_score_loss(y_true, y_prob, sample_weight=None, pos_label=None)
  • confusion_matrix(y_true, y_pred, labels=None, sample_weight=None) : 混淆矩阵
  • f1_score(y_true, y_pred, labels=None, pos_label=1, average='binary', sample_weight=None): F1值
  • log_loss(y_true, y_pred, eps=1e-15, normalize=True, sample_weight=None, labels=None):对数损耗
  • precision_score(y_true, y_pred, labels=None, pos_label=1, average='binary',) :查准率
  • recall_score(y_true, y_pred, labels=None, pos_label=1, average='binary', sample_weight=None):查全率
  • roc_auc_score(y_true, y_score, average='macro', sample_weight=None):ROC曲线下的面积就
  • roc_curve(y_true, y_score, pos_label=None, sample_weight=None, drop_intermediate=True) : ROC曲线的横纵坐标值

【回归指标】

  • explained_variance_score(y_true, y_pred, sample_weight=None, multioutput='uniform_average'):回归方差(自变量与因变量之间的相关程度)
  • mean_absolute_error(y_true, y_pred, sample_weight=None, multioutput='uniform_average'):平均绝对误差
  • mean_squared_error(y_true, y_pred, sample_weight=None, multioutput='uniform_average'):均方差
  • median_absolute_error(y_true, y_pred)  : 中值绝对误差
  • r2_score(y_true, y_pred, sample_weight=None, multioutput='uniform_average')  :R平方值

1.混淆矩阵

基于样本预测值和真实值是否相符,可得到4种结果:

TP(True Positive):样本预测值与真实值相符且均为正,即真阳性

FP(False Positive):样本预测值为正而真实值为负,即假阳性

FN(False Negative):样本预测值为负而真实值为正,即假阴性

TN(True Negative):样本预测值与真实值相符且均为负,即真阴性

第一类错误:原假设是正确的,而你判断它为错误的

第二类错误:原假设是错误的,而你判断它为正确的

2.准确度Accuracy

ACC\ =\ \frac{TP\ +\ TN}{TP\ +\ FP\ +\ FN\ +\ TN}

准确度(Accuracy Acc):准确度是所有预测中预测正确的比例。

3.精确率(Precision)

Precision\ =\ \frac{TP}{TP\ +\ FP}

Precision,准确率/查准率,需要注意的是, Precision 和 Accuracy 不一样,Accuracy 针对所有样本,而 Precision 仅针对预测出来(包括误检)的那一部分样本。 

4.召回率(Recall)

Recall\ =\ \frac{TP}{TP\ +\ FN}

例如,有一个池塘,里面共有1000条鱼,含100条鲫鱼。机器学习分类系统将这1000条鱼全部分类为“不是鲫鱼”,那么准确率也有90%(显然这样的分类系统是失败的),然而查全率为0%,因为没有鲫鱼样本被分对。这个例子显示出一个成功的分类系统必须同时考虑Precision和Recall,尤其是面对一个不平衡分类问题。

5.AUC(Area Under Curve

ROC (Receiver operating characteristic) 

ROC曲线的横坐标为FPR(False Positive Rate),纵坐标为TPR(True Positive Rate) 

FPR\ =\ \frac{FP}{FP\ +\ TN}                     TPR\ =\ \frac{TP}{TP\ +\ FN}

FPR表示负样本分错的概率;TPR表示正样本分对的概率

对于一个特定的分类器和测试数据集,显然只能得到一个分类结果,即一组FPR和TPR;而要得到一个曲线,实际上需要一系列的FPR和TPR的值,可以利用sigmoid函数计算样本预测输出为正的概率,然后根据设置不同的threshold,来获得多组FPR和TPR的值。

AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间

AUC值是一个概率值,当你随机挑选一个正样本以及一个负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值。当然,AUC值越大,当前的分类算法越有可能将正样本排在负样本前面,即能够更好的分类。

ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化

样本有偏,ACC很容易掩盖问题,但是AUC却可以出淤泥而不染!

6.AP(Average precision

查准率和查全率是一对矛盾的度量,一般而言,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。

从直观理解确实如此:我们如果希望好瓜尽可能多地选出来,则可以通过增加选瓜的数量来实现,如果将所有瓜都选上了,那么所有好瓜也必然被选上,但是这样查准率就会越低;若希望选出的瓜中好瓜的比例尽可能高,则只选最有把握的瓜,但这样难免会漏掉不少好瓜,导致查全率较低。通常只有在一些简单任务中,才可能使查全率和查准率都很高。所以为了更全面的衡量模型的性能提出了 AP。

Precision-recall曲线(PR曲线)(Precision Recall Curve),即横轴为 Recall,竖轴为 Precision。PR曲线的横轴Recall也就是TPR,反映了分类器对正例的覆盖能力。而纵轴Precision反映了分类器预测正例的准确程度。那么,Precision-recall曲线反映了分类器对正例的识别准确程度和对正例的覆盖能力之间的权衡。对于随机分类器而言,其Precision固定的等于样本中正例的比例,不随recall的变化而变化。

AP 的值就是 PR 曲线与 x 轴和 y 轴所围成图形的面积,不是Precision的平均值!!【设定阈值θ,得到不同点】

mAP 是从类别的维度对 AP 进行平均,因此可以评价多分类器的性能。

mAP\ =\ \frac{AP}{numclasses}

VOC mAP在实际计算中,由于 PR 曲线并不是单调递减的,而是抖动的,所以对进行“平滑”操作。由于 VOC 在 2010 年更新了“平滑”的方式。

  • AUC主要考察模型对正样本以及负样本的覆盖能力(即“找的全”)
  • mAP主要考察模型对正样本的覆盖能力以及识别能力(即对正样本的找的全找的对

7.F1 score

Precision体现了模型对负样本的区分能力,Precision越高,模型对负样本的区分能力越强;Recall体现了模型对正样本的识别能力,Recall越高,模型对正样本的识别能力越强。F1 score是两者的综合,F1 score越高,说明模型越稳健

F1\ =\ 2\times \ \frac{Precision\times Recall}{Precision+Recall}

8.其他常见指标:

Hamming loss(汉明损失),该指标衡量了预测所得标记与样本实际标记之间的不一致程度,即样本具 有标记y但未被识别出,或不具有标记y却别误判的可能性。例如对于一个多标签问题,某样本的真实标签为1,0,1,预测标签为0,1,1,有2个对1个错,Hamming loss=1/3。此评估指标值越小越好。

one-error,用来计算在测试文件集中,测试结果分类值(取值0~1)最高的标签不在实际分类标签中的文件数。如预测分类值为{0.3,0.8,0.2,0.5},其实际分类标签为{1,0,0,1}时,分类值最高的是第二个标签,但他并不在实际分类标签中,因此one-error评估值是1/4。同样,此评估值越小越好。

coverage,用于计算在整个测试文件集中,实际分类标签在预测分类标签中的最大rank值的平均值。如预测分类标签为{0.3,0.8,0.2,0.5},rank即为{3,1,4,2}。当实际分类标签为{1,0,0,1}时,此测试集的coverage评估值为2。同样,此评估值越小越好。

ranking loss,用于计算预测分类标记与实际分类标记中,rank排名相反的次数。此评估值越小越好。

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

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

相关文章

Dijkstra最短路径算法

参考:(3条消息) Dijkstra算法图文详解_一叶执念的博客-CSDN博客_迪杰斯特拉算法 如图,假设图中共有n条路径(如D-C-E),根据路径长度进行小到大排序。 1、起点到达某终点的距离是无穷符号,表示该起点还需要借…

27岁到来之际,我在阿里实现了年薪40W+的小目标

顺着大佬的思路,我分析了自己的实际水平和状况: 1、技术不精不成体系:技术能力浮于表面,对底层逻辑和架构不了解,也不知道如何系统化进行学习; 2、遇到职场瓶颈期:站在3年职场的分水岭上,没有…

Linux网络原理及编程(8)——第十八节 数据链路层

目录 1、MAC地址 2、MAC帧 3、MAC帧协议 4、MTU 5、ARP请求和应答 各位好,博主新建了个公众号《自学编程村》,拉到底部即可看到,有情趣可以关注看看哈哈,关注后还可以加博主wx呦~~~(公众号拉到底部就能看到呦~~&a…

基于java+springmvc+mybatis+jsp+mysql的新冠肺炎疫苗接种管理系统

项目介绍 新冠疫苗接种管理系统,在网站首页可以查看首页,疫苗信息,疫苗资讯 ,个人中心,后台管理,在线客服等内容,并进行详细操作。管理员登录进入系统可以查看首页,个人中心&#x…

vue自定义keepalive组件的问题解析

前一阵来了一个新的需求,要在vue项目中实现一个多开tab页面的功能,本来心想,这不简单嘛就是一个增加按钮重定向吗?(当然如果这么简单我就不写这个文章了)。很快写完,提交测试。测试大哥很快就提…

一份奇奇怪怪的地图设计书

地图设计书 地图设计是通过研究实验制定新编地图的内容、表现形式及其生产工艺程序的工作,是地图制图学各种活动的中心,贯穿整个地图制图过程。本设计选择了福建省龙岩市作为研究区域,并结合相应区域的土地利用类型、水系、道路等数据&#…

儿童剧本杀行业是好生意吗?剧本杀门店管理系统

红楼梦、西游记、水浒传、三国演义是中国四大名著,几乎每个中国人上到70岁老人,下到十岁小学生都知道,同时还有花木兰、包青天、八仙过海等故事也都耳濡目染,小说描述的淋漓尽致,影视剧老戏骨们将每个角色刻画的深入人…

spring-aop源码分析(3)完结_执行流程分析

本文详细介绍Spring AOP的执行阶段流程。 Cglib代理的代理拦截逻辑在DynamicAdvisedInterceptor中,JDK代理的拦截逻辑在JdkDynamicAopProxy中,本文将从这两个类入手分析Spring AOP的执行阶段流程。 DynamicAdvisedInterceptor private static class D…

Modbus数据采集方案

目录 目标 Modbus协议简介 配置界面以及实例 概述 modbus协议应该是工业行业应用最广泛的协议,由于其协议简单、通讯标准、扩展性强的特点,被各个行业大量的应用。作为通讯网关机来说,设计一个便捷易懂的配置方式显得尤其重要。本方案基于…

多模态中的指令控制(InstructPix2Pix,SayCan)

InstructPix2Pix: Learning to Follow Image Editing Instructions 图像的语言指令生成。目的是遵循人工指令去编辑图像,即给定输入图像和一个如何编辑它的文本指令,模型尝试遵循这些指令来编辑图像。 这份论文与现有基于文本的图像编辑工作们最大的不同…

【JVM】方法区与永久代、元空间之间的关系

方法区与永久代、元空间之间的关系 方法区是JVM规范中定义的一块内存区域,用来存储类元数据、方法字节码、即时编译器需要的信息等 永久代是Hotspot虚拟机对JVM规范的实现(1.8之前) 元空间是Hotspot虚拟机对JVM规范的实现(1.8以后),使用本地…

java基于springboot高校学报论文在线投稿系统-计算机毕业设计

项目介绍 在新发展的时代,众多的软件被开发出来,给用户带来了很大的选择余地,而且人们越来越追求更个性的需求。在这种时代背景下,高校只能以工作人员为导向,以稿件的持续创新作为高校最重要的竞争手段。 系统采用了J…

Java AQS

AQS 是什么 AQS 的全称为 AbstractQueuedSynchronizer,翻译过来的意思就是抽象队列同步器,这个类在 java.util.concurrent.locks 包下面Java 中的大部分同步类(Lock、Semaphore、ReentrantLock等) 都是基于 AQS 实现的AQS 是一种提供了原子式管理同步状…

SpringBoot - 整合WebSocket时@ServerEndpoint修饰的类属性注入为null问题

SpringBoot - 整合WebSocket时ServerEndpoint修饰的类属性注入为null问题前言一. 问题复现1.1 原因分析二. 问题解决前言 最近在做一个直播弹幕系统,前期准备先用WebSocket来试试水。我们都知道,使用WebSocket只需要给对应的类加上注解ServerEndpoint即…

Linux之定时任务--crontab命令解析学习

Corntab定时任务学习 一、crond服务 在学习crontab,命令之前,我觉得有必要学习了解一下crond服务,因为要在linux系统下使用crontab命令需要crond的支持。Crond是Linux下要用来周期执行某种任务或者等待处理某些事件的一个守护进程。和Windo…

项目——员工管理系统

开发环境:vmware ubuntu18.04 实现功能:基本功能包括管理者和普通员工用户的登录,管理者拥有操作所有员工信息的最高权限,可以进行增删改 查等操作,普通用户仅拥有查看、修改个人部分信息的权限 具体功能详解&…

python 学习笔记

解决执行python"ImportError: No module named requests"问题 #切换到python的安装目录执行如下命令 D:\Python27>pip install requestsImportError: No module named bs4错误解决方法 运行脚本时提示ImportError: No module named bs4错误,原因&…

[附源码]计算机毕业设计基于vue的软件谷公共信息平台Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Python——有限状态机

有限状态机(Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。FSM是一种算法思想,简单而言,有限状态机由一组状态…

【Lilishop商城】No3-5.模块详细设计,商品模块-1(商品分类、品牌管理、规格管理、参数、计量单位、店铺分类)的详细设计

仅涉及后端,全部目录看顶部专栏,代码、文档、接口路径在: 【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇会结合业务介绍重点设计逻辑,其中重点包括接口类、业务类,具体的结合源代码…