火花随机森林:相同种子的不同结果
Posted
技术标签:
【中文标题】火花随机森林:相同种子的不同结果【英文标题】:Spark Random Forests: Different results with same seed 【发布时间】:2016-09-16 13:27:04 【问题描述】:在运行 Spark 的 RandomForest 算法时,即使使用相同的种子,我似乎也会在不同的运行中得到不同的树分裂。如果我做错了什么(可能),或者实现是错误的(我认为这不太可能),有人可以解释一下吗?这是我的跑步计划:
//read data into rdd
//convert string rdd to LabeledPoint rdd
// train_LP_RDD is RDD of LabeledPoint
// call random forest
val seed = 123417
val numTrees = 10
val numClasses = 2
val categoricalFeaturesInfo: Map[Int, Int] = Map()
val featureSubsetStrategy = "auto"
val impurity = "gini"
val maxDepth = 8
val maxBins = 10
val rfmodel = RandomForest.trainClassifier(train_LP_RDD, numClasses, categoricalFeaturesInfo,
numTrees, featureSubsetStrategy, impurity, maxDepth, maxBins,seed)
println(rfmodel.toDebugString)
在两次不同的运行中,这个 sn-p 的输出是不同的。例如,两个结果的差异显示如下:
sdiff -bBWs run1.debug run2.debug
If (feature 2 <= 15.96) | If (feature 2 <= 16.0)
Else (feature 2 > 15.96) | Else (feature 2 > 16.0)
If (feature 2 <= 15.96) | If (feature 2 <= 16.0)
Else (feature 2 > 15.96) | Else (feature 2 > 16.0)
If (feature 2 <= 33.68) | If (feature 2 <= 34.66)
Else (feature 2 > 33.68) | Else (feature 2 > 34.66)
If (feature 1 <= 17.0) | If (feature 1 <= 16.0)
Else (feature 1 > 17.0) | Else (feature 1 > 16.0)
【问题讨论】:
你想明白了吗?如果是这样,如何?否则,您是否有一些示例数据可以共享以完成一个可重复性最低的示例? 我尝试在最新版本的 Spark 3.0 中复制它。无法复制。可能这是一个旧版本问题 这可能是由于使用 featureSubsetStrategy 作为“自动”引起的。这将导致对用于模型生成的特征数量进行一些概率估计。您能否尝试使用数值或“全部”。在这里找到一篇关于 Randomforest featureSubsetStrategy 的好文章 - dzone.com/articles/…。这可能会有所帮助。 这也可能是相关的:stats.stackexchange.com/questions/402391/…。输入数据的顺序。 我看了下特征选择的源码,RandomForest.selectNodesToSplit负责。它使用具有种子的随机生成器,您可以查看here。这至少从 2.0 版开始。所以特征选择似乎不是问题@AbdulRahman 【参考方案1】:在没有更多上下文的情况下无法判断(也没有足够的代表发表评论),但正如 Shaido 所建议的,一个原因可能是 train_LP_RDD
不是确定性的。例如。如果你正在做类似的事情
train_LP_RDD = sc.textFile(path).sample(withReplacement=False, fraction=0.5)
那么每次运行trainClassifier
时都会得到不同的样本,即使你没有重新定义train_LP_RDD
。
【讨论】:
刚刚意识到 OP 已经有 4 年没见了......但无论如何,如果有人带着类似的问题来到这里,您可以发表评论/回答。 在回答这样的老问题时要小心,用另一个问题代替评论。我知道您没有发表评论的能力,但是无论如何,在这些情况下,您通常会在对您的回答进行初步审查时被否决(它会通过初步审查,因为您是新人并且发布了一个非常古老的问题)。没什么大不了的,只是一个公平的警告,你可能会得到一些反对意见。 谢谢,非常感谢您花时间解释!以上是关于火花随机森林:相同种子的不同结果的主要内容,如果未能解决你的问题,请参考以下文章