我正在研究Spark MLlib。 在研究DecisionTree时,我看到了以下DecisionTree.trainClassifier用法示例。
import org.apache.spark.mllib.tree._
val model = DecisionTree.trainClassifier(trainData, 7, Map[int, int](), "gini", 4, 100)
这里有6个参数,我不了解第3(Map),第5(4)和第6(100)个参数。
谷歌表示他们是明确的功能,lambda和alpha。 谁能更好地解释一下呢?
需要你的帮助
答案 0 :(得分:4)
<强>第三强>
categoricalFeaturesInfo:此地图中没有的任何要素都被视为连续。
例如,Map(0 - > 2,4 - > 10)指定要素0是二进制(取值0或1),而要素4有10个类别(值{0,1,... ,9})。请注意,要素索引从0开始:要素0和4是实例要素向量的第1和第5个要素。
Map [Int,Int]表示所有要素都是数字类型。
<强>第五强>
它很容易理解,它是树的(最大)深度。
<强>第六强>:
maxBins:离散连续特征时使用的bin数。
增加maxBins允许算法考虑更多的分割候选者并进行细粒度的分割决策。但是,它也增加了计算和通信。
请注意,maxBins参数必须至少为最大类别数。
您可以参考本书&#34;使用Spark进行分析&#34;(第4.8-4.10章)了解更多详情。
答案 1 :(得分:2)
该功能的签名是:
def trainClassifier(输入:RDD [LabeledPoint],numClasses:Int,categoricalFeaturesInfo:Map [Int,Int],impurity:String,maxDepth:Int,maxBins:Int):DecisionTreeModel
,在spark DecisionTree source code 中,您可以看到参数说明:
categoricalFeaturesInfo
映射存储分类特征的arity。条目(n - > k)表示特征n是分类的,其中k个类别从0开始索引:{0,1,...,k-1}。
maxDepth
树的最大深度(例如,深度0表示1个叶节点,深度1表示1个内部节点+ 2个叶节点)。 (建议值:5)
maxBins
用于拆分功能的最大箱数(建议值:32)