ブートストラップ フォレストのチューニング パラメーター、分割数、予測式JMP およびコミュニティの皆様
(W10 エンタープライズ、JMP Pro 15.0.0)
ブートストラップ フォレスト モデリングの調整パラメーターのどれが各要素の分割数に影響を与えるのか知りたいと思っています。 私は調整テーブルなどを使用して適合を最大化するための適合を最適化する方法、たとえば検証セットの R^2 に精通しています。 以下で強調表示されている 6 つのパラメータのうち、(列の寄与からの) 分割数に影響を与える可能性があるのはどれですか?

ブートストラップ フォレストから出力されたレポートを見ると、列の寄与に「分割数」という列があります。 これらの分割を合計すると、フォレスト内の分割の合計数が得られます。 個別に見ると、これらは特定のパラメーターでモデルが分割された回数です。

データ テーブルに保存できる式の詳細を調べ始めると、式内でパラメーターがカウントされる回数とそのパラメーターの分割数に差異が生じる場合があります。
たとえば、パラメータに 1000 の分割がある場合、式に 2 回、合計 2000 回表示される必要がありますが、これは理にかなっています。 ただし、これは常に起こるわけではありません。 調整パラメータのいずれかが原因ではないかと思われますが、よくわかりません。 そうでない場合、他に何が影響する可能性がありますか?
特定の例を挙げると、以下は近似による列寄与のスクリーンショットであり、それを 2*分割数と、式でそのパラメーターがカウントされる回数と比較しています。 見てわかるように、パラメータが式に現れる回数 (例: X_1 の場合は 12626) は、2*分割数 (X_1 の場合は 12636) と一致しません。 近い場合もあれば、非常に大きい場合もあります (コラム「差異」を参照)。 また、興味深いのは、差の合計がゼロになることです。 したがって、この違いの原因となっているものはすべて、分割の合計数を実際に変更するのではなく、分割の割り当て方法だけを変更するような方法で「重み付け」されます。

この式では、パラメータ X_11 が 2*分割数の 276 倍も多く見つかっていることが非常に興味深いと思います。 私にとって、これは、一部の分割で X_11 が均等に決定されず、別のパラメーターが決定されていることを示唆しています。 そして、これは、分割の合計数が一定に保たれるような方法で行われます。 それは分割ごとにサンプリングされた用語または最小分割サイズに関連している可能性がありますか? いくつかの手動テストを試しましたが、それらが分割数にどのように影響するかを判断できませんでした。
ちなみに、私は数式を Word にコピーし、パラメータ X_1、X_2 などを単純に数えます。数式のサイズとツリーの数を考えると、手動で検索して見つける方法はありません。何が原因なのでしょうか。 残念ながら、JMP 内で Text Explorer などを使用して数式を評価する方法は私にはわかりません。
JMP 開発者またはコミュニティのモデラーからのフィードバックをお待ちしております。
ありがとう、
DS
Re: ブートストラップ フォレストのチューニング パラメーター、分割数、予測式こんにちは@バイロン_JMP 、
はい、分割数は、アルゴリズムがその特定の変数でツリーを分割することを選択した回数であることを理解しています。 列に書き込まれる数式をもう少し詳しく調べると、列の寄与度で報告される分割数が、数式でカウントされる X 係数の倍の数の正確に 1/2 であるとは限りません。
ツリーの決定は次のようになると考えられるかもしれません (単なる例として)。
If(欠落している(X_1) | X_1 <=32, 41, 35)
各決定がこれに該当する場合、式内に X_1 が出現する回数は、正確に 2 * その因子に関連付けられた分割数であることが予想されます。
しかし、代わりに、決定木が次のようになった場合は、次のようになります。
If(欠落している(X_1) | X_3 > 16, 20, 18)
その場合、その変数でツリーが分割された回数が、式に現れる回数と異なるという状況が発生する可能性があります。 デシジョン ツリーが構築されるときに、何がその原因となるのでしょうか?
元の投稿の特定の状況では、係数 X_1、X_2、および X_7 が互いにバランスをとり、「差分」列の値を合計した値が 0 になることがわかります。 差異を合計すると、他のすべての X 因子にも同じことが当てはまります。
したがって、この場合、係数 X_1 は、実際には、列寄与の列の分割数でレポートされるよりも 5 倍少ない (差/2) 式で使用されます。 同様に、X_2 と X_7 については、式内でそれぞれ 124 倍多く使用され、119 倍少なく使用されます。 これらを合計すると、5 + (-124) + 119 = 0 となります。
情報が不足している可能性がありますか? これは偶然にしては「完璧」すぎます、私の個人的な意見です。 調整プロセスのどの部分がこれに関与しているのかわかりません。
ご質問については、次のとおりです。
1. DOE の空間充填均一オプションを使用して、少なくとも 60 回の実行(変更する因子の数の 10 倍)の大規模なセットを生成します。 次に、DOE を数百回複製して実行します。RAM をすべて消費しないように、スクリプトを使用して実行します。 実行には数日かかる場合があります。
2. 元のデータ テーブルを 80/20 のトレーニング/テスト データ セットに分割します。 次に、元のデータ テーブルをトレーニングのみのテーブルとテストのみのテーブルに分割します。 トレーニング テーブルを使用し、データ セットの約 0.18 ~ 0.25 の間のランダム ホールドアウトを使用して、モデルの適合性を検証します。 繰り返しますが、調整に最適な値を見つけて検証部分として使用できるように、これをすべてスクリプトで実行します。 正確な 80/20 のトレーニング/検証分割は、わずかにずれたもの (たとえば 0.79/0.21) ほど最適ではないことがよくあります。 多くの場合、検証セットではもう少し優れた R^2 が得られます。
ありがとう、
DS
Re: ブートストラップ フォレストのチューニング パラメーター、分割数、予測式これはあまり満足のいく答えではないかもしれませんが、分割回数は、変数がブランチを分割するのに最適な場所であった回数を数えるだけです。
実際には、変数を何回分割できるかを制御することはできません。
もしかしたら、次のような質問が返ってくるかもしれません。
1. ターンテーブルはどのように構築していますか?また、使用するランの数は何ですか?
2. チューニングするとき、データセット全体に対してチューニングしますか、それともランダムなサブセットに対してチューニングしますか?
- サブセット内のデータのどの割合を使用しますか (使用する場合)
数式で使用されるパラメータ名に関する観察は興味深いです。 それについては少し調べてみるかもしれません。