我有一个Spark应用程序,它在libsvm格式的稀疏矩阵上使用Gradient Boosting Trees。
val model = GradientBoostedTrees.train(trainingData, boostingStrategy)
第一个是从它开始的时候开始的。然后我拍了一段时间的屏幕截图。
如果你看一下个别任务 - 你会看到毫秒和秒。如果我把它们加起来,它们会给我一些时间。但是我的应用程序在第二次屏幕截图时运行了1.5小时。
所以我的问题是
我怎么知道90%的时间(不在用户界面上)被带到哪里?
如何在Spark上强化Gradient Boosting的这个过程。如果你看到大部分任务都是ML Lib和Decision Trees中发生的事情。我使用了5个分区 - 我应该增加它吗?还有多少?
数据不断增加,从37MB增加到19GB。为什么呢? - 这是一个问题吗?
经过一段时间,当我完成训练并尝试写出预测(折叠之外) - 我得到一个超过INT Max_Value的大小错误。原因是 - 似乎有太多的线被写出来了?是每个分区?
我必须训练GBT 300轮。我在3-4个小时的时间里进行了3轮的POC。是否可以使用MLLib在Spark中进行300轮Gradient Boosting?
我在scala 2.10.4和mllib 1.5.2
答案 0 :(得分:0)
问题2:
GBT只迭代地训练一棵树。如果您想加快这个过程,请尝试使用随机森林。 RF以平行方式训练一组树木,这比GBT快。