【SK-learn学习】1.16 概率校准

一、说明

        概率校准,指的是对于分类器而言,对应多种类别,概率最大就将样本归入,这个事实没有考虑置信度的问题。sklearn的calibration就是指的这种情形,参考本文。

二、关于sklearn.calibration的概念

        执行分类时,您通常首先需要预测类标签其次要获得相应标签的概率。这个概率让你对预测有一定的信心。有些模型可能会给您提供较差的类概率估计,有些甚至不支持概率预测(例如 的某些实例 SGDClassifier)。校准模块允许您更好地校准给定模型的概率,或添加对概率预测的支持。

校准良好的分类器是概率分类器, predict_proba方法的输出可以直接解释为置信水平。例如,一个校准良好的(二元)分类器应该对样本进行分类,使得在它给出的Predict_proba值接近 0.8的样本中,大约 80% 实际上属于正类。

在展示如何重新校准分类器之前,我们首先需要一种方法来检测分类器的校准效果如何。

注意

 

        严格正确的概率预测评分规则,例如 sklearn.metrics.brier_score_loss评估 sklearn.metrics.log_loss模型的校准(可靠性)和判别力(分辨率),以及数据的随机性(不确定性)。这是从著名的 Murphy [ 1 ]的 Brier 分数分解得出的。由于尚不清楚哪一项占主导地位,因此分数对于单独评估校准的用途有限(除非计算分解的每一项)。例如,较低的 Brier 损失并不一定意味着更好的校准模型,它也可能意味着更差的校准模型,具有更大的辨别力,例如使用更多的特征。

