2016-05-08 13 views
1

私はスパークmllibのマニュアルを読んでいますし、決定木のドキュメントでそれが言う -火花データパーティショニングを

Each partition is chosen greedily by selecting the best split from a set 
of possible splits, in order to maximize the information gain at a tree node. 

Here is the link .

私が理解することはできませんよ -

  1. パーティション私たちが話しているのは、データパーティション または機能パーティション
  2. また、各データパーティション上で分割することはできますか?

答えて

2

ここでの「パーティション」への参照は、スパークデータパーティションとは関係ありません。これは、選択された機能に基づいたツリーノードでのデータのパーティション化であり、アルゴリズムの「データパーティショニング」に関する。 実際の実装をチェックすると、分割する必要のあるすべてのノードをキューに入れ、使用可能なメモリ(config)に基づいてそれらの束を選択します。その機能は1回のパスで行うことができます。次に、各ノードに対して、フィーチャのサブセット(config)を取得し、フィーチャごとに統計を計算します。これにより、可能な分割のセットが与えられます。ドライバノード(ここでのノードは、ドライバマシンを起動します。可能な限り最良の分割だけが送信され、ツリーが拡大されます。各データムまたはrddの行は、BaggedTreePointとして表され、現在ノードが属するノードに関する情報が格納されます。 ソースコードを読むには少し時間がかかりますが、おそらくそれに値するかもしれません。

+0

Thanks Sourabh !!これは、ランダムフォレストツリーと決定木の両方で起こりますか? – tesnik03

+1

@ tesnik03ええ、実際はまったく同じコードです。あなたが1つの意思決定木を訓練しているなら、それはnumTrees = 1でランダムな森林を訓練します。 – evgenii

+0

ありがとう@EvgeniiMorozov – tesnik03