パーティションモデルを推定するための調整テーブル: 結果モデル (ツリー、ブートストラップ、ブースト) を分割するためのオプションは、調整設計テーブルを使用することです。 結果は、設計点、各設計点の検証 R 二乗および検証 RMSE を含む表から始まります。 その表には、トレーニング R 二乗、トレーニング RMSE、テスト R 二乗、およびテスト RMSE も表示する必要があります。 ここで協力できる人はいますか?スクリプトを提供してくれるでしょうか?
これらの統計情報などは、選択したモデルの表の下に表示されますが、すべての設計ポイントに対してこれらの統計情報が必要です。 私の狂気の解決方法は次のとおりです。たとえば、学習率に対する検証 R2 とトレーニング R2 の両方を示すグラフを作成して、学習率の増加に伴って発生する過学習の量を示したいと考えています。
Re: パーティション モデルを推定するための調整テーブル: 結果JMP のスクリプトの隅から隅までたくさん学んでいます、キャメロン。 もう一度言いますが、これはうまく機能します。 改めて感謝申し上げます。 大変感謝しております。
Re: パーティション モデルを推定するための調整テーブル: 結果NumberBox が「<< Get」を認識していないようです。NumberBox のスクリプト インデックスを確認すると、その種類のオブジェクトが認識するすべてのメッセージが表示されます。そのうちの 1 つは << Get Text; です。ただし、それは文字列を返します。num() を使用して数値に変換できます。
num(report["Specifications"][NumberBox(1)] << Get Text);
Re: パーティション モデルを推定するための調整テーブル: 結果こんにちは、キャメロン:
あなたのスクリプトを修正しました (もう一度感謝します!) が、最後の問題で立ち往生しています。 ブーストされたツリーからの RSq、RMSE などの結果とともに、最終的なレイヤー数も取得したいと思います。 これは元のスクリプトを直接変更したものになると思いました。 下から 13 行目をご覧ください。
NL = report["Specifications"][NumberBox(1)] << Get;
どうやらこれはうまくいきません。 レポートの「仕様」部分と「全体的な統計」部分に何か違いがあるかどうかご存知ですか?
dt = Data Table("C.jmp");
dt_pars = Data Table("table 3400.jmp");
//Get copy of pars table to store results
dt_results = dt_pars << Subset( All rows, Selected columns only( 0 ) );
dt_results << New Column("Seed");
dt_results << New Column("Final N Layers");
dt_results << New Column("Rsq Training");
dt_results << New Column("Rsq Validation");
dt_results << New Column("Rsq Test");
dt_results << New Column("RMSE Training");
dt_results << New Column("RMSE Validation");
dt_results << New Column("RMSE Test");
dt_results << New Column("N Training");
dt_results << New Column("N Validation");
dt_results << New Column("N Test");
for(i = 1, i<= N Row(dt_pars), i++,
SED = dt_pars: Seeds[i];
SPT = dt_pars:Splits Per Tree[i];
LR = dt_pars:Learning Rate[i];
RSR = dt_pars:Row Sampling Rate[i];
CSR = dt_pars:Column Sampling Rate[i];
MSS = dt_pars:Minimum Size Split[i];
NL = dt_pars:Number of Layers[i];
str = Eval Insert("\[report = (dt << Boosted Tree(
Y( :PR ),
X(
:Pe,
:To,
:Td,
),
Validation( :Name( "Train/Valid/Test" ) ),
Set Random Seed( ^SED^ ),
Method( "Boosted Tree" ),
Splits per Tree( ^SPT^ ),
Number of Layers( ^NL^ ),
Learning Rate( ^LR^ ),
Row Sampling Rate( ^RSR^ ),
Column Sampling Rate( ^CSR^ ),
Minimum Size Split( ^MSS^ ),
Go,
invisible
)) << Report;]\");
//Fit the boosted tree
Eval(Parse(str));
//Get the Rsq values and insert them into the results table
R2 = report["Overall Statistics"][NumberColBox(1)] << Get;
RMSE = report["Overall Statistics"][NumberColBox(2)] << Get;
N = report["Overall Statistics"][NumberColBox(3)] << Get;
NL = report["Specifications"][NumberBox(1)] << Get;
report << Close Window;
dt_results:Final N Layers[i] = NL[1];
dt_results:Rsq Training[i] = R2[1];
dt_results:Rsq Validation[i] = R2[2];
dt_results:Rsq Test[i] = R2[3];
dt_results:RMSE Training[i] = RMSE[1];
dt_results:RMSE Validation[i] = RMSE[2];
dt_results:RMSE Test[i] = RMSE[3];
dt_results:N Training[i] = N[1];
dt_results:N Validation[i] = N[2];
dt_results:N Test[i] = N[3];
);
Re: パーティション モデルを推定するための調整テーブル: 結果お役に立てて嬉しいです!Re: パーティション モデルを推定するための調整テーブル: 結果今はすべてが順調に進んでいます、キャメロン。 あなたの知恵にどれほど感謝しているかわかりません。
Re: パーティション モデルを推定するための調整テーブル: 結果RMSE 列は numcolbox(2) にあるため、R2 を取得するのと同じ方法でスクリプト内でこれを取得できます。
このような値をレポートから取得するには、その値が表示ツリー内のどこにあるかを把握するだけで済みます。 その方法は次のとおりです。 https://www.jmp.com/support/help/14/view-the-display-tree.shtml
私のスクリプトには、ブーストされたツリー出力からのレポート ウィンドウへの参照を保持する変数「report」があります。 レポート内の「全体的な統計」というタイトルのアウトライン ボックスには、R2 と RMSE のテーブルが表示されます。 「report[“Overall Statistics”][numcolbox(1)]」を使用して、R2 値を持つ numcolbox 表示要素にアクセスします。Re: パーティション モデルを推定するための調整テーブル: 結果魔法のように働きました、キャメロン! 忍耐力を試してみるのですが、R2 とともに RMSE を取得するにはどうすればよいでしょうか? または、より一般的には、教育のために、R2、RMSE などの変数名をスクリプト内で呼び出せるようにするにはどうすればよいでしょうか?
Re: パーティション モデルを推定するための調整テーブル: 結果気が変わりました。スクリプトを作成するのはそれほど難しくありません。以下は、ブーストされたツリーとサンプル データ ライブラリの車の物理データを使用した例です。試しにチューニングテーブルを作成したので添付します。また、Car Physical Data テーブルに検証列を追加しました。
スクリプトは次のとおりです。
dt = Data Table("Car Physical Data");
dt_pars = Data Table("TuningTable");
//Get copy of pars table to store results
dt_results = dt_pars << Subset( All rows, Selected columns only( 0 ) );
dt_results << New Column("Rsq Training");
dt_results << New Column("Rsq Validation");
for(i = 1, i<= N Row(dt_pars), i++,
SPT = dt_pars:SplitsPerTree[i];
LR = dt_pars:Learning Rate[i];
RSR = dt_pars:Row Sampling Rate[i];
CSR = dt_pars:Column Sampling Rate[i];
str = Eval Insert("\[report = (dt << Boosted Tree(
Y( :Weight ),
X(
:Country,
:Type,
:Turning Circle,
:Displacement,
:Horsepower,
:Gas Tank Size
),
Validation( :Validation ),
Method( "Boosted Tree" ),
Splits per Tree( ^SPT^ ),
Number of Layers( 50 ),
Learning Rate( ^LR^ ),
Row Sampling Rate( ^RSR^ ),
Column Sampling Rate( ^CSR^ ),
Go,
invisible
)) << Report;]\");
//Fit the boosted tree
Eval(Parse(str));
//Get the Rsq values and insert them into the results table
R2 = report["Overall Statistics"][NumberColBox(1)] << Get;
report << Close Window;
dt_results:Rsq Training[i] = R2[1];
dt_results:Rsq Validation[i] = R2[2];
);結果テーブルの R2 列をスタックして、次のグラフを作成しました。
これは、あなたが言及した他のプラットフォームに非常に簡単に適応できるはずです。
Re: パーティション モデルを推定するための調整テーブル: 結果そのためのスクリプトを作成する必要があると思います。これには、組み込み機能の結果を効果的に再現し、トレーニングセットに必要な他のメトリクスを取得する必要があります。確かに実行可能ですが、努力する価値があるかどうかはわかりません。