【Scikit-Learn 中文文档】概率校准 - 监督学习 - 用户指南 | ApacheCN

1.16. 概率校准

执行分类时, 您经常希望不仅可以预测类标签, 还要获得相应标签的概率. 这个概率给你一些预测的信心. 一些模型可以给你贫乏的概率估计, 有些甚至不支持概率预测. 校准模块可以让您更好地校准给定模型的概率, 或添加对概率预测的支持.

精确校准的分类器是概率分类器, 其可以将 predict_proba 方法的输出直接解释为 confidence level(置信度级别). 例如,一个经过良好校准的(二元的)分类器应该对样本进行分类, 使得在给出一个接近 0.8 的 prediction_proba 值的样本中, 大约 80% 实际上属于正类. 以下图表比较了校准不同分类器的概率预测的良好程度:

LogisticRegression 默认情况下返回良好的校准预测, 因为它直接优化了 log-loss(对数损失)情况. 相反,其他方法返回 biased probabilities(偏倚概率); 每种方法有不同的偏差:

  • GaussianNB 往往将概率推到 0 或 1(注意直方图中的计数). 这主要是因为它假设特征在给定类别的条件下是独立的, 在该数据集中不包含 2 个冗余特征.
  • RandomForestClassifier 解释了相反的行为:直方图在约 0.2 和 0.9 的概率时显示峰值, 而接近 0 或 1 的概率非常罕见. Niculescu-Mizil 和 Caruana [4] 给出了一个解释:”诸如 bagging 和 random forests(随机森林)的方法, 从基本模型的平均预测中可能难以将预测置于 0 和 1 附近, 因为基础模型的变化会偏离预测值, 它们应该接近于零或偏离这些值, 因为预测被限制在 [0,1] 的间隔, 由方差引起的误差往往是靠近 0 和 1 的一边, 例如,如果一个模型应该对于一个案例,预测 p = 0,bagging 可以实现的唯一方法是假设所有的 bagging 树预测为零. 如果我们在 bagging 树上增加噪声, 这种噪声将导致一些树预测大于 0 的值, 因此将 bagging 的平均预测从 0 移开. 我们用随机森林最强烈地观察到这种效应, 因为用随机森林训练的 base-level 树由于特征划分而具有相对较高的方差. 因此,校准曲线也被称为可靠性图 (Wilks 1995 [5] _) 显示了一种典型的 sigmoid 形状, 表明分类器可以更多地信任其 “直觉”, 并通常将接近 0 或 1 的概率返回.
  • 线性支持向量分类 (LinearSVC) 显示了作为 RandomForestClassifier 更多的 Sigmoid 曲线, 这是经典的最大边距方法 (compare Niculescu-Mizil and Caruana [4]), 其重点是靠近决策边界的 hard samples(支持向量).

提供了执行概率预测校准的两种方法: 基于 Platt 的 Sigmoid 模型的参数化方法和基于 isotonic regression(保序回归)的非参数方法 (sklearn.isotonic). 对于不用于模型拟合的新数据, 应进行概率校准. 类 CalibratedClassifierCV 使用交叉验证生成器, 并对每个拆分模型参数对训练样本和测试样本的校准进行估计. 然后对折叠预测的概率进行平均. 已经安装的分类器可以通过:class:CalibratedClassifierCV 传递参数 cv =”prefit” 这种方式进行校准. 在这种情况下, 用户必须手动注意模型拟合和校准的数据是不相交的.

以下图像展示了概率校准的好处. 第一个图像显示一个具有 2 个类和 3 个数据块的数据集. 中间的数据块包含每个类的随机样本. 此数据块中样本的概率应为 0.5.

以下图像使用没有校准的高斯朴素贝叶斯分类器, 使用 sigmoid 校准和非参数的等渗校准来显示上述估计概率的数据. 可以观察到, 非参数模型为中间样本提供最准确的概率估计, 即0.5.

对具有20个特征的100.000个样本(其中一个用于模型拟合)进行二元分类的人造数据集进行以下实验. 在 20个 特征中,只有 2 个是信息量, 10 个是冗余的. 该图显示了使用逻辑回归获得的估计概率, 线性支持向量分类器(SVC)和具有 sigmoid 校准和 sigmoid 校准的线性 SVC. 校准性能使用 Brier score brier_score_loss 来计算, 请看下面的图例(越销越好).

这里可以观察到, 逻辑回归被很好地校准, 因为其曲线几乎是对角线. 线性 SVC 的校准曲线或可靠性图具有 sigmoid 曲线, 这是一个典型的不够自信的分类器. 在 LinearSVC 的情况下, 这是 hinge loss 的边缘属性引起的, 这使得模型集中在靠近决策边界(支持向量)的 hard samples(硬样本)上. 这两种校准都可以解决这个问题, 并产生几乎相同的结果. 下图显示了高斯朴素贝叶斯在相同数据上的校准曲线, 具有两种校准, 也没有校准.

可以看出, 高斯朴素贝叶斯的表现非常差, 但是以线性 SVC 的方式也是如此. 尽管线性 SVC 显示了 sigmoid 校准曲线, 但高斯朴素贝叶斯校准曲线具有转置的 sigmoid 结构. 这对于过分自信的分类器来说是非常经典的. 在这种情况下,分类器的过度自信是由违反朴素贝叶斯特征独立假设的冗余特征引起的.

