1

データセットを抽出して Dev-Val に分割し、これらを 12 の代替モデル候補に使用して、dev でトレーニングし、スコアリングされた Dev データセットと Val データセットの両方でパフォーマンス統計を計算するプロジェクトを作成しました。

このプロセス フローをさまざまな分割で何度も実行したいので、そのモデルがどれほど安定しているかを確認できます。ラヌニ(シード)を追加してデータを分割します。

私がやりたいことは、別のシードで分割を行うループを実行してから、モデルをトレーニングし、Dev データセットと Val データセットの両方をスコアリングするプロセス フローを実行することです。

とにかくEGでそのようなループを行うことはありますか? SAS Base コードから実行できるように、ストアド プロセスを作成する必要がありますか? 私が遭遇する問題は、サーバー上でループできる SAS Base コードが実行され、クライアント上の EG プロジェクトの「知識」がないことです。

誰もこれを試したことがありますか?どんなヒントでも大歓迎です。

4

1 に答える 1

2

ブートストラップ シミュレーションからそれほど遠くない何かをしたいようです。同一ではありませんが、コンセプトはそこにあります。同じデータを繰り返し再サンプリングします。

そういうわけで、私は同じテクニックでそれをします。(注意してください、あなたが求めていることを実際に行うべきかどうかについてはコメントしていません。そうしない理由はたくさんあります。回帰と機械学習の格言 #1 は、トレーニング セットとテスト セットと検証セットを決して組み合わせないでください。誤った信頼に終わる)。

PROC SURVEYSELECTこれを行うのはかなり得意です。この分野で影響力のある論文は、David Cassell によるDon't be LOOPyで、次のようになっています。

で回帰を実行しているとしましょうsashelp.class。層化に関係なくランダム化しています。

proc surveyselect data=sashelp.class
  out=class_sample
  seed=12345
  method=SRS /* This is different from bootstrapping: without replacement */
  n=15 /* you want 15 in your training set and 4 in your validation set */
  rep=100 /* you want 100 replicates, ie, you want to test it 100 times */
  outall /* this outputs all 19 to the dataset */
;
run;

これにより、19*100 の複製のデータセットが作成されます。 sample=1はトレーニング セットのデータ行でsample=0あり、検証セットの行です。

さて、回帰と分析を行うときは、by replicate;すべての作業に追加するだけです。この方法は、他の方法 (マクロ ループなど) よりも高速に実行され、コードもほとんどありません。

多くの変更を加えることなく、これをプロセス フローに統合できるはずであり、EG を使用していることは問題ではありません。これは主に、最初の入力データステップを変更するだけです。

于 2014-09-23T14:26:54.530 に答える