加了权重样本的AUC如何计算

article/2025/10/3 21:53:39

加了权重样本的AUC如何计算?对理解roc_auc_score函数里sample_weight参数以及xgb模型赋予样本权重再评估都有帮助哦~

一、

roc_auc_score函数中有个参数是sample_weight,可以给样本设置权重。一直不太理解加上weight怎么来计算AUC,先放个可选参数插图康康。

二、

直到有一天,我不得不面对这个问题。起因竟然是比较熟悉的xgboost(其实是硬往自己脸上贴金了额)。

在训练xgboost的时候,xgb.DMatrix()函数里有个weight的参数,可以给样本设置权重,这样xgb就可以在设置了权重的样本集上训练啦。可是打印出来的logloss和auc是在加权了的数据集上计算出来的吗?怎么计算出来的?

只要DMatrix()函数里设置了weight参数,打印出来的metric都是在加了权重的数据集上计算出来的。先放个代码,放个打印出来的logloss和auc康康:

params = {
'booster': 'gbtree',
'objective': 'binary:logistic',
'metric':['auc','logloss'],
'eval_metric':['auc','logloss'],
'max_depth':5,
'min_child_weight':500,
'gamma':0.1,
'eta':0.02
}
weights_train=[1]*20000+[3]*5755#瞎设置的哈哈哈
weights_valid=[1]*4000+[3]*2440#瞎设置的哈哈哈
dtrain=xgb.DMatrix(data=X_train,label=y_train,weight=weights_train)#训练集加上权重训练了,在这个实验中训练集加不加权重其实无所谓的
dvalid=xgb.DMatrix(data=X_valid,label=y_valid) #dvalid是没有加权重的
dvalid_weight=xgb.DMatrix(data=X_valid,label=y_valid,weight=weights_valid) #dvalid_weight是加上权重的
xgbM = xgb.train(params=params, dtrain=dtrain, num_boost_round=200,evals=[(dtrain, 'train'),(dvalid,'valid'),(dvalid_weight,'dvalid_weight')],verbose_eval=10)# 打印出来的结果,和上边的代码放到一起了
[0]	train-auc:0.641996	train-logloss:0.691894	valid-auc:0.630333	valid-logloss:0.692002	dvalid_weight-auc:0.627448	dvalid_weight-logloss:0.69202
[10]	train-auc:0.66727	train-logloss:0.681568	valid-auc:0.64835	valid-logloss:0.682969	dvalid_weight-auc:0.648128	dvalid_weight-logloss:0.682991
[20]	train-auc:0.675196	train-logloss:0.673523	valid-auc:0.655988	valid-logloss:0.676026	dvalid_weight-auc:0.656417	dvalid_weight-logloss:0.675993
[30]	train-auc:0.684573	train-logloss:0.666594	valid-auc:0.662995	valid-logloss:0.670258	dvalid_weight-auc:0.66354	dvalid_weight-logloss:0.670276
[40]	train-auc:0.690524	train-logloss:0.660946	valid-auc:0.668417	valid-logloss:0.665506	dvalid_weight-auc:0.669053	dvalid_weight-logloss:0.66552
[50]	train-auc:0.694543	train-logloss:0.65606	valid-auc:0.67176	valid-logloss:0.661508	dvalid_weight-auc:0.672228	dvalid_weight-logloss:0.66154
[60]	train-auc:0.69787	train-logloss:0.651922	valid-auc:0.674329	valid-logloss:0.658201	dvalid_weight-auc:0.674648	dvalid_weight-logloss:0.658267
[70]	train-auc:0.701215	train-logloss:0.648284	valid-auc:0.678037	valid-logloss:0.655034	dvalid_weight-auc:0.678326	dvalid_weight-logloss:0.6551
[80]	train-auc:0.70408	train-logloss:0.64509	valid-auc:0.680634	valid-logloss:0.652396	dvalid_weight-auc:0.681254	dvalid_weight-logloss:0.652361
[90]	train-auc:0.707093	train-logloss:0.642096	valid-auc:0.682555	valid-logloss:0.650213	dvalid_weight-auc:0.683379	dvalid_weight-logloss:0.650129
[100]	train-auc:0.70977	train-logloss:0.639381	valid-auc:0.68519	valid-logloss:0.647905	dvalid_weight-auc:0.686108	dvalid_weight-logloss:0.647798
[110]	train-auc:0.712686	train-logloss:0.63678	valid-auc:0.687197	valid-logloss:0.64602	dvalid_weight-auc:0.688147	dvalid_weight-logloss:0.645902
[120]	train-auc:0.71508	train-logloss:0.634466	valid-auc:0.689243	valid-logloss:0.644191	dvalid_weight-auc:0.690372	dvalid_weight-logloss:0.643994
[130]	train-auc:0.717253	train-logloss:0.632345	valid-auc:0.690666	valid-logloss:0.642691	dvalid_weight-auc:0.691654	dvalid_weight-logloss:0.642531
[140]	train-auc:0.719445	train-logloss:0.630243	valid-auc:0.691928	valid-logloss:0.641264	dvalid_weight-auc:0.692845	dvalid_weight-logloss:0.6411
[150]	train-auc:0.721572	train-logloss:0.628253	valid-auc:0.693036	valid-logloss:0.639989	dvalid_weight-auc:0.693907	dvalid_weight-logloss:0.639838
[160]	train-auc:0.723874	train-logloss:0.626385	valid-auc:0.694642	valid-logloss:0.638671	dvalid_weight-auc:0.695757	dvalid_weight-logloss:0.638446
[170]	train-auc:0.726103	train-logloss:0.624491	valid-auc:0.695588	valid-logloss:0.637585	dvalid_weight-auc:0.696652	dvalid_weight-logloss:0.637376
[180]	train-auc:0.728078	train-logloss:0.622813	valid-auc:0.696803	valid-logloss:0.636476	dvalid_weight-auc:0.698082	dvalid_weight-logloss:0.636165
[190]	train-auc:0.729859	train-logloss:0.621344	valid-auc:0.697429	valid-logloss:0.635745	dvalid_weight-auc:0.698875	dvalid_weight-logloss:0.635403
[199]	train-auc:0.731724	train-logloss:0.619909	valid-auc:0.698372	valid-logloss:0.634916	dvalid_weight-auc:0.699855	dvalid_weight-logloss:0.634549

