scikit-learn 概率校准
在执行分类时,不仅要预测类标签,而且要获得相应标签的概率。这个概率给了你一些关于预测的信心。有些模型可以给出类概率的糟糕估计,有些甚至不支持概率预测。校准模块允许您更好地校准给定模型的概率,或者添加对概率预测的支持。
经过良好校准的分类器是概率分类器, 其可以将 predict_proba 方法的输出直接解释为 confidence level(置信度水平)。例如,一个经过良好校准的(二元的)分类器应该对样本进行分类, 使得在给出一个接近 0.8 的 prediction_proba 值的样本中, 大约 80% 实际上属于正类。
1.16.1 校准曲线
下面的图比较了不同分类器的概率预测的校准效果,使用 calibration_curve
。x轴表示每个bin中的平均预测概率。 y轴是正数的分数,类别为正类别(在每个 bin 中)的样本比例。
LogisticRegression
在默认情况下返回经过良好校准的预测,因为它直接优化对数损失(log-loss)。相反,其他方法返回有偏概率;每种方法有不同的偏差:
GaussianNB
倾向于将概率推到0或1(注意直方图中的计数)。这主要是因为它假设在给定类的情况下,特征是条件独立的,这种情况下的数据集不会包含2个冗余特征的
RandomForestClassifier
显示了相反的行为:直方图在大约0.2和0.9的概率下显示峰值,而接近0或1的概率非常罕见。对此,Niculescu Mizil和Caruana给出了一个解释 [1]:“对一组基本模型进行平均预测的方法,如bagging and random forests ,很难在0和1附近进行预测,因为基本模型中的方差会偏离应接近0或1这些值的预测。由于预测仅限于区间[0,1],由方差引起的误差往往是在0和1附近的单边。例如,如果一个模型应该对一个情况的预测应该是p=0,那么bagging的唯一方法就是袋中所有的树都预测0。如果我们将噪声加到bagging中超过平均值的树上,这种噪声将导致一些树在这种情况下预测大于0的值,从而使bagging集合的平均预测偏离0。我们在随机森林中观察到这种效应最为强烈,因为随机森林训练的基层树由于特征子集而具有较高的方差。”因此,校准曲线也被称为可靠性图 (Wilks 1995 [2]) 显示了一种典型的 sigmoid 形状, 表明分类器可以更多地信任其 “直觉”, 并通常将接近 0 或 1 的概率返回。
线性支持向量分类(LinearSVC
)显示了更多的sigmoid曲线作为RandomForestClassifier,这是典型的最大边距方法(比较Niculescu-Mizil and Caruana [1]),重点关注的是接近决策边界的硬样本(支持向量)。
1.16.2 校准一个分类器
校准一个分类器包括拟合一个回归器(称为校准器),它将分类器的输出(通过 predict or predict_proba)映射到[0,1]中的校准概率。校准器用表示给定样本的分类器的输出,并试图预测。
用于训练校准器的样品不应用于训练目标分类器。
1.16.3 使用方法
CalibratedClassifierCV
是用来校准分类器的:
CalibratedClassifierCV
使用交叉验证方法来拟合分类器和回归器。对于每个 k (trainset, testset)
组合,在训练集上训练一个分类器,并使用它对测试集的预测来拟合一个回归器。最后,我们得到了k(classifier, regressor)
,其中每个回归器将其相应分类器的输出映射到[0,1]中。每个组在calibrated_classifiers_
属性中会被公开,其中每个条目是一个有predict_proba方法的校准分类器,输出校准概率。predict_proba的输出与calibrated_classifiers_
列表中k个估计器的预测概率平均值相对应。predict的输出是概率最高的类。
用于校准的回归器取决于method
参数。“Sigmoid”对应于一种基于Platt的Logistic模型[3]的参数化方法,举例 被建模为,其中是logistic函数,和是用极大似然拟合回归器时要确定的实数。'isotonic'
将代替一个非参数的isotonic回归器,它输出一个逐步不递减的函数(见 sklearn.isotonic
)。
已经拟合好的分类器可以通过设置cv="prefit"
来校准。在这种情况下,数据只用于拟合回归器。这取决于用户确定用于拟合分类器的数据与用于拟合回归器的数据是不相交的。
如果基本估计器支持多类预测,那么CalibratedClassifierCV
可以在多类设置中校准概率。该分类器首先以one-vs-rest的方式[4]分别对每类进行校准。在预测概率时,对每类的标定概率分别进行预测。由于这些概率之和不一定等于1,所以执行一个后处理来标准化它们。
The sklearn.metrics.brier_score_loss
可以用来评估分类器的校准的效果。
示例 |
---|
概率校准曲线 三分类的概率校准 分类器的概率校准 分类器校准的比较 |
参考资料:
1(1,2)Predicting Good Probabilities with Supervised Learning, A. Niculescu-Mizil & R. Caruana, ICML 2005 2On the combination of forecast probabilities for consecutive precipitation periods. Wea. Forecasting, 5, 640–650., Wilks, D. S., 1990a 3Probabilistic Outputs for Support Vector Machines and Comparisons to Regularized Likelihood Methods, J. Platt, (1999) 4Transforming Classifier Scores into Accurate Multiclass Probability Estimates, B. Zadrozny & C. Elkan, (KDD 2002)
更多建议: