在进行分类任务时,不仅希望预测出类别标签,还希望得到与预测相关的置信度概率。然而,并非所有分类器都能提供良好校准的概率,有些可能过于自信,而有些则过于保守。因此,通常需要对预测概率进行单独的校准作为后处理步骤。本文通过Brier分数评估了校准后返回的概率质量,并比较了高斯朴素贝叶斯分类器在未校准、sigmoid校准和等温校准下的性能。
首先,使用numpy
和sklearn.datasets.make_blobs
生成一个包含三个簇的合成数据集。每个簇包含两类样本,其中第二个簇包含一半正样本和一半负样本,因此这个簇中的概率为0.5。然后,使用train_test_split
将数据集分为训练集和测试集,同时为校准过程准备了样本权重。
使用sklearn.calibration.CalibratedClassifierCV
对高斯朴素贝叶斯分类器进行校准。首先,训练一个未校准的分类器,并计算其预测概率。然后,使用等温校准和sigmoid校准对分类器进行校准,并计算校准后的预测概率。最后,使用brier_score_loss
函数计算每种方法的Brier分数,以评估校准后的概率质量。
通过比较未校准、等温校准和sigmoid校准的Brier分数,发现只有等温校准能够提供接近预期0.5的概率校准,从而显著提高了Brier分数。这表明等温校准在处理具有异质标签的中间簇样本时,能够提供更准确的预测概率。
为了直观展示数据和预测概率,使用matplotlib
绘制了数据点和预测概率的分布图。图中展示了不同类别的数据点,以及未校准、等温校准和sigmoid校准下的预测概率。通过这些图表,可以更直观地比较不同校准方法的性能。