これを確実にする1つの方法は、モデルを調整するために行うことをすべて「コーディング」していることを確認することです。このように、クロス検証などを使用してプロセスを繰り返し実行すると、実行間で一貫性が保たれます。これにより、すべての潜在的な変動要因が相互検証プロセスによって確実に取得されます。
もう1つの非常に重要なことは、両方のデータセットに代表的なサンプルがあることを確認することです。データセットが予測に使用する予定のデータの種類を代表していない場合、できることはあまりありません。すべてのモデリングは、「誘導」が機能するという前提に基づいています-私たちが観察していないことは、私たちが観察したことのように振る舞います。
一般的な規則として、(i)自分が何をしているのかがわかっていて、(ii)より簡単な方法を試してみて、それらが機能しないことがわかった場合、および複雑な方法が簡単な方法の問題。「単純」および「複雑」とは、フィッティングを行う人にとって「単純」または「複雑」という意味です。これが非常に重要な理由は、「スニフテスト」と呼んでいるものを結果に適用できるからです。結果は正しく見えますか?理解できない手順の結果を「匂い」させることはできません。
N> > P p N≈ P N< p
サンプルが大きい場合、特定の観測値を使用する場合と使用しない場合の違いは、モデリングが「ローカル」すぎない限り、非常に小さくなります。これは、特定のデータポイントの影響が通常のオーダーであるためです。1N私et e s t私= (1 − h私私)− 1et r a i n私et r a i n私hiii∑ihii=ppN>>phiip=21N×pX
hii=xTi(XTX)−1xi=1Ns2x(1xi)(x2¯¯¯¯¯−x¯¯¯−x¯¯¯1)(1xi)=1+x~2iN
x¯¯¯=N−1∑ixix2¯¯¯¯¯=N−1∑ix2is2x=x2¯¯¯¯¯−x¯¯¯2x~i=xi−x¯¯¯sxxi1N100x~i=5hii=261001−26100=74100100001−26100001%10000x~=5025%
N>>p2hii=xTiEET(XTX)−1EETxiEXTXΛhii=zTiΛ−1zi=∑pj=1z2jiΛjjzi=ETxixi
ketest{k}=(Ik−H{k})−1etrain{k}H{k}=X{k}(XTX)−1XT{k}X{k}N>>p
基本的に、これはすべて、BICやAICなどのトレーニングエラーとテストエラーの違いを考慮して、ペナルティ用語を使用することになります。これにより、テストセットを使用した場合と同じ結果が効果的に得られますが、潜在的に有用な情報を捨てることは強制されません。BICを使用すると、数学的には次のようなモデルの証拠を近似できます。
p(D|MiI)=p(y1y2…yN|MiI)
Mi
p(D|MiI)=p(y1|MiI)p(y2…yN|y1MiI)
=p(y1|MiI)p(y2|y1MiI)p(y3…yN|y1y2MiI)
=⋯=∏i=1Np(yi|y1…yi−1MiI)
⟹log[p(D|MiI)]=∑i=1Nlog[p(yi|y1…yi−1MiI)]
これは、クロスバリデーションの形式を示唆していますが、トレーニングセットが絶えず更新されている場合は、カルマンフィルターと同様に、テストセットから一度に1つの観測が行われます。現在のトレーニングセットを使用してテストセットから次の観測値を予測し、条件付き対数尤度を使用して観測値からの偏差を測定し、トレーニングセットを更新して新しい観測値を含めます。ただし、この手順では、利用可能なすべてのデータを完全に消化すると同時に、すべての観測値が「サンプル外」のケースとしてテストされるようにします。また、不変であり、「観測1」または「観測10」と呼ばれるものは重要ではありません。結果は同じです(一部の順列の計算は他のものより簡単かもしれません)。損失関数も「適応的」ですLi=log[p(yi|y1…yi−1MiI)]Lii
この方法で予測モデルを評価することは非常にうまくいくと思います。