Internal validationの種類について解説【まとめ】

予測モデルのvalidationには種類があります。

よく行われるのはdata splittingや10-fold cross-validationかと思います。

でもそれらには特有のlimitationがあり、使うべき手法は、実は決まっています。

この記事では、色々あるinternal validationの種類と特徴についてまとめました。

 

 

Validationの種類について解説

Validationの種類について解説

validationとは、その予測モデルのvalidityを評価することです。

2種類あり、

Internal validationとは、そのデータ内でのvalidityの評価

External validationとは、そのデータと関係あるであろう集団での評価

です。

 

Internal validation、データを7:3に分けたりして行っていませんか??

残念ながら、それは推奨されない方法です。。。

 

この記事では、Internal validationの種類と特徴について、概説していきます。

 

 

Internal validationの種類

そのデータを使ったvalidationです。

主に

・apparent(データ全部でtrainingを行い、データ全部でvalidationとする)

・data splitting

・cross-validation

・Bootstrap

の4つがあります。

 

*Apparent validationは明らかなので、飛ばします。

 

Data splitting

医学論文でよくみかけるやつです。

70%でtrainingして30%でvalidationする、みたいな。

この比は1:1〜2:1がよいと言われているようですが、、、、

これはやらないほうが良いです。

 

理由は以下の通り:

✔予測因子とアウトカムの分布がバラバラになる

そもそも医学研究はサンプル数が少ない+予測因子が多いのが問題です。

ただでさえ少ないサンプルを分けてしまっては、目を当てられない自体になりえます。

・例えば、ある大事な予測因子(心筋梗塞の既往)が、参加者の2%にしか認められなかったとします。

→全員trainingに含まれなかったら?

→その因子による予測能は「ゼロ」ということです。明らかに間違いですね。

 

✔モデル、モデルの評価とも不安定になる

どちらもn数が少ないから、不安定になります。

不安定というのは、standard errorが大きい、というふうに考えればOKです。

 

✔データの別れ方によって結果が全然異なってくるので、研究者が良い結果が出るまで繰り返す

医学研究で用いられるデータは非公開の場合が多いです。

研究者からしたら、論文が通ればOK。

そしたら必然的に、良い結果が出るまで繰り返し検証されてしまいます。

だから、data splittingで行われた予測モデルの論文は、ほぼ信頼するに値しないと言っても過言でありません。

 

ということで、data splittingは止めましょう。

 

 

Cross-validation [CV]

10-fold CVとは、

・データを10個に分ける

→その内9個でモデルを作り、残りの1つで評価をする

→これを10回繰り返す(結果的に、全ての参加者が評価の対象となる)

→10回のパフォーマンスを平均したものをestimateとする

という流れです。

 

XX-foldのXXを多くすればするほど、モデルは安定しますが、variabilityが過小評価されることになります。

どういうことか?

極端なのは、「1人を除いた全員でモデルを作り、その一人で評価する」という方法ですね。

これをJack-knifeといいます。

もしn=1000でJack-knifeのCVを行ったら?

(どのような工程であれ)作られるモデルは同じになります。999人使っているから。だから、ほぼapparent validationと同じ

なぜapparent validationがダメかを思い出したら、それだとoptimisticになりすぎるからでした。

 

こういう場合は、明らかにvariability(データのバラバラ加減)が過小評価されており、そのため外的妥当性が低いモデルとなってしまいます。

これがlimitationですが、そういう場合Bootstrap validationというオプションがあります。

 

 

Bootstrap validation

Bootstrap法とは、ランダムに元の集団から抽出することを人数分繰り返し、元の人数分の仮想集団を作り出すことでした(当然重複あり)。

300 bootstrapsといったら、それを300回繰り返し、300個のデータセットを作ること。

 

Bootstrap validationとは、

・ある一つのBootstrapで作られたデータを基にモデルを作成する

そのBootstrapデータと、オリジナルのデータの2つで効果を検証する

→Bootstrapデータの方が予測精度が良いですよね(optimism)

→Bootstrapとオリジナルでのパフォーマンスの違い=Optimismです

オリジナルでの予測能から、optimism分引きます

→これが結果

→これをBootstrapの回数分繰り返します

 

これはかなり安定したvalidationとなります。

なぜなら、元のサンプルサイズでモデルを構築している上、optimismも調整した結果としているから。

特に予測因子がサンプル数に比べてかなり多い場合に有効です。

 

✔limitationは、モデルの構築過程を全て反映させる事が難しいという点です。

例えばvariable selectionを伴う場合。

異なるbootstrapで違うモデルができてしまいます。

どのモデルが正しいのかはわかりません

→良いモデルだけを選ぶのは、明らかにoptimismを過小評価することになります。

*この問題はCVでも同様です。

 

 

欠損値に対するimputationをどのタイミングで行うか

CVやBootstrap validationを行う際、欠損値があってはいけません。

多くの場合imputationを行いますが、それをどのタイミングでやるべきか。

 

・まずimputationをして、欠損値のないデータを作ってから、bootstrapなり行う

・bootstrapされたデータ内で、その都度欠損値処理を行う

 

詳細は省きますが、そしてほとんどの方が行っていると思いますが、まずimputationする方法でよいだろうと考えられています。

 

 

結論

Internal validationの方法として、data splittingはやらない方が良い。

cross validationとbootstrappingのコンセプトを理解する。

ではまた。

-疫学・臨床研究

Copyright© Riklog , 2020 All Rights Reserved Powered by AFFINGER5.