如何从 FPR、TPR 和阈值中确定我的分类模型的最佳阈值

数据挖掘 分类 机器学习模型 表现 混淆矩阵
2022-03-11 05:56:55

我正在用 Python 构建我的模型,以将客户分类为买方/非买方类别。我为这个问题使用了多种算法,然后在评估后选择了最好的。

python 中的 sklearn 包为我提供了所有预测记录的 FPR、TPR 和阈值数组。

在分析 FPR、TPR 和阈值的值时,我对如何解释阈值感到困惑。我得到每条记录的阈值。

例如:我的测试数据集包含 100 条记录,我为 TPR、FPR 和阈值获得了大小为 100 的数组。

如何使用这些值确定我的模型的最佳阈值?

from sklearn import metrics
fpr, tpr,threshold = metrics.roc_curve( Y_test, status[:,1])
1个回答

我敢打赌,您碰巧有一个 ROC 和数据的 100 值数组。您获得的不是每个数据记录的阈值,而是每个评估的阈值。

此时,您必须在您的上下文中定义“最佳”的含义。默认情况下(至少在许多 R 包中),敏感性和特异性是同等加权的,在这种情况下,“最佳”阈值大致对应于 45 度切线与 ROC 曲线相交的阈值。您可以为给定的 ROC 选择所需的任何阈值,具体取决于您的重量感/规格。R 有一些包可以帮助计算它;如果 Python 没有等价物,我会感到惊讶。