1.16.1  校准曲线

        校准曲线,也称为可靠性图(Wilks 1995 [ 2 ]),比较二元分类器的概率预测的校准程度。它绘制了正标签的频率(更准确地说,是 条件事件概率的估计P(Y=1| {predict\_proba}) 在 y 轴上与x 轴上模型的预测概率Predict_proba相对应。棘手的部分是获取 y 轴的值。在 scikit-learn 中,这是通过对预测进行分箱来实现的,使得 x 轴代表每个分箱中的平均预测概率。y 轴是给定该箱的预测的正例的分数,即类别为正类的样本的比例(在每个箱中)。

        顶部校准曲线图是使用 创建的 CalibrationDisplay.from_estimator,用于calibration_curve计算每个箱的平均预测概率和阳性分数。 CalibrationDisplay.from_estimator 将拟合分类器作为输入,用于计算预测概率。因此分类器必须具有Predict_proba方法。对于少数没有Predict_proba方法的分类器,可以使用它CalibratedClassifierCV来校准分类器输出的概率。

        底部直方图通过显示每个预测概率箱中的样本数量来深入了解每个分类器的行为。

../_images/sphx_glr_plot_compare_calibration_001.png

LogisticRegression默认情况下返回经过良好校准的预测,因为它具有针对其损失的规范链接函数,即Log loss的 logit-link 。这就引出了所谓的平衡性,参见[ 8 ]和 Logistic回归。与此相反,其他显示的模型返回有偏差的概率;每个模型有不同的偏差。

GaussianNB(朴素贝叶斯)倾向于将概率推至 0 或 1(注意直方图中的计数)。这主要是因为它假设特征在给定类别的情况下是条件独立的,但在包含 2 个冗余特征的数据集中,情况并非如此。

RandomForestClassifier显示相反的行为:直方图在大约 0.2 和 0.9 的概率处显示峰值,而接近 0 或 1 的概率非常罕见。Niculescu-Mizil 和 Caruana [ 3 ]给出了对此的解释:“诸如装袋和随机森林之类的方法,从一组基本模型中进行平均预测可能很难在 0 和 1 附近进行预测,因为底层基本模型中的方差将偏差预测应该与这些值接近零或一。由于预测仅限于区间 [0,1],因此方差引起的误差往往是单边接近零和一的。例如,如果模型应预测某种情况下的 p = 0,则 bagging 实现此目的的唯一方法是所有 bagged 树预测为零。如果我们向 bagging 平均的树添加噪声,这种噪声将导致某些树在这种情况下预测值大于 0,从而使 bagged 集成的平均预测远离 0。我们在随机情况下最强烈地观察到这种效应森林,因为用随机森林训练的基础层树由于特征子集化而具有相对较高的方差。” 因此,校准曲线显示出特征性的 S 形形状,表明分类器可以更信任其“直觉”,并且通常返回更接近 0 或 1 的概率。

LinearSVC(SVC) 显示出比随机森林更 S 形的曲线,这是最大边际方法的典型特征(比较 Niculescu-Mizil 和 Caruana [ 3 ]),该方法侧重于难以对接近决策边界的样本进行分类(支持向量)。

1.16.2. 校准分类器

        校准分类器包括拟合回归器(称为 校准器),该回归器将分类器的输出(由Decision_function或Predict_proba给出 )映射到 [0, 1] 中的校准概率。将给定样本的分类器的输出表示为f_i,校准器尝试预测条件事件概率 P(y_i=1|f_i)

        理想情况下,校准器适合于独立于最初用于拟合分类器的训练数据的数据集。这是因为分类器在其训练数据上的性能会比新数据上的性能更好。因此,使用训练数据的分类器输出来拟合校准器将导致校准器有偏差,该校准器映射到的概率比应有的更接近 0 和 1。

1.16.3。用法

        该类CalibratedClassifierCV用于校准分类器。

        CaliberatedClassifierCV 使用交叉验证方法来确保始终使用无偏数据来拟合校准器。数据被分成 k (train_set, test_set) 对(由 cv 确定)。当 ensemble=True (默认)时,对于每个交叉验证分割独立地重复以下过程:首先在训练子集上训练 base_estimator 的克隆。然后,使用其对测试子集的预测来拟合校准器(S形回归器或等渗回归器)。这会产生 k 个(分类器、校准器)对的集合,其中每个校准器将其相应分类器的输出映射到 [0, 1]。每对都在 caliblated_classifiers_ 属性中公开,其中每个条目都是一个校准分类器,具有输出校准概率的 Predict_proba 方法。主 CaliberatedClassifierCV 实例的 Predict_proba 输出对应于 caliblated_classifiers_ 列表中 k 个估计器的预测概率的平均值。预测的输出是概率最高的类。

        当 ensemble=False 时,交叉验证用于通过 cross_val_predict 获得所有数据的“无偏”预测。然后使用这些无偏预测来训练校准器。属性 caliblated_classifiers_ 仅由一对(分类器、校准器)组成,其中分类器是在所有数据上训练的基本估计器。在这种情况下,CalibrateClassifierCV 的 Predict_proba 输出是从单个(分类器、校准器)对获得的预测概率。

        ensemble=True 的主要优点是受益于传统的集成效果(类似于 Bagging 元估计器)。得到的集成应该经过良好校准,并且比 ensemble=False 稍微更准确。使用 ensemble=False 的主要优点是计算性的:它通过仅训练单个基分类器和校准器对来减少总体拟合时间,减小最终模型大小并提高预测速度。

        或者,可以通过设置 cv="prefit" 来校准已安装的分类器。在这种情况下,数据不会被分割,所有数据都用于拟合回归器。用户需要确保用于拟合分类器的数据与用于拟合回归器的数据不相交。

CalibratedClassifierCV支持使用两种回归技术通过method参数进行校:"sigmoid""isotonic"

1.16.3.1 sigmoid

        sigmoid 回归器method="sigmoid"基于 Platt 的逻辑模型[ 4 ]:

        在这里y_i 是样品的真实标签i和f_i 是样本的未校准分类器的输出i。A 和B是通过最大似然拟合回归器时要确定的实数。

        sigmoid 方法假设 可以通过将 sigmoid 函数应用于原始预测来校正校准曲线。在 Platt 1999 [ 4 ]的第 2.1 节中,在各种基准数据集上具有通用核函数的支持向量机的情况下,这一假设已得到经验证明,但通常不一定成立。此外,如果校准误差是对称的,则逻辑模型效果最佳,这意味着每个二元类的分类器输出呈具有相同方差的正态分布[ 7 ]。对于高度不平衡的分类问题,这可能是一个问题,其中输出不具有相等的方差。

        一般来说,此方法对于小样本量或当未校准模型信心不足并且高输出和低输出具有相似的校准误差时最有效。

1.16.3.2 Isotonic等渗透回归

        拟合method="isotonic"一个非参数等渗回归器,它输出一个逐步非递减函数,请参见sklearn.isotonic。它最大限度地减少:

顺从于 \hat{f}_i \geq \hat{f}_j每当 {f}_i \geq {f}_jy_i是样品i的真实标签,   f_i是样本的校准分类器i的输出(即校准概率)。与“sigmoid”相比,此方法更通用,因为唯一的限制是映射函数是单调递增的。因此它更强大,因为它可以纠正未校准模型的任何单调失真。然而,它更容易过度拟合,尤其是在小数据集上 [ 6 ]。

        总体而言,当有足够的数据(大于约 1000 个样本)以避免过度拟合时,“isotonic”的性能将与“sigmoid”一样好甚至更好[ 3 ]。

注意事项

 

        对 AUC 等排名指标的影响

        通常预计校准不会影响 ROC-AUC 等排名指标。然而,使用时校准后这些指标可能会有所不同 method="isotonic",因为等渗回归在预测概率中引入了联系。这可以被视为在模型预测的不确定性范围内。如果您严格希望保留排名并因此保留 AUC 分数,请使用 method="logistic"严格单调变换,从而保留排名。

1.16.3.3。多类别支持

        等渗回归器和 sigmoid 回归器均仅支持一维数据(例如,二元分类输出),但如果base_estimator支持多类预测,则可扩展用于多类分类。对于多类预测, 以OneVsRestClassifier方式CalibratedClassifierCV单独校准每个类[ 5 ]。在预测概率时,分别预测每个类别的校准概率。由于这些概率不一定总和为 1,因此执行后处理以将它们标准化。

例子:

  • 概率校准曲线

  • 三级分类的概率校准

  • 分类器的概率校准

  • 分类器校准比较

参考:

References:

[1]  Allan H. Murphy (1973). “A New Vector Partition of the Probability Score” Journal of Applied Meteorology and Climatology

[2]  On the combination of forecast probabilities for consecutive precipitation periods. Wea. Forecasting, 5, 640–650., Wilks, D. S., 1990a

[3] [Predicting Good Probabilities with Supervised Learning

1.16. Probability calibration — scikit-learn 1.3.2 documentation

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

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

相关文章

在网络安全护网中,溯源是什么?

在网络安全护网中,溯源是什么? 在网络安全护网中,溯源是指通过收集、分析和解释数字证据来追踪和还原网络攻击或其他网络犯罪活动的过程。它旨在确定攻击者的身份、行为和意图,以便采取适当的对策,并为法律机构提供必…

探究C语言中的分支和循环语句

C语言是一种广泛应用的编程语言,其强大的分支和循环语句为程序员提供了灵活性和控制流。在本文中,我们将深入探讨C语言中的分支和循环语句,以及它们在编程中的重要性和应用。 分支语句: 在C语言中,分支语句主要包括if语…

【已解决】Splunk workload rule invalid 问题

1: 背景: 今天由于要改变workload managment 里面的workload rule, 发现改了以后,splunk search haead 界面就报错:Failed to read / process workload rule = xxx_abort. Specify a valid workload rule in the workload_rules.conf file. 2: 解决问题: 先看文档: Co…

Haskell和http-client库下载代码示例

haskell import Network.HTTP.Client 然后,我们需要定义一个函数来下载视频。这个函数将接收一个URL作为参数,并返回一个IO动作,该动作将下载视频文件到当前目录。 haskell downloadVideo :: String -> IO () downloadVideo url do --…

Kubernetes(K8s)资源管理-03

资源管理 资源管理介绍 在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes。 kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服务,其实就是在kubernetes集…

mysql基本操作增删改查

mysql基本操作 show databases; #查看所有数据库use [数据库];#选择数据库show tables;#查看当前数据库下所有的表insert into [表名] values ([字段值1],[字段值2],[字段值3]) ; #向表中插入数据delete from [表名] values ([字段值1],[字段值2],[字段值3]); #删除表中部分数据…

RESTful API 接口设计指南

目录 一. 前言 二. RESTful API 设计的定义 2.1. 重要术语 2.2. 一般规范 2.3. 协议 2.4. 域名 2.5. 版本(Version) 2.6. Http 动词 2.7. 路径(Endpoint) 2.8. 过滤(Filter) 2.9. 返回结果 2.1…

【同一局域网下】访问其他电脑的虚拟机

一、在被连接的电脑上对VMware进行设置 编辑 --> 虚拟网络编辑器 按顺序点击 如果22端口已被占用,可以自行定义 (端口号越大,被占用的可能性越小) 二、在被连接的电脑上对防火墙进行设置(这里以win11为例&#xff…

AppDelete 4.3.3(软件清理卸载工具)

AppDelete for Mac是一款运行在Mac平台上的强大软件卸载工具,AppDelete Mac版不仅可以删除应用程序,还可以删除小部件,首选项窗格,插件和屏幕保护程序及其相关文件,卸载快速又干净,仅需要简单的拖拽即可。 …

【端到端可微1】端到端的训练,使用反向传播,要求过程可微分

文章目录 背景想法: Weighted least-squares fitting方法: Backpropagating through the fitting procedure.温习之前的基础前向传播反向传播 总结 背景 想做一个端到端训练的模型,将最小二乘嵌入其中。因此有了这系列文章。 想法&#xff…

oracle的sysaux使用量排查sql

水1篇工具sql SELECT OCCUPANT_NAME,OCCUPANT_DESC,SCHEMA_NAME,MOVE_PROCEDURE,MOVE_PROCEDURE_DESC,SPACE_USAGE_KBYTES SPACE_USAGE_KB,ROUND(SPACE_USAGE_KBYTES / 1024 / 1024,2) SPACE_USAGE_GFROM V$SYSAUX_OCCUPANTS DORDER BY D.SPACE_USAGE_KBYTES DESC; 分享些经…

用本子堆经验,手把手教你怎么写国自然项目基金!

随着社会经济发展和科技进步,基金项目对创新性的要求越来越高。申请人需要提出独特且有前瞻性的研究问题,具备突破性的科学思路和方法。因此,基金项目申请往往需要进行跨学科的技术融合。申请人需要与不同领域结合,形成多学科交叉…

手机笔记工具怎么加密?

选择用手机笔记工具记事,大家可以记录很多学习笔记、读书笔记、私密日记等,手机作为随身携带的设备,记录相关的笔记比较快捷且方便,当手机笔记中记录的内容比较私密时,大家担心手机笔记会被别人误看,这时候…

无电机光电测径仪稳定性好

目前市面上的在线测径仪主要是有电机的激光扫描式测径仪与无电机的光电平行光测径仪。均能完成外径尺寸的高精度尺寸检测,本文来简单介绍一下无电机光电测径仪的优势。 光电测径仪检测原理 发射镜头内置一个点光源,点光源发出的光通过透镜系统&#xf…

C++函数模板的两种表现形式

函数模板利用关键字 template使用函数模板有两种方式&#xff1a;自动类型推导、显示指定类型模板的目的是为了提高复用性&#xff0c;将类型参数化## 自动类型推导 自动推导类型 template<typename T> //第一种模板类 void myvalue(T &a, T &b) {T temp a;…

Amazon CodeWhisperer 使用体验

文章作者&#xff1a;STRIVE Amazon CodeWhisperer 是最新的代码生成工具&#xff0c;支持多种编程语言&#xff0c;如 java,js,Python 等&#xff0c;能减少开发人员手敲代码时间&#xff0c;提升工作效率。PS:本人是一名 CodeWhisperer 业余爱好者 亚马逊云科技开发者社区为开…

Vue拖拽div移动位置

<div id"TestDiv" mousedown"OnMouseDown"></div> css #TestDiv { position: absolute;left: 50%;top: 50%;width: 100px;height: 100px;z-index: 999;background-color: red; } 处理函数 const OnMouseDown(e:any)> {let videoBox:any…

kubectl get -o jsonpath使用

【说明】 &#xff08;1&#xff09;本篇讲解kubectl get命令的输出格式化&#xff0c;即-o jsonpath参数的使用格式&#xff08;-o jsonpath 与 -ojsonpath 与 -ojsonpath 与 --outputjsonpath 四者写法不一样&#xff0c;效果一样&#xff09; &#xff08;2&#xff09;官网…

全新升级,三坐标CMM测量报告工具,助您轻松掌握精度

随着制造业的不断发展&#xff0c;产品质量和精度要求越来越高&#xff0c;而三坐标测量技术在保证产品质量方面发挥着不可替代的作用。为了更好地满足您的测量需求&#xff0c;我们自豪地推出全新升级的三坐标CMM测量报告工具&#xff0c;助您轻松掌握精度&#xff0c;提升生产…

C语言进阶之笔试题详解(2)

前言 这里的内容包括二维数组笔试题和指针笔试题&#xff0c;供给读者对这部分知识进行加深和巩固。 ✨ 猪巴戒&#xff1a;个人主页✨ 所属专栏&#xff1a;《C语言进阶》 &#x1f388;跟着猪巴戒&#xff0c;一起学习C语言&#x1f388; 目录 前言 笔试题 二维数组 题目…