模型预测dvalid和dvalid_weight,每次迭代过程中它两的logloss和auc均不相同。

logloss比较容易理解,可以计算所有样本的加权平均logloss。这个auc,怎么计算?

三、

一和二其实可以联系在一起啊。

xgboost计算加了权重的样本的auc,其实和给roc_auc_score函数的sample_weight参数赋予权重计算出来的auc是一样的结果。可以试试自定义一个metric函数试试,就biu一下主要的两行代码吧,这次打印出来的结果dvalid和dvalid_weight的auc就是一样的啦,小伙伴们可以亲自动手试一下。

def auc_weight(preds,dtrain): #preds是结果(概率值),dtrain是个带label的DMatrixlabels=dtrain.get_label() #提取labelreturn 'auc_weight',float(roc_auc_score(labels,preds,sample_weight=weights_valid))
xgbM = xgb.train(params=params, dtrain=dtrain, num_boost_round=200,evals=[(dvalid,'valid'),(dvalid_weight,'dvalid_weight')],verbose_eval=10,feval=auc_weight)#feval指定自定义评价函数

四、

最重要的部分来啦,给roc_auc_score函数的sample_weight参数赋予权重后,auc是怎么计算出来的呀。

大家还记得AUC的知识嘛?给大家po一篇blog,可以温习一下。https://blog.csdn.net/u013385925/article/details/80385873。

计算赋予权重数据的auc,其实就是把混淆矩阵里的计数改成权重加和,然后算TPR,FPR就好啦。这里举一个比较简单的例子

假设有6个样本,y_true=[1,1,1,0,0,0],y_score=[0.4,0.6,0.8,0.5,0.1,0.2],y_weight=[0.2,0.3,0.4,0.1,0.2,0.3]

(1),先来计算一下数据不加权重时的auc。

分割阈值从小到大来找到多组(FPR,TPR)作为坐标点,score>threshold时预测为1。

