パーティション モデルを推定するためのチューニング テーブル: 結果モデル (ツリー、ブートストラップ、ブースト) を分割するためのオプションは、調整設計テーブルを使用することです。 結果は、設計点、各設計点の検証 R-2 乗および検証 RMSE を含むテーブルで始まります。 そのテーブルには、トレーニング R 2 乗、トレーニング RMSE、テスト R 2 乗、テスト RMSE も表示する必要があります。 ここで手助けできる人はいますか?おそらくスクリプトを使用して?
これらの統計などは、選択したモデルのテーブルの下に表示されますが、すべての設計点についてこれらの統計が必要です。 私の狂気への方法は次のとおりです。たとえば、学習率の増加に伴って発生するオーバーフィッティングの量を示すために、学習率に対する検証 R2 とトレーニング R2 の両方を示すグラフを作成できるようにしたいと考えています。
Re: パーティション モデルを推定するためのチューニング テーブル: 結果JMP のスクリプト、Cameron について詳しく学んでいます。 繰り返しますが、これはうまく機能します。 またよろしくお願いします。 大変お世話になりました。
Re: パーティション モデルを推定するためのチューニング テーブル: 結果NumberBox が "<< Get" を認識していないようです。NumberBox の Scripting Index を確認すると、そのタイプのオブジェクトが認識するすべてのメッセージが表示されます。それらの 1 つは << Get Text; です。ただし、それは文字列を返します。num() を使用して数値に変換できます。
num(report["Specifications"][NumberBox(1)] << Get Text);
Re: パーティション モデルを推定するためのチューニング テーブル: 結果こんにちは、キャメロン:
スクリプトを修正しました (ありがとうございます!) が、最後の 1 つの問題で立ち往生しています。 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
私のスクリプトには、ブースティングされたツリー出力からのレポート ウィンドウへの参照を保持する変数「レポート」があります。 レポート内の「Overall Statistics」というタイトルのアウトライン ボックスには、R2 と RMSE を含むテーブルが含まれています。 'report[“Overall Statistics”][numcolbox(1)]' を使用して、R2 値を持つ numcolbox 表示要素にアクセスします。Re: パーティション モデルを推定するためのチューニング テーブル: 結果キャメロン、よくやった! あなたの忍耐を試すリスクを負って、R2 と共に RMSE を取得するにはどうすればよいですか? または、より一般的には、R2 や RMSE などの変数名を決定して、スクリプトで呼び出すことができるようにするにはどうすればよいでしょうか。
Re: パーティション モデルを推定するためのチューニング テーブル: 結果私は気が変わります。スクリプトを作成するのはそれほど難しくありません。これは、ブースティングされたツリーと、サンプル データ ライブラリの Car Physical Data を使用した例です。これを試すためのチューニングテーブルを作成しました。これを添付します。また、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: パーティション モデルを推定するためのチューニング テーブル: 結果そのためのスクリプトを作成する必要があると思います。これは、組み込み機能の結果を効果的に再現し、トレーニング セットに必要な他のメトリックを取得する必要があります。確かに実行可能ですが、努力する価値があるかどうかはわかりません。