2016-08-31 52 views
0

我有一个Spark应用程序,它在libsvm格式的稀疏矩阵上使用梯度增强树。在纱线丛集模式下花费Spark应用程序的时间

val model = GradientBoostedTrees.train(trainingData, boostingStrategy)
这里trainingData是RDD [LabeledPoint]。 hadoop上的大小约为37 MB。

另请参阅连接的两个图像 Start After some time

第一个是从什么时候开始。然后我拍了一段时间的屏幕截图。

如果你看单独的任务 - 你会看到毫秒和秒。如果我把它们加起来,他们会给我几分钟的时间。不过,在我拍摄第二个屏幕时,我的应用程序运行了1.5小时。

所以我的问题是

  1. 我怎么知道正在采取的时间(不是UI)90%?

  2. 如何在Spark上固定渐变增强过程。如果您看到大多数任务是ML Lib和决策树内发生的事情。我使用了5个分区 - 我应该增加更多分区吗?还有多少 ?

  3. 数据不断增加,从37MB增加到19GB。为什么呢? - 这是一个问题吗?

  4. 经过一段时间,当我完成了我的训练,并试图写出预测(折叠) - 我得到一个大小超过INT Max_Value错误。原因是 - 似乎有太多的文字被写出来了?它是每个分区?

  5. 我必须训练GBT的300轮数。我在3到4小时内挣扎了3次POC。使用MLLib在Spark中完成300轮梯度增强是否可能?

我在斯卡拉2.10.4和mllib 1.5.2

回答

0

问题2:

GBT反复训练只有一棵树。如果你想加快这个过程,尝试使用随机森林。 RF平行地训练树的整体,这比GBT快。

+0

是的 - 我知道 - 但我已经用GBT在本地完成了,预测比我的训练数据要好得多。事实上,现在GB已经成为任何ML问题的默认算法 - 特别是随着XGBoost的到来。我希望有人能帮助我。感谢您的回复 – Run2

相关问题