2016-08-31 9 views
0

libsvm形式のスパース行列にGradient Boosting Treesを使用しているSparkアプリケーションがあります。糸クラスターモードのSparkアプリケーションで時間がかかっています

val model = GradientBoostedTrees.train(trainingData, boostingStrategy)
ここtrainingDataは[LabeledPoint] RDDあります。 hadoopのサイズは約37 MBです。

また、最初のものは、それが始まったときからである

Start After some time

を取り付けられた2枚の画像を参照してください。そして、After Some timeスクリーンショットを撮りました。

個々のタスクを見ると、ミリ秒と秒が表示されます。私がそれらを加えれば、彼らは私にほんの一握りを与えるでしょう。しかし、私のアプリケーションは、私が2回目のスクリーンショットを撮った時点で1.5時間走っています。

だから私は持っている問題は、私は時間(ないUI上)の90%が取られている場所を知っていますどのように

  1. ですか?

  2. Gradient BoostingのこのプロセスをSparkに固定する方法を教えてください。ほとんどのタスクがML LibとDecision Trees内で何が起きているのか分かります。私は5つのパーティションを使用しました - それをさらに増やす必要がありますか?どのくらいより ?

  3. データは増加を続け、37MBから19GBに達します。なぜ正確に? - これは心配ですか?

  4. 私はトレーニングを終えて、フォールドアウトの予測を書き出そうとしていますが、サイズがINT Max_Valueのエラーを超えてしまいます。その理由は、あまりにも多くの行が書かれているようですね?それはパーティションごとですか?

  5. 私は300回のラウンドでGBTをトレーニングする必要があります。私は3回のラウンドでPOCを3〜4時間で苦労しています。 MLLibを使用してSparkで300ラウンドのGradient Boostingを行うことは可能ですか?

私はScalaの2.10.4の午前と質問2について1.5.2

答えて

0

をmllib:

GBTは、反復的に一つだけのツリーを訓練します。プロセスを固定する場合は、ランダムフォレストを使用してみてください。 RFは木のアンサンブルを並行してトレーニングしますが、GBTよりも高速です。

+0

はい - 私はそれを理解していますが、私はGBTを使ってそれをローカルで行いました。予測データはトレーニングデータのRFよりもはるかに優れています。実際には今日ではGBはあらゆるML問題のためのほとんどのデフォルトアルゴリズムになっています - 特にXGBoostの到来に伴います。私はいくつかの人が私を助けることを願っています。お返事をありがとうございます – Run2

関連する問題