Scikit learn scikit学习中的auc_分数为0.14

Scikit learn scikit学习中的auc_分数为0.14,scikit-learn,roc,Scikit Learn,Roc,我正在训练一个关于scikit学习中二进制分类问题的随机森林分类器。我想最大化模型的auc分数。我知道这在0.13稳定版本中是不可能的,但在0.14前沿版本中是可能的 我试过了,但结果似乎更糟: ic = RandomForestClassifier(n_estimators=100, compute_importances=True, criterion='entropy', score_func = auc_score); 这是作为模型的参数使用还是仅在gridsearchCV中使用 如果

我正在训练一个关于scikit学习中二进制分类问题的随机森林分类器。我想最大化模型的auc分数。我知道这在0.13稳定版本中是不可能的,但在0.14前沿版本中是可能的

我试过了,但结果似乎更糟:

ic = RandomForestClassifier(n_estimators=100, compute_importances=True, criterion='entropy', score_func = auc_score);
这是作为模型的参数使用还是仅在gridsearchCV中使用


如果我在gridsearchCV中使用它,它会使模型更适合
auc_分数
?我还想尝试最大化
回忆评分

我很惊讶上面没有出现错误。在GridSearchCV中,只能将AUC用于模型选择。 如果您在那里使用它(
scoring='roc_auc'
iirc),这意味着将选择具有最佳auc的模型。就这个分数而言,这并不能使单个模型变得更好。
尽管如此,这仍然值得一试。

我发现了一篇关于随机林的高度不平衡类的期刊文章。虽然它的目标是在Hadoop集群上运行RDF,但同样的技术似乎也适用于较小的问题:

del Río,S.,López,V.,Benítez,J.M.,和Herrera,F.(2014)。关于MapReduce在使用随机森林的不平衡大数据中的使用。信息科学,285112-137


对于不平衡的类,是否有其他方法可以改善随机林结果?我似乎经常遇到这种情况。我有几百个样本,但只有大约10个是class=1。我希望得到尽可能多的class=1的真阳性,即使是以更多的假阳性为代价,但我不知道如何建立模型来实现这一点。一些分类器有一个
class\u weight
参数来重新缩放某些类的重要性。不幸的是,这还没有在RF中实现。不过,您可以使用
fit
函数的
sample\u weight
参数重新加权每个类中样本的重要性。使用
1/(n\u类中的样本)
是一种常见的启发式方法。