分類木の成長における最適分割のためのアルゴリズムに関する文献


8

ではESL、セクション9.7、木が分類(または回帰)の成長における分割の計算時間と述べる段落があり、通常のようにスケール予測因子の数で、数あるがサンプル。pNlog⁡NpN

素朴なアプローチはスケーリングをもたらし、アルゴリズムの分割部分の詳細と、典型的なスケーリングをどのように実現するかを説明する文献への参照を見つけることができませんでした。pN2 pNlog⁡N

単純なアプローチでは、観測値の最初の順序付けの後、観測値間の中間点の間で、所定の変数の最適な分割が求められ、各分割の損失の計算は、ような時間で実行できます。。N−1N

私は(そしておそらくます)私が知っている実装のいくつかのソースコードを学ぶことができますが、参考文献はいいだろう特に時間複雑に関する。−

回答:


2

コメントには多すぎるため、より一般的なアプローチを扱うため、私は別の答えを出します。

したがって、ESLでは、分岐境界の計算時間を実際に記述します(より正確には、分割統治のように見えます)。

と表す N 観測数と Kツリーを成長させるときの子ノードの数。考えれば一般的には緩んでいないと思いますK修正される。また、f(N) 特定のノードで分割ポイントを計算するための処理時間。

したがって、次のように実行時間の式を再帰的に記述できます。

T(N)=f(N)+K∗T(N/K)
ここでは、子ノードがサイズの入力データセットを分割すると考えました N に K 同じサイズのサブセット N/K。tisが最良のケースであることはわかっています。

しかし、これはマスター定理のよく知られたアプリケーションであることがわかります。これはCLRSブックに詳しく記載されています。私は第3版を持っています。詳細はセクション4.5にあり、証明は次のセクションにあります。詳細はよく覚えていませんが、再帰を拡張していくつかの用語をグループ化しても、それほど複雑ではないことを覚えています。

ただし、この場合に重要なのは、 f(N)=O(N) -線形時間、アルゴリズムの結果の時間は T(N)=O(NlogN)。この時間は単一の入力変数に対して計算されるため、合計時間はP 変数は O(PNlogN)

すべての入力が最初にソートされている場合、この時間はツリーの成長で達成可能です。 O(PNlogN)、分割値を見つけるには、このソートされた入力で線形時間がかかります。ここでは、以前の回答で述べたように、オンライン分散アルゴリズムを適用できますL2=1N(y−y^)2。ためにL1=1N|y−y^|中央値を見つけるのはさらに簡単です。私は木のために他のいくつかの損失関数を試したことがないことを告白します。

ただし、分割のサイズが等しい場合、マスター定理が最良のケースに適用されることに注意してください。最悪のケースは、分割が非常に不均衡な場合です。そこで、マスター定理の別のケースを適用することができ、時間はO(PN2)。

結論として、ESLの作成者は通常、クイックソートアルゴリズムの説明に使用される方法でこの用語を使用していると思います。通常、クイックソートによりO(NlogN) 実行時間、最悪の場合 O(N2)、いくつかの特定のデータ設定用。

お役に立てば幸いです。


2

ここで別の質問からの私の回答を参照してください。私は紙のリファレンスはありませんが、あなたはそれを簡単に見つけることができますp 長さの数値入力 N 必ず:

  • すべてを繰り返す p 入力- O(p)
  • 各入力を昇順に並べ替え- O(Nlog(N))
  • 線形時間で左から開始して右から開始する2つの実行中の分散を計算する- O(N)

各属性の支配的な時間はソート時間なので、 O(pNlog(N))。


+1、これは私が考えていなかった良い答えですが、2次損失を前提としています。これは、分類ツリーに使用される他のすべての一般的な損失関数に一般化できるとは思いません。典型的なことだと思います pNログ⁡(N)、しかしESL最悪のケースによると pN2、動作はブランチアンドバウンドアルゴリズムから発生しますが、これの確認は見つかりませんでした。
— NRH 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.