勉強の記録

機械学習、情報処理について勉強した事柄など

バリデーションセットのサンプル数

Train / Dev / Test sets - Practical aspects of Deep Learning | Coursera

Stack Overflowの海を彷徨っていて、Andrew先生の動画に辿り着いた。やっぱりこのCourseraのコース1回しっかりやるべきか。

訓練用セットと検証用セット、テストセットをどう分割するかの話。

Train/dev/test setの割合

・70/30とか60/20/20とか言われるものは、n=100, 1000, 10000のオーダーのときの話。

・n=10,000,000にもなる"Big Data Era"では、20%もいらない。多くの場合はn_dev=10000, n_test=10000くらいで良い。これは1%かもしれないし、0.25%かもしれないし、0.1%かもしれない。

・モデルのunbiased performanceを知る必要がないときは、test setがなくても良い。このときのdev setはしばし"test set"と呼ばれることがあるので注意(この"test set"へに対するscoreは過学習しているscoreである)。

感想

1万、というのが一つの目安になりそう。 当然このようなbig dataでは、modelのperformanceを偏りなく推定するためのcross validationは必要ない。

一般に、cross validationしてhyper parameterを求めて、train set全体でまた学習して、というstrategyが基本とされることが多い気がする&機械学習の勉強をはじめたばかりにクロスバリデーションという単語を聞くとそれが常に必要という前提から入ってしまいがち、な気がしますが、昨今の巨大なデータ・セットではそうとも限らないということ。もちろん動画にあるように数百~数万のデータであれば、そういった方法が必要。

もちろん大きなデータセットに対してもcross validationして複数のモデルを作って、そのモデルを組み合わせるensembleというテクニックもあるが、それはまた別の話。

参考

機械学習、ディープラーニングでの学習データとテストデータの分割手法について - AI人工知能テクノロジー

qiita.com