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

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

1
トレイン/テストスプリットの代わりにAICまたはBICをどのように使用できますか?
最近、いくつかの「非公式」ソースに出くわしました。これは、状況によっては、AICまたはBICを使用して時系列モデルをトレーニングする場合、データをテストに分割してトレーニングする必要がないことを示しています。トレーニング用のデータ。(出典には、CVに関するRob Hyndmanのブログ投稿に関するディスカッション、スタンフォード大学からのこのプレゼンテーション、またはこのテキストのセクション4が含まれます)。 特に、データセットが小さすぎてトレインとテストを分割できない場合に、AICまたはBICを使用できることを示しているようです。 たとえば、Rob Hyndmanのコメント:「AIC / BICを使用する方がテストセットやCVを使用するよりもはるかに効率的であり、そうでない場合に十分なデータがない短い時系列では不可欠になります。」 しかし、これについて詳細に説明しているテキストや論文を見つけることはできません。 特に私を困惑させることの1つは、AICとBICが相互検証に漸近的になる傾向があるということです。つまり、可能であれば、それらは大きなデータセットのCVを置き換えることになります。 誰かが私にこのアイデアの正式な議論(本の章、論文、チュートリアル)を指摘できますか?

1
ネストされた相互検証後に最適なハイパーパラメーターを取得するにはどうすればよいですか?
一般的に、大きなデータセットがある場合は、(1)トレーニング、(2)検証、(3)テストに分割できます。検証を使用して相互検証(SVMのCなど)で最適なハイパーパラメーターを特定し、トレーニングセットで最適なハイパーパラメーターを使用してモデルをトレーニングし、トレーニングされたモデルをテストに適用してパフォーマンスを取得します。 データセットが小さい場合、トレーニングとテストセットを作成できません(サンプルが不十分)。したがって、モデルのパフォーマンスを評価するために、交差検証(k-fold、leave-one-outなど)を行います。 ネストされた交差検証(繰り返しまたは層別)が小さなデータセットの設定で使用されていることを確認しました。つまり、パラメーター選択を最適化しながら一般化モデルのパフォーマンスを生成します。私の質問は、ネストされた交差検証で最高のハイパーパラメーターを取得するにはどうすればよいですか(繰り返される/繰り返されない)? 可能であれば、scikit-learnでこれを行うことに興味があります。私はそれを行う方法について少し混乱しています。 私はいくつかのリソースを読みましたが、この質問に対する明確な答えはありませんでした。 モデル選択のためのネストされた相互検証 入れ子の交差検証と機能選択:機能選択を実行するタイミング?

1
cv.glmnet()プロットを解釈する方法は?
投げ縄を実行してから、1回限りの相互検証を実行しました cv<-cv.glmnet(df, df$Price, nfolds = 1500) cvをプロットすると、次のようになります。 また、私は2つの異なるラムダを得ることに気づいた:lambda.minとlambda.1se これらのラムダの違いは何ですか? 上記のプロットから一般的に何を理解できますか(これらの信頼区間とは何か、2つの点線とは何ですか)? nfolds=1010倍の検証を実行するように変更するとlambda.1se、このラムダに対して異なる係数が得られます。どのクリテリオに基づいて、自分に最適なものを選択できますか?

3
早期停止と相互検証
私は現在、過剰適合を防ぐために私の仕事で早期停止を使用しています。具体的には、早期停止から取られたものですが、いつですか?。 ここで、10分割交差検証が広く使用されていると思われる他の分類アルゴリズムと比較したいと思います。 ただし、クロス検証が適切なパラメーターの過剰適合または選択を防ぐための方法であるかどうかについては、混乱しています。(またはこれはまったく同じですか?)また、早期停止方法と相互検証を相互に、または組み合わせて使用​​できるかどうかもわかりません。 だから問題は:早期停止と相互検証の関係は何ですか?