用等渗回归法对高斯朴素贝叶斯概率的校准可以解决这个问题, 从几乎对角线校准曲线可以看出. Sigmoid 校准也略微改善了 brier 评分, 尽管不如非参数等渗校准那样强烈. 这是 sigmoid 校准的固有限制,其参数形式假定为 sigmoid ,而不是转置的 sigmoid 曲线. 然而, 非参数等渗校准模型没有这样强大的假设, 并且可以处理任何形状, 只要有足够的校准数据. 通常,在校准曲线为 sigmoid 且校准数据有限的情况下, sigmoid 校准是优选的, 而对于非 sigmoid 校准曲线和大量数据可用于校准的情况,等渗校准是优选的.

CalibratedClassifierCV 也可以处理涉及两个以上类的分类任务, 如果基本估计器可以这样做的话. 在这种情况下, 分类器是以一对一的方式分别对每个类进行校准. 当预测未知数据的概率时, 分别预测每个类的校准概率. 由于这些概率并不总是一致, 因此执行后处理以使它们归一化.

下一个图像说明了 Sigmoid 校准如何改变 3 类分类问题的预测概率. 说明是标准的 2-simplex,其中三个角对应于三个类. 箭头从未校准分类器预测的概率向量指向在保持验证集上的 sigmoid 校准之后由同一分类器预测的概率向量. 颜色表示实例的真实类(red: class 1, green: class 2, blue: class 3).

基础分类器是具有 25 个基本估计器(树)的随机森林分类器. 如果这个分类器对所有 800 个训练数据点进行了训练, 那么它的预测过于自信, 从而导致了大量的对数损失. 校准在 600 个数据点上训练的相同分类器, 其余 200 个数据点上的 method =’sigmoid’ 减少了预测的置信度, 即将概率向量从单面的边缘向中心移动:

该校准导致较低的 log-loss(对数损失). 请注意,替代方案是增加基准估计量的数量, 这将导致对数损失类似的减少.

参考:

  • Obtaining calibrated probability estimates from decision trees and naive Bayesian classifiers, B. Zadrozny & C. Elkan, ICML 2001
  • Transforming Classifier Scores into Accurate Multiclass Probability Estimates, B. Zadrozny & C. Elkan, (KDD 2002)
  • Probabilistic Outputs for Support Vector Machines and Comparisons to Regularized Likelihood Methods, J. Platt, (1999)

[4]

Predicting Good Probabilities with Supervised Learning, A. Niculescu-Mizil & R. Caruana, ICML 2005

[5]

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

中文文档: http://sklearn.apachecn.org/cn/0.19.0/modules/calibration.html

英文文档: http://sklearn.apachecn.org/en/0.19.0/modules/calibration.html

官方文档: http://scikit-learn.org/stable/

GitHub: https://github.com/apachecn/scikit-learn-doc-zh(觉得不错麻烦给个 Star,我们一直在努力)

贡献者: https://github.com/apachecn/scikit-learn-doc-zh#贡献者

有兴趣的们也可以和我们一起来维护,持续更新中 。。。

机器学习交流群: 629470233

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏YoungGy

SVD分解及其应用

SVD起源 对角化概述 SVD SVD应用 图像压缩2 数据去噪 LSA 推荐系统 注意 参考资料 ? SVD可谓线性代数的登峰造极者。 其本质就是找到将任...

96660
来自专栏SIGAI学习与实践平台

K近邻算法

我们在网上购买水果的时候经常会看到同一种水果会标有几种规格对应不同价格进行售卖,水果分级售卖已经是电商中常见的做法,那么水果分级具体是怎么操作的呢?一种简单的做...

40110
来自专栏机器学习算法工程师

CNN模型之ShuffleNet

作者:叶 虎 编辑:李文臣 引言 1 ShuffleNet是旷视科技最近提出的一种计算高效的CNN模型,其和MobileNet和SqueezeNet等一样...

82330
来自专栏TEG云端专业号的专栏

图片相似性匹配中的特征提取方法综述

stevenmiao(苗捷),2016年7月博士毕业于华南理工大学,应届毕业加入TEG信息安全部。八年计算机视觉算法经验,博士期间主要研究面向视频的特征提取和内...

1.4K90
来自专栏AI科技评论

FAIR最新视觉论文集锦:FPN,RetinaNet,Mask和Mask-X RCNN(含代码实现)

这篇文章会从 FAIR 在基本模块上的创新开始,谈到 CNN,再到 one-shot 物体检测。之后会讲实例分割的创新。最后聊聊依靠弱半监督模型来扩展实例分割。...

94380
来自专栏SIGAI学习与实践平台

双线性汇合(bilinear pooling)在细粒度图像分析及其他领域的进展综述

细粒度图像分类旨在同一大类图像的确切子类。由于不同子类之间的视觉差异很小,而且容易受姿势、视角、图像中目标位置等影响,这是一个很有挑战性的任务。因此,类间差异通...

83830
来自专栏人工智能LeadAI

从CVPR2017 看多样目标检测

1、导读 When you have trouble with object detection, keep calm and use deep learnin...

50350
来自专栏用户2442861的专栏

数字图像处理笔记一 - 图像采集(空间分辨率和幅度分辨率)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

28110
来自专栏机器学习AI算法工程

基于图像视觉词汇的文本分类方法(完整项目)

一年多以前我脑子一热,想做一款移动应用:一款给学生朋友用的“错题集”应用,可以将错题拍照,记录图像的同时,还能自动分类。比如拍个题目,应用会把它自动分类为"物理...

40150
来自专栏AI科技大本营的专栏

一文掌握常用的机器学习模型(文末福利)

AI 科技大本营按:本文节选自微软亚洲研究院机器学习研究团队刘铁岩、陈薇、王太峰、高飞合著的《分布式机器学习:算法、理论与实践》一书。为了让大家更好地理解分布式...

12620

扫码关注云+社区

领取腾讯云代金券