在大约5000万个样本的平衡训练数据上使用scikit-learn
(一个类50%,另一个类50%,区间(0,1)
中有8个连续特征),到目前为止我能够尝试的所有分类器(线性/逻辑回归,LinearSVC
, RandomForestClassifier
,…)都显示出奇怪的行为:
对训练数据进行测试时,假阳性的百分比远低于假阴性的百分比(fnr)。当手动校正截距以提高假阳性率(fpr)时,精度实际上大大提高。
为什么分类算法没有找到接近最优的截距(我猜或多或少在fpr=fnr)?
我想这个想法是没有单一的"最佳"定义;对于某些应用程序,您可以容忍假阳性而不是假阴性(即检测欺诈或疾病,您不想错过阳性),而对于其他应用程序,假阳性要严重得多(预测设备故障,犯罪或采取行动的成本昂贵的其他事情)。默认情况下,predict
只选择0.5
作为阈值,这通常不是您想要的,您需要考虑您的应用程序,然后查看ROC曲线和增益/提升图,以决定您想要设置预测阈值的位置。