1
ノンパラメトリック平滑化回帰による交差検証
回帰モデルを使用する場合、線形関連の仮定にデフォルトを設定することに不信感を覚えます。代わりに、必要に応じて非線形最小二乗回帰を使用してパラメトリックモデルを推定する前に、ノンパラメトリック平滑化回帰(たとえば、一般化された加法モデル、lowess / lowess、実行ラインスムーザーなど)を使用して、従属変数と説明変数間の関係の関数形式を調査しますノンパラメトリックモデルによって提案された関数のパラメーターを推定します。 そのようなアプローチのノンパラメトリック平滑化回帰フェーズで交差検証を実行することについて考える良い方法は何ですか?ランダムホールドアウトサンプルAで「折れたスティック」線形ヒンジ関数によって近似される関係が明らかである可能性があるのに対し、ホールドアウトサンプルBは放物線しきい値ヒンジ関数によって近似される関係を示唆する状況に遭遇するのではないかと思います。 非網羅的なアプローチをとって、データのランダムに選択された部分を抑制し、ノンパラメトリック回帰を実行し、結果の妥当な関数形式を解釈し、これを数回(人間が管理可能な)回数繰り返し、精神的に妥当な関数形式を数える? または、徹底的なアプローチ(LOOCVなど)を実行し、アルゴリズムを使用して「すべてのスムージング」をスムージングし、最もスムースなスムースを使用してもっともらしい機能形式を通知しますか?(ただし、リフレクションでは、十分に大きなサンプルの関数形式が単一のデータポイントによって変更される可能性が低いため、LOOCVが非常に異なる関数の関係をもたらす可能性は非常に低いと思います。) 私のアプリケーションは通常、人間が管理できる数の予測変数(たとえば、数握りから数十)を伴いますが、サンプルサイズは数百から数十万の範囲になります。私の目的は、直観的に伝達され、簡単に翻訳できるモデルを作成することです。これは、私のデータセット以外の人々が予測を行うために使用でき、結果変数を含みません。 回答の参照は大歓迎です。

2
k分割交差検証では、トレーニングサブサンプルにテストセットが含まれていますか?
K分割交差検証のサブセクションのこのWikipediaページでは、「k分割交差検証では、元のサンプルがk個の同じサイズのサブサンプルにランダムに分割されます。k個のサブサンプルのうち、単一のサブサンプルがモデルをテストし、残りのk − 1サブサンプルをトレーニングデータとして使用します。」テストデータはまったくありません。 本の中で著者が読んだのは明確に示しているのに対し 完全なデータは、トレーニングセット、テストセット、および検証セット(またはWikipedias言語のサブサンプル)の3つのセットに分かれています。 k個のサブサンプルのうち、1つのサブサンプルが検証データとして保持され、他の1つのサブサンプルがテストデータとして保持され、k-2サブサンプルがトレーニングデータとして使用されます。 どちらが本当ですか?

