タグ付けされた質問 「cross-validation」

保留されたデータのサブセットでのモデルのパフォーマンスを定量化するために、モデルのフィッティング中にデータのサブセットを繰り返し保留する。

2
SVM rbfカーネル-ガンマを推定するためのヒューリスティックな方法
この交換で、SVMのrbfカーネルのガンマを推定するヒューリスティックな方法を読みました。誰かがもう少し詳しく説明してくれるのではないかと思いました。データセットから1000(または多数)のデータポイントのペアを選択し、各ペアの差のノルムを計算すると思います。どうやら、.1、.9の分位数と中央値の逆数は、rbfカーネルに適したガンマの良い候補です。 ありがとう

2
予測財務時系列のk倍CV —最後の倍のパフォーマンスはより関連性がありますか?
財務時系列のANNベースの予測モデルに取り組んでいます。私は5分割交差検証を使用しており、平均パフォーマンスはそうです。最後のフォールド(最後のセグメントがトレーニングから省略され、検証に使用される反復)のパフォーマンスは、平均よりも優れています。 これは偶然/データ依存ですか、それとも通常、最後の折り目の検証パフォーマンスは優れていますか?(おそらく、先行するすべてのデータを使用したトレーニングは、時系列内の後続のデータにより関連しているため) これは少し奇妙な質問のように感じますが、とにかくいくつかの応答を期待しています。前もって感謝します :)