当分割阈值为0时:所有的样本都被预测为1,混淆矩阵如下,得到ROC曲线上的一点(1,1)

当阈值为0.1时,倒数第二个样本被预测为0,混淆矩阵如下,得到ROC曲线上的一点(2/3,1)

当阈值为0.2时,倒数第一个样本被预测为0,混淆矩阵如下,得到ROC曲线上的一点(1/3,1)

当阈值为0.4,0.5,0.6,0.8时依次类推,混淆矩阵就放在一起啦,得到ROC曲线上的(1/3,2/3),(0,2/3),(0,1/3),(0,0)点

将得到的七个点绘制出来,计算阴影面积,就是AUC的值啦,1*(2/3)+(2/3)*(1/3)=8/9

(2)、计算加了权重的auc

加了权重时,混淆矩阵中的数字就不是简单的计数啦,而是相应的样本权重的和。

得到了(1,1),(2/3,1),(1/6,1),(1/6,7/9),(0,7/9),(0,1/9),(0,0)这些点,将这些点绘图计算阴影面积得到AUC。1*(5/6)+ (7/9)*(1/6)= 52/54

结束。


http://chatgpt.dhexx.cn/article/g6HZrvII.shtml

相关文章

机器学习之AUC

深入理解AUC AUC是什么 auc是roc曲线的面积,常用来评价二分类系统的好坏。 AUC如何计算 对于二分类问题,预测模型会对每一个预测样本一个得分p,然后选取一个阈值t,当 p > t p>t p>t时,样本预测为正&#…

ROC和AUC

目录 ROC AUC ROC ROC曲线是Receiver Operating Characteristic Curve的简称,中文名为"受试者工作特征曲线"。ROC曲线的横坐标为假阳性率(False Postive Rate, FPR);纵坐标为真阳性率(True Positive Rate, TPR).FPR和TPR的计算方法分别为 F…

Rank: AUC

最近计算了搜索排序的auc指标,记录一下~ AUC很大一个好处是其对正负样本比例不敏感 AUC的三种定义: AUC:一个正例,一个负例,预测正样本为正的概率值比预测负样本为正的概率值还要大的可能性。从一堆0和1中&#xff0c…

auc计算 matlab代码,AUC计算

思路 为最终比较划分好测试集和不存在边集【全集1-train-test-对角元】,根据集合中非零元【即边的数目】构建比较矩阵test_rd【比较n次,随机生成n个值右取整作为抽取的要比较的边】,下一步对test的邻接矩阵赋值,相似性指标给予一个分值存入test_pre,然后依据判断条件【tes…

AUC

最近我们在尝试深度学习模型,离线的auc已经高于基线,上线后ctr表现也优于基线,但是基于线上实际反馈的打点日志,深度学习的模型的auc要明显低于基线。但以前的模型迭代auc是可以和线上ctr对应的。 这个问题比较奇怪,一…

AUC详解

AUC在机器学习领域中是一种模型评估指标。根据维基百科的定义,AUC(area under the curve)是ROC曲线下的面积。所以,在理解AUC之前,要先了解ROC是什么。而ROC的计算又需要借助混淆矩阵,因此,我们先从混淆矩阵开始谈起。…

笔记︱统计评估指标AUC 详解

文章目录 1 AUC的两种解读视角:1.1 ROC曲线与坐标轴形成面积1.2 古典概率模型——求导AUC 2 AUC的特性与优劣3 AUC多大才算好?4 线上、线下AUC差异较大成因分析4.1 业务场景使用AUC:点击模型与购买模型的差异4.2 线上、线下AUC有差异 5 AUC逻…

AUC原理详细讲解

一、AUC含义 首先,在试图弄懂AUC和ROC曲线之前,首先要彻底理解混淆矩阵的定义! 混淆矩阵中有着Positive、Negative、True、False的概念,其意义如下: 称预测类别为1的为Positive(阳性)&#x…

详解AUC指标

AUC指标 AUC是一个模型评价指标,用于二分类模型的评价。AUC是“Area under Curve(曲线下的面积)”的英文缩写,而这条“Curve(曲线)”就是ROC曲线。 ROC:受试者工作特征曲线    为什么要用AUC作为二分类…

