首页 > 解决方案 > 获取 Spark MLlib 决策树中每个叶子的默认元素数

问题描述

如果可能的话,我想在 Spark MLlib 决策树中获取每个叶子的默认元素数。

我一直在这里阅读https://spark.apache.org/docs/latest/mllib-decision-tree.html并试图在https://github.com/apache/spark/blob/master/中找到一些东西mllib/src/main/scala/org/apache/spark/mllib/tree/model/Node.scala但我找不到我需要的信息。

我知道minInstancesPerNodeStrategy 参数,但不是我想要的。

有任何想法吗?谢谢!

标签: scalaapache-sparkapache-spark-mllibdecision-tree

解决方案


SparkDecisionTreeClassifier有几个参数,您可以setZYZ在训练时间之前使用方法设置这些参数。许多方法将帮助您规范树并避免过度拟合。例如

  • setMinInstancesPerNode:必须存在于节点/叶中才能有效的最小训练记录数。节点/叶子少于 minInstances 它将被汇总到父节点
  • setMaxDepth:树停止生长的最大深度。
  • setMinInfoGain: 发生分裂的最小信息增益

一旦您训练 ( .fit) 一个 Spark 决策树,然后预测 ( .transform),您的 DataFrame 中将有 3 个额外的列(用于分类):

  • predictionCol:“预测标签”
  • rawPredictionCol:“长度为 # 类的向量,在树节点上具有训练实例标签的计数,从而进行预测”
  • probabilityCol:“长度为 # 类的向量等于 rawPrediction 归一化为多项分布”

该列rawPredictionCol可能是您要查找的内容。它告诉您在训练时构建树后,每个类有多少实例最终出现在叶子中。预测标签是计数最高的类。(probabilityCol源自rawPredictionCol)捕获了预测中的“信心”。请参阅:https ://spark.apache.org/docs/latest/ml-classification-regression.html#output-columns


推荐阅读