2
lmeで変量効果を指定する方法は?
私はこれを何時間もオンラインで検索しましたが、探しているオンライン投稿はありません。私の質問はSAS Proc混合手順で実装するのは非常に簡単ですが、lmeおよび/またはlmerパッケージでそれを実行する方法がわかりません。というモデルがあるとします 。ここで、は固定されていますが、とはランダムです。私のRコードはy= μ + α + β+ α β+ ey=μ+α+β+αβ+ey = \mu + \alpha + \beta +\alpha\beta + eαα\alphaββ\betaα βαβ\alpha\beta f1 = lme(y ~ factor(a), data = mydata, random = list(factor(b) = ~ 1, factor(a):factor(b) = ~ 1)) エラー:予期=しない: f1 = lme(y ~ factor(a), data = mydata, random = …

1
回帰を伴う時系列データの相互検証
「通常の」相互検証に精通していますが、単純な線形回帰関数で相互検証を使用しながら時系列予測を行いたいと思います。2つの質問を明確にするために簡単な例を書き留めます。1つはトレーニング/テストの分割について、もう1つは目的が異なるnについて予測することである場合にモデルをトレーニング/テストする方法について1つの質問で、nの予測ステップで、前進。 (1)データ 次のように、タイムポイント1、...、10のデータがあるとします。 timeseries = [0.5,0.3,10,4,5,6,1,0.4,0.1,0.9] (2)教師あり学習に役立つ形式にデータを変換する 私が理解している限り、「ラグ」、つまりデータのシフトを使用して、教師あり学習に適したデータセットを作成できます。 input = [NaN,0.5,0.3,10,4,5,6,1,0.4,0.1] output/response = [0.5,0.3,10,4,5,6,1,0.4,0.1,0.9] ここでは、出力ベクトルを作成するために、時系列を1つずつシフトしています。私が理解している限り、線形回帰モデルの入力として入力を使用し、応答の出力を使用できます(NaNは、ランダムな値に置き換えて近似できます)。 (3)質問1:相互検証(「バックテスト」) 今2スプリットを実行したいのですが、テストセットだけでなく列車もシフトする必要がありますか? つまり次のようなものです: 列車セット: 独立変数:[NaN、0.5,0.3,10,4,5] 出力/応答変数:[0.5,0.3,10,4,5,6] テストセット: 独立変数:[1,0.4,0.1] 出力/応答変数:[0.4,0.1,0.9] (ii)質問2:異なるラグを事前に予測する: 明らかなように、従属変数への従属変数を1だけシフトしました。ここで、5つのタイムステップを事前に予測できるモデルをトレーニングしたいとします。このラグを1に保ちながら、モデルを使用してn + 1を予測できます。 、...、n + 5、...または、独立変数から従属変数へのシフトを5に変更しますか?違いは何ですか?

2
ニューラルネットワークの早期停止と、相互検証を使用する場合の意味の理解
早期停止の手法がどのように定義されているかという考えに、私は少し困惑して混乱しています。Wikipediaを見てみると、次のように定義されています。 トレーニングデータをトレーニングセットと検証セットに、たとえば2対1の比率で分割します。 トレーニングセットでのみトレーニングを行い、検証セットの例ごとのエラーを時々、たとえば5エポックごとに評価します。 検証セットのエラーが最後にチェックされたときよりも大きくなるとすぐにトレーニングを停止します。 トレーニング実行の結果として、ネットワークがその前のステップで持っていた重みを使用します。 私は自分の実験でメソッドを使用していました(10倍の交差検証を使用)。各エポックで検証エラーをチェックし(検証精度も計算)、忍耐パラメーターを2に設定しています。つまり、検証エラーが2エポックで連続して増加する場合は、トレーニングを停止します。次に、モデルが終了した最後のエポックの結果を使用しました。 Ian Goodfellowは、ディープラーニングの本で別の定義を使用しています。4番目のステップとして、最も効果的なモデルの重みを使用することを提案します(つまり、検証エラーがチェックされるたびにモデルを保存します)。 保存したモデルは必要ありません。自分の作業の結果だけが必要です。したがって、私にとってグッドフェローによる早期停止の提案は、最終結果で達成した最高の検証精度を採用することを意味しますか?どういうわけかこれは合法的ではないようです。開発セットがない実際の状況では、この情報はありません。しかし、その場合、そもそも早期停止を使用する理由は何でしょうか。たとえば、フォールドのエポック数を平均してエポック数を決定し、それを後で実行するテストに使用しますか?

2
テストセットを検証セットとして使用できない理由
テストセットを検証セットとして使用しないでください。どうして? 検証セットは、モデルパラメーターが修正されたときに実行され、学習はトレーニングバッチのバックプロップを介してのみ行われます。 では、なぜ検証データを検証データとして使用できないのでしょうか?

1
列車(キャレット)の相互検証はどのように正確に機能しますか?
キャレットパッケージに関する多くの投稿を読みましたが、特にtrain関数に興味があります。ただし、列車の機能がどのように機能するかを正しく理解したかどうかは、完全にはわかりません。 私の現在の考えを説明するために、簡単な例を作成しました。 最初に、パラメーターグリッドを指定します。メソッドgbmを使用しているとすると、モデルのパラメーターグリッドは次のようになります。 grid <- expand.grid( .n.trees=seq(10,50,10), .interaction.depth=seq(1,4,1), .shrinkage=c(0.01,0.001), .n.minobsinnode=seq(5,20,5)) 続いて、train(trainControl)の制御パラメーターが定義されます。trainを使用した交差検証に関する私の考えが正しいかどうか知りたいので、この例では次のように使用します。 train_control <- trainControl('cv',10) 最後に、train関数が実行されます。例えば: fit <- train(x,y,method="gbm",metric="Kappa",trControl=train_control,tuneGrid=grid) 今、私は電車がうまくいくと推定する方法は次のとおりです: 上記の例では、160(5 * 4 * 2 * 4)の可能なパラメーターの組み合わせがあります。 各パラメーターの組み合わせトレインは、10分割交差検証を実行します パラメーターの組み合わせごと、および(10分割の)分割ごとに、パフォーマンスメトリック(この例ではKappa)が計算されます(この例では、これは1600 Kappaが計算されることを意味します) 各パラメーターの組み合わせについて、パフォーマンスメトリックの平均が10倍にわたって計算されます。 最高の平均パフォーマンスメトリックを持つパラメーターの組み合わせは、モデルの最適なパラメーターと見なされます 私の質問は簡単です、私の現在の考えは正しいですか?

2
相互検証によるKNNパラメーター調整:スコア描画
バイナリ分類にKNNメソッドを使用しようとしています。最良の 'k'パラメーター(アルゴリズムが調べる近傍の量)を見つけようとするとき、トレーニングセットでモデルをトレーニングし、データで取得した別の検証セットでその精度を調べます。この検証セットには12個のサンプルしかないため、3 k(1,3,5)の精度が引き込まれます。 今、私はこれらの3 kの1つを決定的なモデルに選択する方法を探しています。私は次のアプローチを念頭に置いていました。3kの場合、トレーニングセットの特定のKに対してK分割交差検証を行い、ここで平均精度が最も高いものを探します。これはまともなアプローチですか、それとももっと良い選択肢がありますか?また、ランダムなk(1、3、または5)を選択することも考えました。これは、「検証手順」で3のいずれかを選択できることが示されているためです。

2
仮説がネストされていない限り、相互検証は役に立ちませんか?
係数値をランダムに割り当て、エラーメトリックを使用してデータセット全体でこれらのモデルを評価し、このエラーメトリックに基づいて最適なモデルを選択するだけで、回帰設定で多くのランダムモデルを(データをまったく考慮せずに)生成した場合でも、実行できますか?過剰適合に? 最終的には、OLSソリューションになります(コメントを参照)。この場合、相互検証はこの手順とどのように異なりますか?たとえば、RidgeまたはLassoの回帰設定では、モデル(インデックス付けされた)の束を生成し、目に見えないデータセグメントでそれらを評価し、最適なモデルを選択しています。λλ\lambda CVはRidgeやLassoのような標準の正則化手法でうまく機能しているように思えます。これは、試行されたモデルがいくらかネストされているためです(つまり、RidgeはRademacherの複雑さによって順序付けられます)。したがって、構造的リスク最小化の原則が適用されます。それ以外の場合、CVは行き止まりのように見えます。相互検証を使用して多数の無関係なモデルを比較すると、上記のランダムモデル生成のシナリオになります。 たとえばSVMのような構造的リスク最小化フレームワークでは、エラーを制限してモデルの複雑さを軽減します。では、CVを正則化手法と組み合わせて適用すると、実際にはどのように同じ効果が得られるのでしょうか。比較されたモデルがネストされていない場合はどうすればよいですか?

1
モンテカルロの相互検証手順は有効ですか?
K分割交差検証は次のステップで構成されると思いました。 データをランダムに分割 KKK チャンク。 に合う K− 1K−1K-1 チャンク。 残りのチャンクを予測します。予測を維持します。 すべての残りについて2〜3を繰り返します。 K− 1K−1K-1 の組み合わせ KKK 1つのチャンクを省略したチャンク。 すべての予測を真の値と比較する損失統計を評価します。 今私は(見てきたxbart中でdbartsパッケージは、次の手順): データをランダムに分割 KKK チャンク。 に合う K− 1K−1K-1 チャンク。 残りのチャンクを予測します。損失統計を評価して保持します。 1〜3を繰り返す NNN 回。 平均 NNN 他の方法での損失統計またはプール。 手順4と5の違いに注意してください。 最初の手順は標準であり、主要な教科書で推奨されています。2番目の手順は新しいようです。なぜやらないのかすぐにはわかりませんが、分散の観点からは最適ではないようです。2番目の手順に賛成または反対の議論はありますか? 2番目のアプローチは、上記のパッケージに実装されており、これが間違っているのではないかと思います。

1
エラスティックネット回帰の交差検証:テストセットでの二乗誤差対相関
弾性ネット回帰を考慮glmnet損失関数の様パラメータ化n \ ll p (それぞれ44と3000)のデータセットがあり、繰り返し11分割交差検証を使用して、最適な正則化パラメーター\ alphaおよび\ lambdaを選択しています。通常、私はテストセットのパフォーマンスメトリックとして二乗誤差を使用します。たとえば、このR二乗のようなメトリック:L_ \ text {test} = 1- \ frac {\ lVert y_ \ text {test}-\ hat \ beta_0- X_ \ text {test} \ hat \ beta \ rVert ^ 2} {\ lVert y_ \ text {test}-\ hat \ beta_0 \ rVert ^ 2}、L =12 n∥∥y−β0− …

3
ハイパーパラメーターを最適化するためのグリッド検索を使用したK分割交差検証の段階的な説明
私は、k分割(および1つを残す)交差検証の利点、およびトレーニングセットを分割して3番目のホールドアウト「検証」セットを作成する利点をよく知っています。ハイパーパラメータの選択に基づいてパフォーマンスをモデル化するため、それらを最適化および調整し、実際のテストセットで最終的に評価するために最適なものを選択できます。これらの両方をさまざまなデータセットに個別に実装しました。 ただし、これらの2つのプロセスを統合する方法は正確にはわかりません。私はそれができることを確かに知っています(入れ子にされた相互検証、そうですか?)、私は人々がそれを説明するのを見ましたが、プロセスの詳細を実際に理解したほど十分に詳細ではありません。 分割とループの正確な実行が明確ではないが、このプロセス(このような)をほのめかしている興味深いグラフィックスのページがあります。ここで、4番目は明らかに私がやりたいことですが、プロセスは不明確です。 このサイトには以前の質問がありますが、それらは検証セットをテストセットから分離することの重要性を概説していますが、どれもこれを実行する正確な手順を指定していません。 それは次のようなものですか?k個のフォールドごとに、そのフォールドをテストセットとして扱い、別のフォールドを検証セットとして扱い、残りをトレーニングしますか?これは、データセット全体をk * k回繰り返す必要があるようです。そのため、各フォールドは、少なくとも1回はトレーニング、テスト、および検証として使用されます。入れ子の交差検証は、k分割のそれぞれの中でテスト/検証分割を行うことを意味するようですが、特にkが高い場合、これは効果的なパラメーター調整を可能にするのに十分なデータではありません。 (事前に指定しないように)パラメータ調整を実行しながら、k分割交差検証(最終的にすべてのデータポイントをテストケースとして扱うことができる)を可能にするループと分割の詳細な説明を提供して、誰かが私を助けてくれませんかモデルパラメータ、および代わりに別のホールドアウトセットで最高のパフォーマンスを発揮するパラメータを選択しますか?)

1
SVMのコスト(C)パラメータはどういう意味ですか?
SVMをデータに適合させようとしています。私のデータセットには3つのクラスが含まれており、(LibSVMで)10分割交差検証を実行しています。 ./svm-train -g 0.5 -c 10 -e 0.1 -v 10 training_data それによりヘルプは次のように述べています -c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1) 私にとって、より高いコスト(C)値を提供すると、より高い精度が得られます。SVMのCは実際にはどういう意味ですか?Cのより高い/より低い値(またはLibSVMのデフォルト値)を使用する理由と時期を教えてください。

2
LassoおよびRidge調整パラメーターのスコープ
リッジとラッソの線形回帰では、重要なステップはチューニングパラメーターラムダを選択することです。多くの場合、ログスケールで-6-> 4のグリッド検索を使用します。これはリッジでうまく機能しますが、ラッソでは次数を考慮する必要があります出力yの大きさの?たとえば、出力yがナノスケール(-9)の場合、ログラムダの検索範囲は-15-> -5になります。 すべての入力パラメータは正規化され、それらは-3,3の中にあります
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.