ヘルスケア業界を担当しているリードデータサイエンティストの鎌田です。
テストデータ(ホールドアウトデータ)に何サンプル用意するべきかという質問は答えがない難しい問いです。
直近ではPMDAの”AIを活用したプログラム医療機器に関する専門部会“https://www.pmda.go.jp/rs-std-jp/subcommittees/0024.html
でも議題があがるほど、非常に重要なトピックです。
残念ながら、1つの明確な答えはありません。それは、必要なサンプル数が問題の性質やデータの分布、業界の要求など、さまざまな要因に依存するからです。
例えば、10000件の同じような値を持つデータと、母集団を表すような1000件のデータのどちらが価値がありそうでしょうか?
一般化可能性の担保という点では、後者になりますよね。
なので、一概にX件あったら大丈夫という話にはならないのです。
とはいえ、それでは何も始まらないので、いくつか評価に関するポイントをここで共有したいと思います。
(その他観点や参考文献があれば、このスレッドに返信する形で共有いただけると幸いです)
ここでは、二値分類問題を考えます。
まずは一般的なPartitionの割合の話
データセットは学習用データ(トレーニングデータ)、検証用データ(バリデーションデータ)、およびテスト用データ(ホールドアウトデータ)に分割する必要がありますが、一般的にはデータセットの60-80%がトレーニングデータ、10-20%がバリデーションデータ、10-20%がテストデータに割り当てられます。DataRobotではデフォルトで20%がテストデータ(ホールドデータ)になっています。その他、Partitionの方法については、DRUやDataRobotのblogを見ていただきながら、確実に正しい手法を選択してください。
ホールドアウトデータのデータ量
20%設けると良いかというと、そう簡単な話ではないです。データ量が少ないと、結果が安定しないため、絶対量が重要になります。
ヘルスケアのデータは不均衡データ(例えば、疾患のデータが少ない)であることが多いため、データ量を考える際、全体の量ではなく、少数クラスの量を考えることが重要です。
ホールドアウトの少量クラスの数についても明確な答えはありませんが、下記のようなreview論文では、100件が必要と参考値を出しています。
Sample size considerations for the external validation of a multivariable prognostic model, G. Altman et al., 2015
とはいえ、100件集まらないというケースもあるかと思います。
その場合は、同じ領域や似たような領域の論文やacceptされた事例を探しながら、実績のあるサンプル数があるか、確認をしてください。
(とはいえ、有意差5%の”5”のように、みんなが採用しているという理由だけで採用されるものの、本来は望ましくないケースもあるという業界的問題はありますので、上記方法も最適な方法ではないことにご注意ください)
手元のデータでの試験
統計的検定と違い、データ取得をする前に、必要なデータ数を決定することは難しく、上記のような論文や過去の文献を探していく必要がありますが、
手元にある程度データがある場合は、
- ホールドアウトデータの各特徴量の分布(母集団に似た集団になっているか)
- ホールドアウトデータのデータサイズによって、精度がsensitiveに変化するか
- ホールドアウトデータの取り方によって、精度がsensitiveに変化するか
を確認することが、安定した結果を得ることができそうかどうかの一つの試金石になります。
PMDAの”AIを活用したプログラム医療機器に関する専門部会“など、このあたりのコンセンサス作成に向けた議論に引き続き注目しながら、Updateがあれば、また共有します
※ ちなみにChatGPT-4に聞いても、「一概にきまりません」という回答が返ってきます…