訓練・検証・テストデータセット

出典: フリー百科事典『ウィキペディア(Wikipedia)』
訓練データから転送)

機械学習における共通作業は、データから学習し、データについて予測することができるアルゴリズムの研究と構築である[1]。そのようなアルゴリズムは、入力データから数学的モデルを構築して、データ駆動型の予測や決定を行うことで機能する[2]。モデルを構築するために使用される入力データは通常、いくつかのデータセットに分割される。一般に、モデル構築のいくつかの段階で、訓練セット、検証セット、テストセットという3つのデータセットが使用される。

モデルはまず、モデルのパラメータ[注釈 1]を調整するための事例の集めた訓練データセット(training data set)[3]に対して適合(フィッティング)される[4]。たとえば単純ベイズ分類器のようなモデルは、教師あり学習法[注釈 2]の最適化手法と訓練データセットを使用して訓練される。実際には、訓練データセットは、入力ベクトル(またはスカラー)とこれに対応する出力ベクトル(またはスカラー)の組から構成されることが多い。一般に、正解リストは「ターゲット」または「ラベル」と呼ばれる。この場合、モデルは訓練データセットを使用して推論を行い、結果を生成し、訓練データセットの各入力ベクトルについて正解となるターゲットと比較される。比較結果と使用された学習アルゴリズムの種類に基づいて、モデルのパラメータが調整される。モデルのフィッティングには、特徴の選択と、パラメータの推定英語版の双方が含まれることがある。

そして、適合されたモデルは、検証データセット(validation data set)と呼ばれる2番目のデータセットに対する応答を予測する[3]。モデルのハイパーパラメータ英語版[5]を調整する間、検証データセットを使用して、訓練データセットに適合したモデルを先入観なく評価する[4]。検証データセットは、早期打ち切り英語版[注釈 3]による正則化にも役立つ。[6]。この単純な手順では、訓練中に検証データセットに対する誤差の変動による複数の極小値が生じる可能性があるため、実際にはより複雑なものとなる。この複雑さにより、過剰適合(オーバーフィッティング)が実際にいつ始まったかを判断するための、多くの場当たり的な規則が作られることになった[6]

最後に、テストデータセット(test data set)は、訓練データセットに対する「最終モデル」(final model)の適合を公平に評価するためのデータセットである[5]。テストデータセットのデータが一度も訓練で使用されたことがない場合(たとえば交差検証の場合)、テストデータセットはホールドアウトデータセット(holdout data set)とも呼ばれる。文献によっては、「テストセット」の代わりに「検証セット」という用語が使われることもある。たとえば、元のデータセットが2つのサブセットだけに分割されている場合、テストセットは検証セットと呼ばれる[5]

データを訓練セット、テストセット、検証セットに分割するサイズと戦略を決定することは、その問題と利用可能なデータに大きく依存する[7]

訓練データセット[編集]

訓練データセットは、たとえば分類器のパラメータ(例:重み)を調整するために、訓練プロセスで使用される事例のデータセットである[8][9]

分類タスクの場合、教師あり学習アルゴリズムは、訓練データセットを調べて、優れた予測モデル英語版を生成するための変数の最適な組み合わせを決定、または学習する[10]。その目標は、新しい未知のデータにうまく汎化(はんか)するよう訓練された(適合した)モデルを作成することである[11]。適合したモデルは、ホールドアウトデータセットからの「新しい事例」に対して評価され、未知データを分類する際のモデルの精度を推定する[5]。 過剰適合のような問題が生じるリスクを軽減するために、検証データセットとテストデータセット内の事例は、モデルの訓練に使用するべきではない[5]

経験的な関係を求めて訓練データを探索するほとんどの手法は、データに過剰適合する傾向がある。すなわち、一般的には成立しないような見かけ上の関係を訓練データから特定し、利用してしまう。

検証データセット[編集]

検証データセットは、分類器のハイパーパラメータ英語版(すなわちアーキテクチャ)を調整するために使用される事例のデータセットである。場合によって「開発セット」(development set, dev set)と呼ばれることもある[12]人工ニューラルネットワークにおけるハイパーパラメータとして、各層の隠れユニットの数がある[8][9]。この検証データセットも、(後述する)テストセットも、訓練データセットと同じ確率分布に従うべきである。