2
相互検証での条件付きテストエラーと予想されるテストエラーの意味
クロス検証に関する私の教科書は、ハスティらによる統計学習の要素です。(第2版)。セクション7.10.1及び7.12において、それらは、条件テストエラーとの差の話と期待されるテスト誤差Eをτ [ E (X *、Y *) [ L (Y 、F(XE(X∗、Y∗)[ L (Y、f^(X))| τ]E(バツ∗、Y∗)[L(Y、f^(バツ))|τ]E_{(X^*,Y^*)}[L(Y, \hat{f}(X))|\tau] ここで、はトレーニングデータセット、は損失関数、はトレーニングされたモデルです。は期待です。Eτ[ E(X∗、Y∗)[ L (Y、f^(X))| τ] ] 。Eτ[E(バツ∗、Y∗)[L(Y、f^(バツ))|τ]]。E_\tau [E_{(X^*,Y^*)}[L(Y, \hat{f}(X))|\tau]].ττ\tauLLLf^f^\hat{f}ττ\tauEEE 彼らは、CVは予想されるテストエラーをよく推定するだけであると説明しました。 私の質問は、条件付きテストのエラーを気にする理由はありますか? 私が考えることができる唯一の理由は、「神がテーブルにデータセットを置いたが、モデルに合うように1つだけ家に持ち帰ることができる場合、どれを選択すればよいか」という質問に答えたいということです。んんn

3
モデルの選択、特徴の選択、および公開のための分類パフォーマンスメトリックの選択
私は小さなアンバランスデータセット(70ポジティブ、30ネガティブ)を使用しており、BAC(バランス精度)とAUC(曲線の下の面積)を使用してSVMパラメーターのモデル選択をいじっています。libSVMのCパラメーターにさまざまなクラスの重みを使用して、ここでのアドバイス(不均衡データに対する決定木のトレーニング)に従って不均衡データを相殺しました。 k分割交差検証エラーは、パフォーマンス測定のタイプに非常に敏感であるようです。トレーニングと検証のセットがランダムに選択されるため、それ自体にもエラーがあります。たとえば、ランダムシードを変えてBACを2回繰り返すと、異なるエラーが発生し、その後、最適パラメーターの値も異なります。繰り返しBACスコアを平均化する場合、1000回の平均では、10000回の平均とは異なる最適パラメーター値が得られます。さらに、フォールドの数を変更すると、さまざまな最適パラメーター値が得られます。 相互検証の精度指標は、楽観的になりすぎる場合があります。通常、2倍の相互検証を超えると、100%の精度が得られます。また、サンプルサイズが小さいため、エラー率は離散化されます。多くの場合、モデルを選択すると、すべてまたはほとんどのパラメーター値で同じエラー率が得られます。 レポートを作成するとき、分類が「良い」または「許容できる」ことをどのように知ることができますか?現場では、一般的に受け入れられている適合度やp値のしきい値のようなものはないようです。データに繰り返し追加しているので、いつ停止するかを知りたいのですが、モデルが大幅に改善しない場合の良いNは何ですか。 上記の問題を考えると、AUCはパフォーマンスの指標としては不十分であると説明されていますが(たとえば、ここ、またはここを参照)、精度を簡単に比較することはできないようです。 これらの3つの問題のいずれかに取り組む方法に関するアドバイスはありますか?

2
トレーニングおよび検証データのパフォーマンスは良いが、テストデータのパフォーマンスは非常に悪い
5-6kの変数で回帰問題があります。データを重複しない3つのセット(トレーニング、検証、テスト)に分割します。私はトレーニングセットのみを使用してトレーニングを行い、モデルごとに異なる200変数のセットを選択することで、多くの異なる線形回帰モデルを生成します(このようなサブセットを約100k試します)。モデルにとしてスコアを付け。この基準を使用して、最終的にモデルを選択します。選択したモデルは、トレーニングデータと検証データで非常に類似したR ^ 2を持っていることがわかります。ただし、このデータをテストデータで試した場合、R ^ 2ははるかに低くなります。だから私は、トレーニングと検証データの両方に何らかの形で過剰適合しているようです。より堅牢なモデルを取得するにはどうすればよいですか? 分(R2訓練データ、R2検証データ)min(Rtraining data2,Rvalidation data2)\min(R^2_{\text{training data}}, R^2_{\text{validation data}})R2R2R^2R2R2R^2 トレーニングデータのサイズを増やしてみましたが、効果がありませんでした。おそらく、各サブセットのサイズを縮小することを考えています。 正則化を使用してみました。ただし、投げ縄または弾性ネットを使用して取得したモデルは、サブセット選択アプローチを実行して取得したモデルと比較して、トレーニングセットと検証セットのR ^ 2がはるかに低くなっR2R2R^2ています。したがって、これらのモデルは考慮しません。モデルAがトレーニングセットと検証セットの両方でモデルBよりも優れている場合、モデルAはモデルBよりも明らかに優れていると想定しているためです。これに同意しません。 関連して、R2R2R^2は私のモデルを選択するための悪い基準だと思いますか?

1
Leave-one-outクロス検証:一般化パフォーマンスの比較的公平な推定?
私は、リーブワンアウト相互検証が比較的「真の一般化パフォーマンスの偏りのない推定」を提供することを(たとえば、ここで)読んだことがあり、これはリーブワンアウトCVの有利な特性であることを示しています。 ただし、これが去りきりのCVの特性からどのようになるかはわかりません。他と比較すると、この推定量のバイアスが低いのはなぜですか? 更新: 私はトピックを調査し続けていますが、この推定器は1つのインスタンス以外のすべてのデータを使用するため、たとえばK分割検証よりも悲観的ではないという事実に関係していると思いますが、数学を読むのは素晴らしいでしょうこれの派生。

6
機能選択と交差検証に同じデータを使用しているか、偏っているか?
最適なフィーチャサブセットを選択した後にバイナリ分類器を構築する小さなデータセット(約250サンプル* 100フィーチャ)があります。データを次のように分割するとします。 トレーニング、検証、テスト 特徴選択については、分類子X、Y、Zのパフォーマンスを個別に最適化する特徴の選択に基づくラッパーモデルを適用します。この前処理ステップでは、分類器をトレーニングするためのトレーニングデータと、すべての候補フィーチャサブセットを評価するための検証データを使用します。 最後に、さまざまな分類子(X、Y、Z)を比較します。もちろん、データのテスト部分を使用して、公正な比較と評価を行うことができます。ただし、私の場合、テストデータは非常に小さく(約10から20サンプル)、モデルの評価に相互検証を適用します。 正と負の例の分布は非常に不均衡です(約8:2)。したがって、交差検証では、パフォーマンスの評価に失敗する可能性があります。これを克服するために、2番目の比較方法としてテスト部分(10〜20サンプル)を用意し、相互検証を検証する予定です。 まとめると、トレーニング、検証、テストにデータを分割しています。トレーニングおよび検証パーツは、機能の選択に使用されます。次に、同じデータに対する交差検証を適用してモデルを推定します。最後に、テストを使用して、データの不均衡を考慮した相互検証を検証します。 問題は、分類器X、Y、Zのパフォーマンスを最適化する機能の選択に使用したのと同じデータ(トレーニング+検証)を使用する場合、特徴選択に使用した同じデータ(トレーニング+検証)に交差検証を適用できるかどうかです。最終的なパフォーマンスを測定し、分類子を比較するには? この設定が偏りのある相互検証メジャーにつながり、正当化されない比較になるかどうかはわかりません。

3
特徴選択の相互検証を使用した徹底的な検索を実行できますか?
機能の選択と相互検証に関するいくつかの投稿を読んでいますが、正しい手順についてまだ質問があります。 10個の特徴を持つデータセットがあり、最良の特徴を選択したいとします。また、最近傍分類器を使用しているとします。交差検証を使用して徹底的な検索を実行し、最良の機能を選択するためのガイドとしてエラー率を推定できますか?次の疑似コードのようなもの for i=1:( 2^10 -1) error(i)= crossval(1-nn, selected_fetures(i)) end i=find(erro(i)==min(error(i)); selected_fetures= selected_features(i); この疑似コードで説明しようとしているのは、機能のすべての可能な組み合わせに対して相互検証を実行し、エラーが最小になる組み合わせを選択することです。 全数探索を行っているので、この手順は正しいと思います。機能の選択は、データセット全体ではなく、各パーティションの平均誤差に基づいていました。そのような特徴選択でモデルを過剰適合させていますか?

1
時系列モデルのジャックナイフ
前書き 私は、いくつかのマクロ経済指標( 1を示すYtYtY_t)の年間成長率を予測することを目指しています。タスクの1つは、外生変数(、行列)がある場合とない場合のライバル時系列モデルの予測パフォーマンスをテストすることです。ライバルモデルのリストは次のとおりです。XtXtX_tT×kT×kT\times k AR(I)MAモデル(年間成長率に「単位Roo」があるとは考えられませんが、後者は想定またはテストされています)A(L)Yt=μ+B(L)εtA(L)Yt=μ+B(L)εtA(L)Y_t =\mu+ B(L)\varepsilon_t ARMAエラーのある線形回帰モデルYt=Xtβ+ηt, A(L)ηt=B(L)εtYt=Xtβ+ηt, A(L)ηt=B(L)εtY_t = X_t\beta + \eta_t, \ \ A(L)\eta_t = B(L)\varepsilon_t 従属変数モデル(外生変数を含む自己回帰モデル) A(L)Yt=Xtβ+εtA(L)Yt=Xtβ+εtA(L)Y_t = X_t\beta + \varepsilon_t 線形回帰モデル Yt=Xtβ+εtYt=Xtβ+εtY_t = X_t\beta + \varepsilon_t ここで強い白色雑音であると仮定され、ゼロ平均定数の分散処理をIID。およびは、(バックシフト(ラグ)演算子を使用した自己回帰(次数)および移動平均(次数)の多項式です。εtεt\varepsilon_tA(L)A(L)A(L)B(L)B(L)B(L)pppqqqLLL 主で唯一の目標はパフォーマンスの予測であるため、パラメータ推定の「良い」プロパティは二次的な問題であることに注意してください。私が必要なのは、開始条件予測ツールに対して最も簡潔で堅牢なものをテストすることです。いずれかのaccuracy()オプションで決定しますが、最初に比較用の資料を入手する必要があります。 モデル1.および2.はauto.arima()、デフォルトの"CSS-ML"推定方法で推定されます。モデル3.および4.は、通常の最小二乗(lm())によって推定されます。は約クォーターです。TTT404040 これまでに試みたアプローチ ジャックナイフ残差を作成するために、「ローリング」で示される最初のアプローチが実装されました。時系列データの実行可能な大きなサブサンプルから開始して、パラメーターが推定され、関数によって先の予測が行われます(編集:これは、前半のRobの2番目の質問に対する回答と同じ提案です)。その後、1つのポイントが追加され、推定/予測のステップが繰り返されます。hhhpredict() このような実験の弱点は、パラメーターの推定に使用される時間ティック(サンプルサイズ)の数が異なることです。推定のサンプルサイズを固定したまま、開始条件に対する堅牢性をテストしたいと思います。 これを念頭において、私は、いくつかの後続の値に設定しようとした(編集:間隔の)におけるある欠損値(NA)。モデル2.-4の場合。これは、データ行列対応する後続の行を削除することも意味します。3.および4.の予測は簡単です(省略されたデータ行と同じです)。私のすべての懸念はモデル1と2に関するものです。k+p+q<t0<t1<T−h+1k+p+q<t0<t1<T−h+1k+p+q0q>0q>0q>0 編集:ARMAパーツのパラメーターが正しく推定されているので、最初のサブサンプルの推定パラメーターとデータのみを含めるようにarimaオブジェクトを合法的に再配置して、予測関数を使用できますか? modpredict.ArimaYt+1|tYt+1|tY_{t+1|t}A^(L)(Yt−Xtβ^)+Xtβ^+B^(L)ε^tA^(L)(Yt−Xtβ^)+Xtβ^+B^(L)ε^t\hat A(L)(Y_t-X_t\hat \beta)+ X_t\hat \beta+\hat B(L)\hat \varepsilon_t KalmanForecast()。これは、状態空間表現がではなく同じ推定されたで提供されるため、予想されたものです。したがって、残っている唯一の問題は、ポイント予測に影響を与えるために重要なとの違いですか?私は答えが否定的であることを望みます。θjθj\theta_jθn,jθn,j\theta_{n,j}θjθj\theta_jθn,jθn,j\theta_{n,j}

3
歪んだ/高い尖度データのサポートベクター回帰
サポートベクター回帰を使用して、かなり歪んだデータ(尖度が高い)をモデル化しています。データを直接モデル化しようとしましたが、主にデータの分布が原因であると誤った予測を取得しています。いくつかの外れ値(これは正当なデータポイントです)がSVRトレーニングに影響を及ぼしていると確信しています。また、おそらくクロスバリデーションでも影響があり、現時点では平均二乗誤差を最小限に抑えることでハイパーパラメーターを最適化しています。 SVRを適用する前にデータをスケーリング(たとえば、sqrt関数を使用して外れ値を減らす)したり、別のハイパーパラメーター最小化関数(たとえば、絶対誤差)を使用したりしましたが、より良い結果が得られるようですが、それでもあまり良くありません。誰かが同様の問題に遭遇したかどうか、そして彼らがそれにどのように取り組みましたか?どんな提案や代替方法でも大歓迎です。

2
非常に高い次元での相互検証(非常に高い次元の分類で使用される変数の数を選択するため)
私の質問は、観測値よりも多くの変数がある場合の相互検証についてです。アイデアを修正するために、非常に高い次元(観察よりも多くの機能)の分類フレームワークに制限することを提案します。 問題:各変数について、分類問題の特徴の関心度を正確に測定するよりも重要度測定値があると仮定します。特徴のサブセットを選択して分類エラーを最適に減らすという問題は、特徴の数を見つけるという問題に減少します。i=1,…,pi=1,…,pi=1,\dots,pT[i]T[i]T[i]iii 質問:この場合に相互検証を実行する最も効率的な方法は何ですか(相互検証スキーム)?私の質問は、コードの記述方法ではなく、選択された機能の数を見つけようとするときに使用する交差検証のバージョン(分類エラーを最小限に抑えるため)ではなく、交差検証を実行するときに高次元を処理する方法(したがって、上記の問題は、CVを高次元で議論するための「おもちゃの問題」のようなものです。 表記: は学習セットのサイズ、pは特徴の数(つまり、特徴空間の次元)です。非常に高い次元とは、p >> nを意味します(たとえば、および)。nnnp=10000p=10000p=10000n=100n=100n=100

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.