带有随机森林的 sklearn 校准分类器
sklearn calibrated classifier with random forest
Scikit 有一个非常有用的分类器包装器,称为 CalibratedClassifer
和 CalibratedClassifierCV
,它们试图确保分类器的 predict_proba
函数真正预测概率,而不仅仅是任意的介于 0 和 1 之间的数字(尽管可能排名靠前)。
然而,在使用随机森林时,通常使用 oob_decision_function_
来确定训练数据的性能,但在使用校准模型时不再可用。因此,校准应该适用于新数据,但不适用于训练数据。我们如何评估训练数据的性能以确定,例如,过度拟合?
显然没有解决这个问题的方法,所以我向 scikit-learn 发出了拉取请求。
问题是袋外预测是在学习过程中创建的。因此,在 CalibratedClassifierCV
中,每个子分类器都有自己的 oob 决策函数。但是,此决策函数是根据数据的折叠计算的。因此,有必要存储每个 oob 预测(为不在折叠中的样本保留 nan 值),然后使用校准变换转换所有预测,然后对校准后的 oob 预测进行平均以创建更新的 oob 预测。
如前所述,我在 https://github.com/scikit-learn/scikit-learn/pull/11175. It will probably be a while before it is merged into the package, though, so if anyone really needs to use it then feel free to use my fork of scikit-learn at https://github.com/yishaishimoni/scikit-learn 创建了一个拉取请求。
Scikit 有一个非常有用的分类器包装器,称为 CalibratedClassifer
和 CalibratedClassifierCV
,它们试图确保分类器的 predict_proba
函数真正预测概率,而不仅仅是任意的介于 0 和 1 之间的数字(尽管可能排名靠前)。
然而,在使用随机森林时,通常使用 oob_decision_function_
来确定训练数据的性能,但在使用校准模型时不再可用。因此,校准应该适用于新数据,但不适用于训练数据。我们如何评估训练数据的性能以确定,例如,过度拟合?
显然没有解决这个问题的方法,所以我向 scikit-learn 发出了拉取请求。
问题是袋外预测是在学习过程中创建的。因此,在 CalibratedClassifierCV
中,每个子分类器都有自己的 oob 决策函数。但是,此决策函数是根据数据的折叠计算的。因此,有必要存储每个 oob 预测(为不在折叠中的样本保留 nan 值),然后使用校准变换转换所有预测,然后对校准后的 oob 预测进行平均以创建更新的 oob 预测。
如前所述,我在 https://github.com/scikit-learn/scikit-learn/pull/11175. It will probably be a while before it is merged into the package, though, so if anyone really needs to use it then feel free to use my fork of scikit-learn at https://github.com/yishaishimoni/scikit-learn 创建了一个拉取请求。