1.16. 概率校准(Probability calibration)

1.16. 概率校准(Probability calibration)

在进行分类时,我们不仅想要预测出类的标签,而且还要获得对应标签的概率。这个概率给了我们一些关于预测的信心。有些模型可以给出类的概率估计,有些甚至不支持概率预测(probability prediction)。 校准模块(calibration module)允许我们更好地校准给定模型的概率,或者添加对概率预测的支持。

经过良好校准的分类器是概率化分类器(probabilistic classifiers),它的 predict_proba 方法的输出可以直接解释为置信水平。例如,经过良好校准的(二)分类器应该对样本进行分类,以便在它给出的predict_proba值接近0.8的样本中,大约80%实际上属于正类。下面的图比较了不同分类器的概率预测(probabilistic predictions)的校准效果:

https://scikit-learn.org/stable/_images/sphx_glr_plot_compare_calibration_0011.png

LogisticRegression默认情况下会返回经过良好校准的预测,因为它可以直接优化对数损失。相反,其他方法则返回有偏有偏概率(biased probabilities); 每种方法有不同的偏差:

  • GaussianNB 倾向于将概率推到0或1(注意直方图中的计数)。这主要是因为它假设在给定某一类的情况下, 特征分量相互之间是条件独立的,而在包含2个冗余特征的数据集中则假设不成立。

  • RandomForestClassifier 表现出相反的行为:直方图在概率约为0.2和0.9的地方出现峰值,而接近0或1的概率非常罕见。Niculescu-Mizil和Caruana对此作了解释[4]:“ 像bagging和随机森林这样的通过对一组基本模型的预测取平均的方法很难在0和1附近做出预测, 因为底层基本模型中的方差会使本应该接近0或1的预测偏离这些值。因为预测被仅限于区间[0,1],由方差引起的误差往往是近0和1的单边误差。 例如,如果一个模型应该对一个情况预测p=0,那么bagging可以实现的唯一方法就是将袋子里的所有树(all bagged trees)都预测为零。如果我们给装在袋子里的树添加噪声则噪声会导致其中的某些树的预测值大于0,因此这就使得bagging的平均预测偏离了0。在随机森林模型中我们可以更加强烈地观察到这些现象,因为随机森林中的基本树估计器(都是在全部特征的一个子集上训练的)都具有相对较高的方差。” 。因此,校准曲线(calibration curve)有时候也称之为可靠性图(reliability graph, Wilks 1995[5])显示了一个典型的Sigmoid函数的形状,表明分类器更应该相信它们的“直觉”并返回更接近0或1的概率。

  • 线性支持向量分类(LinearSVC)与RandomForestClassifier相比,甚至显示出更像Sigmoid函数的曲线,这对于最大边距方法来说 (比较Niculescu-Mizil和Caruana[4])是很典型的,其重点是聚焦在靠近决策边界的难分样本(hard samples),也就是支持向量(support vectors)。

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

下图显示了有概率校准的好处。第一张图片展示了一个具有2个类别和3个数据块的数据集。中间的斑点包含每个类别的随机样本。该斑点中样本的概率应为0.5。

https://scikit-learn.org/stable/_images/sphx_glr_plot_calibration_0011.png

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

https://scikit-learn.org/stable/_images/sphx_glr_plot_calibration_0021.png

以下实验是在100,000个样本(其中1,000个用于模型拟合)和20个特征的二分类的人造数据集上进行的。在这20个特征中,只有2个特征具有信息性(informative)(这2个特征与结果预测有很大的关联),而10个特征是冗余的。该图显示了通过逻辑回归,线性支持向量分类器(SVC)和具有isotonic校准和sigmoid校准的线性SVC所获得的估计概率。Brier分数是一个指标,它是校正损失(calibration loss)和细化损失(refinement loss)的结合,通过brier_score_loss函数来进行计算,请看下面的图例(越小越好)。校正损失(Calibration loss)定义为从ROC段斜率导出的经验概率的均方偏差。细化损失(Refinement loss)可以定义为在最优代价曲线下用面积测量的期望最优损失。

https://scikit-learn.org/stable/_images/sphx_glr_plot_calibration_curve_0021.png

我们可以观察到,逻辑回归因为它的曲线是近似对角线所以被很好地校准了。线性SVC的校准曲线或可靠性图是一个sigmoid曲线,代表这是一个典型的欠信任的分类器。在线性SVC中, 这是由合页损失(hinge loss)的边界属性所引起的,它使得模型聚焦在与决策边界很近的难分样本(hard samples)上。这两种校准方法(isotonic和sigmoid)都可以解决这个问题,并得到几乎相同的结果。下面的图片展示了在同样的数据上高斯朴素贝叶斯的校准曲线(包括无校准,isotonic校准,sigmoid校准)。

https://scikit-learn.org/stable/_images/sphx_glr_plot_calibration_curve_0011.png

我们可以观察到,高斯朴素贝叶斯的性能非常差,但却以不同于线性SVC的方式:线性SVC显示出一条Sigmoid校准曲线, 而高斯朴素贝叶斯的校准曲线显示出翻转的sigmoid(transposed-sigmoid)形状。这是典型的过度自信(over-confident)的分类器。在这种情况下,分类器的过度置信度是由于冗余的特征违反了朴素贝叶斯假设的特征独立性。

用isotonic回归校正高斯朴素贝叶斯的概率可以解决这一问题,从近似对角的校准曲线可以看出这一点。Sigmoid校准也稍微提高了brier评分,但是不如无参数的isotonic校准方法那么强大。这是sigmoid校准的固有限制,其参数形式被假定是sigmoid,而不是翻转的sigmoid(transposed-sigmoid)。然而,非参数isotonic校准模型并没有作出这样强有力的假设,只要有足够的校准数据,就可以处理任何形状。通常,在校准曲线为sigmoid和校准数据有限的情况下,sigmoid校准更可取,而non-sigmoid校准曲线和大量数据可供校准的情况下,isotonic校准更可取。

如果基本估计器可以处理涉及两个以上类的分类任务,那么CalibratedClassifierCV也可以处理。在这种情况下,首先以一对多(one-vs-rest)的方式分别对每个类对应的二分类器进行校准。在预测未见数据的概率时,对每类数据的校准概率分别进行预测。由于这些概率加起来不一定等于1,所以执行后处理将其标准化(让它们加起来等于1)。

下图显示了sigmoid校准是如何修改三分类问题的预测概率的。例子的是标准的2-单形(2-simplex),其中三个角对应于三个类别。箭头指向由未标定的分类器预测的概率向量到同一分类器在预留验证集上进行sigmoid校准后预测的概率向量。颜色代表了每个点的真实类别(红色:类别1,绿色:类别2,蓝色:类别3)。

https://scikit-learn.org/stable/_images/sphx_glr_plot_calibration_multiclass_0011.png

基本分类器是具有25个基本树估计器构成的随机森林分类器。如果该分类器在所有800个训练数据点上进行了训练, 则它的预测会过度自信,因此导致了比较大的对数损失。对一个同样的分类器(25棵树构成的随机森林),但是这个分类器这次只在600个数据点上训练,另外200个数据点用于method=’sigmoid’的校准,最后得到的分类器的预测置信度被降低了,也就是把概率向量从单形(simplex)的边上移到了中间:

https://scikit-learn.org/stable/_images/sphx_glr_plot_calibration_multiclass_0021.png

经过校准以后的结果有比较低的对数损失。注意另一种可选方案是增加森林中基本估计器的数量也会带来类似的对数损失的降低。

参考文献:

  • 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(1,2) 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

©2007-2019,scikit-learn开发人员(BSD许可证)。 显示此页面源码

未经允许不得转载:PythonOK » 1.16. 概率校准(Probability calibration)

赞 (0)