勾配木ブースティングにおける木サイズ


10

フリードマンによって提案された勾配木ブースティングはJ、基本学習器として末端ノード(=葉)を持つ決定木を使用します。正確にJノードを持つツリーを成長させる方法はいくつかあります。たとえば、深さ優先の方法または幅優先の方法でツリーを成長させることができます...

J勾配木ブースティングのために正確に終端ノードを持つ木を成長させる方法は確立されていますか?

私はRのgbmパッケージのツリー成長手順を調べましたが、それは深さ優先の方法でツリーを拡張し、エラーの改善に基づくヒューリスティックを使用して、左または右の子ノードを拡張するかどうかを選択します-それは正しいですか?


2
gbmはCARTを使用して、80年代の有名なアルゴリズムであるツリーを構築します。ヒューリスティックはジニ不純物と呼ばれ、二次損失を伴う回帰のかなり標準的な選択です。

2
Afaik gini不純物は、問題の分類に使用されます。それにもかかわらず、問題は木の大きさに関するものです。
Peter Prettenhofer

ブランチを一度に追加します。次の各スプリットが、ブランチだけでなく、ツリー内の残りのスプリット候補の中で最高である場合、私は驚かれます。「J」に対してデータが小さすぎる場合など、データが正確な数をサポートしない場合があります。
EngrStudent 2016年

@EngrStudentが言ったように、正確な数のノードを強制することはできません。ただし、ノード数の上限はある程度制御できます。ノードごとのオブジェクトの最小数を制御gbmするパラメーターがありますn.minobsinnode。もちろん、ノードの数はNumberOfPoints / n.minobsinnode以下になります
G5W

「J」の葉を探している場合は、ツリーを完全に構築し、Jの葉よりも多いと仮定して、Jまでプルーニングします。これにより、「J」ノードが得られ、それらが最も多くなります。有益な分割-それはそれがあり得る最も健康的なCARTモデルでしょう。十分なスプリットがない場合は、ドメイン内でランダムにスプリットして「J」を取得することもできますが、スプリアスであり、多少は簡単です。リーフ内の値の分布を見て、CDF駆動の近似を使用する場合がありますが、これはリーフあたりの平均モデルとは異なります。
EngrStudent 2016

回答:


2

Rのソリューションはgbm典型的なものではありません。

他のパッケージ、のようなscikit-learnまたはLightGBMいわゆる利用(scikit-学ぶ中)BestFirstTreeBuilder、葉の数が制限されています。すべてのリーフのプライオリティキューをサポートし、各反復でリーフを分割して、最適な不純度の低下をもたらします。したがって、深さ優先でも幅優先でもありませんが、リーフでの計算に基づく3番目のアルゴリズムです。

ある意味で、このアプローチはすべての葉を盲目的に分割するよりも最適です。分割するかどうかを選択しかし、それは、まだ貪欲ヒューリスティックである番目のノードが今だけ最初の分割に依存しではなく、現在のスプリットよりもはるかに多くの不純物を減少させることが可能succesive分割。Iii

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.