如何使用 Spark 决策树调整分类阈值

Posted

技术标签:

【中文标题】如何使用 Spark 决策树调整分类阈值【英文标题】:How to Adjust Classification Threshold with a Spark Decision Tree 【发布时间】:2017-01-14 12:55:26 【问题描述】:

我正在使用 Spark 2.0 和新的 spark.ml。包。 有没有办法调整分类阈值,以便减少误报的数量。 如果重要的话,我也在使用 CrossValidator。

我看到 RandomForestClassifier 和 DecisionTreeClassifier 都输出一个概率列(我可以手动使用,但 GBTClassifier 没有。

【问题讨论】:

【参考方案1】:

听起来您可能正在寻找thresholds 参数:

final val thresholds: DoubleArrayParam

Param for Thresholds in multi-class classification 调整概率 预测每个类。数组的长度必须等于 类,值 >= 0。预测具有最大值 p/t 的类, 其中 p 是该类的原始概率, t 是该类' 阈值。

您需要通过在分类器上调用 setThresholds(value: Array[Double]) 来设置它。

【讨论】:

我会检查,但我注意到 GBT 没有这个,但 RandomForest 和 DecisionTree 有。 啊,是的,你是对的。不幸的是,您现在似乎对GBTClassifier 不走运。从implementation 来看,Spark ML 版本似乎包装了旧的 MLlib 版本,缺少ProbabilisticClassifier 在 Spark 2.2 GBTClassifier 中有 setThresholds 参数。 spark.apache.org/docs/latest/api/scala/… @Maziyar 是 Spark 2.2 还是 2.4+? PySpark 中是否对此有任何实现? @Rudr 是的,他们在 2.2 中有它:spark.apache.org/docs/2.2.0/api/scala/… 不幸的是,即使在 2.4.3 中我也无法在 PySpark 中找到它:spark.apache.org/docs/2.2.0/api/python/…

以上是关于如何使用 Spark 决策树调整分类阈值的主要内容,如果未能解决你的问题,请参考以下文章

如何解释决策树的 ROC AUC 曲线的阈值?

应用一个热编码器后如何改变决策树的特征阈值?

如何在 spark ml 中处理决策树、随机森林的分类特征?

如何计算决策树的 AUC?

Spark,MLlib:调整分类器识别阈值

使用 Apache Spark 决策树分类器进行多类分类时出错