在 Spark RandomForestClassifier 中预测类概率
Posted
技术标签:
【中文标题】在 Spark RandomForestClassifier 中预测类概率【英文标题】:Predict Class Probabilities in Spark RandomForestClassifier 【发布时间】:2015-08-27 20:39:08 【问题描述】:我使用 ml.classification.RandomForestClassifier 构建了随机森林模型。我试图从模型中提取预测概率,但我只看到预测类而不是概率。根据此issue link,问题已解决,并导致此github pull request 和this。但是,它似乎已在 1.5 版中解决。我正在使用提供 Spark 1.4.1 的 AWS EMR,但仍然不知道如何获得预测概率。如果有人知道该怎么做,请分享您的想法或解决方案。谢谢!
【问题讨论】:
【参考方案1】:我之前已经回答过类似的question。
不幸的是,在 1.4.1 版之前,您无法使用 MLLIb 获得分类模型的每个实例的概率。
关于这个确切的主题存在 JIRA 问题(SPARK-4362 和 SPARK-6885),因为我现在正在写答案,所以该主题正在进行中。不过,这个问题似乎自 2014 年 11 月起就搁置了
目前无法在预测过程中使用朴素贝叶模型获得预测的后验概率。这应该与标签一起提供。
下面是@sean-owen 在邮件列表中关于朴素贝叶斯分类算法的类似主题的注释:
最近在这个邮件列表上讨论了这个问题。您现在无法直接得出概率,但您可以稍微破解一下以获取 NaiveBayesModel 的内部数据结构并从那里进行计算。
参考:source.
此问题已在 Spark 1.5.0 中解决。详情请参考 JIRA issue。
关于 AWS,您现在无能为力。一个解决方案可能是,如果您可以分叉 emr-bootstrap-actions for spark 并根据需要对其进行配置,那么您将能够使用引导步骤在 AWS 上安装 Spark。
不过,这似乎有点复杂。
您可能需要考虑一些事情:
更新 spark/config.file
以安装 spark-1.5。类似的东西:
+3 1.5.0 python s3://support.elasticmapreduce/spark/install-spark-script.py s3://path.to.your.bucket.spark.installation/spark/1.5.0/spark-1.5.0.tgz
上面的这个文件列表必须是正确构建的 spark,位于您暂时拥有的指定 s3 存储桶中。
为了打造你的火花,我建议你阅读示例section about building-spark-for-emr 和official documentation。应该是这样的! (希望我没有忘记什么)
编辑:Amazon EMR 版本 4.1.0 提供了 Apache Spark (1.5.0) 的升级版本。您可以查看here了解更多详情。
【讨论】:
【参考方案2】:不幸的是,这在 1.4.1 版本中是不可能的,如果您无法升级,您可以扩展随机森林类并复制我在该拉取请求中添加的一些代码 - 但请务必切换回常规升级后的版本。
【讨论】:
【参考方案3】:现在,EMR 上的 emr-4.1.0 版本原生支持 Spark 1.5.0!不再需要使用 emr-bootstrap-actions,顺便说一句,它仅适用于 3.x AMI,不适用于 emr-4.x 版本。
【讨论】:
以上是关于在 Spark RandomForestClassifier 中预测类概率的主要内容,如果未能解决你的问题,请参考以下文章