分類器のパラメータを調整する場合、過剰適合を避けるために、訓練データセットとテストデータセットに加え、検証データセットを用意する必要がある。たとえば、ある問題に最適な分類器を探す場合は、訓練データセットでさまざまな分類器の候補を訓練し、次に検証データセットでそれらの性能を比較してどれを採用するかを決定し、最後にテストデータセットで正確度感度特異度F値などの性能特性を得る。検証データセットはハイブリッドとして機能する。これはテストに使用される訓練データであるが、低レベルの訓練の一部でも最終テストの一部でもない。

モデル選択英語版で検証データセットを使用する基本的なプロセス(訓練データセット、検証データセット、およびテストデータセットの一部として)は次のとおりである[9][13]

私たちのゴールは、未知のデータで最高の性能を発揮するネットワークを見つけることであり、さまざまなネットワークを比較する最も単純なアプローチは、訓練に使用したデータから独立したデータで損失関数を評価することである。それぞれのネットワークは、訓練データセットに関して定義された適切な損失関数を最小化するように訓練される。次に、独立した検証セットを使用して損失関数を評価することにより、ネットワークの性能を比較し、検証セットに対する誤差が最も小さなネットワークを選択する。この手法はホールドアウト法(hold out method)と呼ばれる。この手順自体が検証セットへの過剰適合につながる可能性があるため、選択されたネットワークの性能は、テストセットと呼ばれる3番目の独立したデータセットで性能を測定することで確認する必要がある。

このプロセスの応用として早期打ち切り英語版がある。候補モデルは同一ネットワークの連続した反復であり、検証セットでの誤差が増大した時点で訓練を停止し、前のモデル(誤差が最小のもの)を選択する。

テストデータセット[編集]

テストデータセットとは、訓練データセットから独立しているが、訓練データセットと同じ確率分布に従うデータセットである。訓練データセットに適合したモデルがテストデータセットにもよく適合する場合、過剰適合は最小限に抑えられている(下図を参照)。しかし、テストデータセットよりも訓練データセットの方が適合度が高い場合は、通常、過剰適合を意味している。したがって、テストセットは、十分に検討された分類器の性能(すなわち汎化)を評価するためだけに使用される事例の集合である[8][9]。この手順を行うためには最終モデルを使用してテストセット内の事例の分類を予測する。モデルの精度を評価するために、その予測結果と、事例の真の分類とを比較する[10]

検証データセットとテストデータセットの両者が使用されるシナリオでは、テストデータセットは、通常、検証プロセスで選択された最終モデルを評価するために使用される。元のデータセットが2つのサブセット(訓練データセットとテストデータセット)に分割されている場合、テストデータセットはモデルを一度だけ評価する(たとえばホールドアウト法英語版[14]。ただし、このような方法を推奨しない文献もあることに注意されたい[11]。しかし、交差検証(クロスバリデーション)のような方法を使用する場合、2つの分割で十分かつ効果的である。それは、モデルの訓練とテストを繰り返した後に結果を平均化することで、バイアスとばらつきが低減するためである[5][11]

同じ統計母集団からの訓練セット(左)とテストセット(右)を青い点で示す。2つの予測モデルを訓練データに適合した。訓練セットとテストセットの両方に両方の適合モデルをプロットした。訓練セットでは、橙色で示した適合モデルの平均二乗誤差(MSE)は4であるのに対し、緑色で示された適合モデルのMSEは9である。テストセットでは、橙色で示した適合モデルのMSEは15で、緑色で示した適合モデルのMSEは13である。テストセットと訓練セットを比較すると、橙色の曲線のMSEは4倍近く増加しており、訓練データに著しく過剰適合している。緑色の曲線は訓練データへの過剰適合が少なく、MSEの増加は2倍弱である。

用語の混乱[編集]

テスト(test)とは、何かについて調べようとして試すことであり[注釈 4]、検証(validate)とは、何かが有効であることを証明することである[注釈 5]。このような観点から、テストセット検証セットという用語の最も一般的な使い方は、ここで説明したものになる。しかし、産業界でも学術界でも、内部手順ではさまざまななモデルを改良するためにテストし(開発セットとしてのテストセット)、最終的なモデルは未知のデータ(検証セット)で実際に使用する前に検証する必要があることを考慮し、用語が入れ替わることがある。機械学習の文献では、しばしば「検証セット」と「テストセット」の意味が逆転している。これは、人工知能研究に蔓延する用語の混乱の最も顕著な例である[15]。とはいえ、押さえておくべき重要な概念は、テストセットと呼ぼうが検証セットと呼ぼうが、最終的なセットは最終的な実験にのみ使用されるべきということになる。

交差検証[編集]

より安定した結果を得て、また貴重なデータをすべて訓練に使用するために、データセットを複数の訓練用データセットと検証用データセットに繰り返し分割することができる。これを交差検証(cross-validation、交差確認とも)と呼ぶ。モデルの性能を確認するために、通常、交差検証から取り出した追加のテストデータセットを使用する。

参考項目[編集]

脚注[編集]

注釈[編集]

  1. ^ たとえば、人工ニューラルネットワークにおけるニューロン間の接続の重み
  2. ^ たとえば勾配降下法確率的勾配降下法など
  3. ^ 検証データセットの誤差が増加したときに訓練を停止する手法。これは訓練データセットへの過剰適合(オーバーフィッティング)の兆候と見なせるため。
  4. ^ en:Collaborative International Dictionary of English によれば、「証明すること、実験によって真実、真正性、または品質を証明すること」
  5. ^ 同様に「確認する、有効なものにする」の意味がある

出典[編集]

  1. ^ Ron Kohavi; Foster Provost (1998). “Glossary of terms”. Machine Learning 30: 271–274. doi:10.1023/A:1007411609915. https://ai.stanford.edu/~ronnyk/glossary.html. 
  2. ^ Bishop, Christopher M. (2006). Pattern Recognition and Machine Learning. New York: Springer. p. vii. ISBN 0-387-31073-8. "Pattern recognition has its origins in engineering, whereas machine learning grew out of computer science. However, these activities can be viewed as two facets of the same field, and together they have undergone substantial development over the past ten years." 
  3. ^ a b James, Gareth (2013). An Introduction to Statistical Learning: with Applications in R. Springer. p. 176. ISBN 978-1461471370. http://www-bcf.usc.edu/~gareth/ISL/ 
  4. ^ a b Ripley, Brian (1996). Pattern Recognition and Neural Networks. Cambridge University Press. p. 354. ISBN 978-0521717700. https://archive.org/details/patternrecogniti00ripl 
  5. ^ a b c d e f Brownlee, Jason (2017年7月13日). “What is the Difference Between Test and Validation Datasets?”. 2017年10月12日閲覧。
  6. ^ a b Prechelt, Lutz; Geneviève B. Orr (2012-01-01). “Early Stopping — But When?”. In Grégoire Montavon; Klaus-Robert Müller. Neural Networks: Tricks of the Trade. Lecture Notes in Computer Science. Springer Berlin Heidelberg. pp. 53–67. doi:10.1007/978-3-642-35289-8_5. ISBN 978-3-642-35289-8. https://archive.org/details/neuralnetworkstr00mlle 
  7. ^ Machine learning - Is there a rule-of-thumb for how to divide a dataset into training and validation sets?”. Stack Overflow. 2021年8月12日閲覧。
  8. ^ a b c Ripley, B.D. (1996) Pattern Recognition and Neural Networks, Cambridge: Cambridge University Press, p. 354
  9. ^ a b c d "Subject: What are the population, sample, training set, design set, validation set, and test set?", Neural Network FAQ, part 1 of 7: Introduction (txt), comp.ai.neural-nets, Sarle, W.S., ed. (1997, last modified 2002-05-17)
  10. ^ a b Larose, D. T.; Larose, C. D. (2014). Discovering knowledge in data : an introduction to data mining. Hoboken: Wiley. doi:10.1002/9781118874059. ISBN 978-0-470-90874-7. OCLC 869460667 
  11. ^ a b c Xu, Yun; Goodacre, Royston (2018). “On Splitting Training and Validation Set: A Comparative Study of Cross-Validation, Bootstrap and Systematic Sampling for Estimating the Generalization Performance of Supervised Learning”. Journal of Analysis and Testing (Springer Science and Business Media LLC) 2 (3): 249–262. doi:10.1007/s41664-018-0068-2. ISSN 2096-241X. PMC 6373628. PMID 30842888. https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6373628/. 
  12. ^ Deep Learning” (英語). Coursera. 2021年5月18日閲覧。
  13. ^ Bishop, C.M. (1995), Neural Networks for Pattern Recognition, Oxford: Oxford University Press, p. 372
  14. ^ Kohavi, Ron (2001-03-03). A Study of Cross-Validation and Bootstrap for Accuracy Estimation and Model Selection. 14. https://www.researchgate.net/publication/2352264. 
  15. ^ Ripley, Brian D. (2009). Pattern recognition and neural networks. Cambridge Univ. Press. pp. Glossary. ISBN 9780521717700. OCLC 601063414 

Template:Differentiable computing