机器学习篇-指标:AUC

AUC是什么东西? AUC是一个模型评价指标,只能够用于二分类模型的评价,对于二分类模型来说还有很多其他的评价指标: 比如:logloss,accuracy,precision 在上述的评价指标当中,数据挖掘…

网络: 快速理解NAT与NAPT的区别

NAT:网络地址转换 。 NAPT:网络地址端口转换。 (通俗的讲)它们都是地址转换,NAPT与NAT的区别在于 NAT是NAT是一对一转换,NAPT是多对一转换。通俗来说NAT是一个内部地址转换成一个外部地址进行通信的,而NAPT是多个内部地…

NAT和NAPT 技术

一、什么是NAT NAT(Network Address Translator)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的技术。除了转换IP地址,还出现了可以转换TCP\UDP端口号的NAPT(Network Address Port Translator)技术 二、NAT的工作机制 如下图所示…

19 网络端口地址转换NAPT配置

借鉴网址: Packet Tracer 思科模拟器入门教程 之十八 网络端口地址转换NAPT配置_柚子君.的博客-CSDN博客 姓 名 彭彭头 实验日期 2022.06.07 学 号 实验序号 19 实验名称 网络端口地址转换NAPT配置 一、实验目的及要求 理解NAT网络地址转换的原理及功能…

Cisco Packet Tracer思科模拟器中利用动态NAPT实现局域网访问Internet (动态地址转换)

本篇文章主要讲解思科模拟器中的动态地址转换 ,主讲ACL和接口进行地址转换、地址池范围地址转换、静态一对一地址转换。 园区网内通常情况下有很多台主机,从ISP申请并给园区网中的每台主机分配一个合法IP地址是不现实的,为了使所有内部主机都…

NAT--静态、动态、NAPT、Easy-ip、NAT server

静态NAT 静态 NAT ( Static NAT )&#xff08; 一对一 &#xff09;。将内部网络的私有IP地址转换为公有IP地址&#xff0c;IP地址对是一对一的&#xff0c;是一直不变的。 实验拓扑&#xff1a; PC配置 AR1 <Huawei>sys Enter system view, return user view with Ct…

静态NAPT部署

实验拓扑 Jan16公司搭建了网站服务器&#xff0c;用于对外发布官方网站&#xff0c;公司只租用了一个互联网IP地址用于互联网的访问。为了保障内部网络的安全和互联网IP地址不足的情况&#xff0c;需在出口路由中配置静态NAPT&#xff0c;用于将内部服务器映射到互联网IP地址上…

NAT 和 NAPT

出处&#xff1a;http://bbs.51cto.com/thread-878322-1.html NAT&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09;是将IP数据报头中的IP地址转换为另一个IP地址的过程。在实际应用中&#xff0c;NAT主要用于实现私有网络访问公共网络的功能。这…

华为静态NAT、动态NAT、NAPT、Easy NAT配置实例

一、NAT的四种类型 1&#xff0c;静态NAT&#xff08;服务器地址转换&#xff09; 静态NAT实现了私有地址和公有地址的一对一转换&#xff0c;一个公网地址对应一个私网地址 2&#xff0c;动态NAT 动态NAT基于地址池来实现私有地址和公有地址的转换&#xff0c;转换是随机的 …

华为 静态NAT---动态NAT---NAPT---Easy IP---NAT服务器工作原理和示例配置

目 录 一、NAT简介 二、NAT好处&#xff1a; 三、静态NAT工作原理和示例配置 1. 静态NAT工作原理 2. 静态NAT配置示例 四、动态NAT工作原理和示例配置 1. 动态NAT工作原理 2.动态NAT示例配置 五、NAPT工作原理和示例配置 1. NAPT工作原理 2.NAPT示例配置 六…

华为设备的NAT、NAPT、easy IP的区别

首先来了解一下什么是NAT&#xff0c;网络地址转换(NAT,Network Address Translation)属接入广域网(WAN)技术&#xff0c;是一种将私有&#xff08;保留&#xff09;地址转化为合法IP地址的转换技术&#xff0c;它被广泛应用于各种类型Internet接入方式和各种类型的网络中。原因…