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

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

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

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

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

データを訓練セット、テストセット、検証セットに分割するサイズと戦略を決定することは、その問題と利用可能なデータに大きく依存する。
## 訓練データセット
訓練データセットは、たとえば分類器のパラメータ（例：重み）を調整するために、訓練プロセスで使用される事例のデータセットである。

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

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

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

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

で検証データセットを使用する基本的なプロセス（訓練データセット、検証データセット、およびテストデータセットの一部として）は次のとおりである。

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

## テストデータセット
テストデータセットとは、訓練データセットから独立しているが、訓練データセットと同じ確率分布に従うデータセットである。訓練データセットに適合したモデルがテストデータセットにもよく適合する場合、過剰適合は最小限に抑えられている（下図を参照）。しかし、テストデータセットよりも訓練データセットの方が適合度が高い場合は、通常、過剰適合を意味している。したがって、テストセットは、十分に検討された分類器の性能（すなわち汎化）を評価するためだけに使用される事例の集合である。この手順を行うためには最終モデルを使用してテストセット内の事例の分類を予測する。モデルの精度を評価するために、その予測結果と、事例の真の分類とを比較する。
検証データセットとテストデータセットの両者が使用されるシナリオでは、テストデータセットは、通常、検証プロセスで選択された最終モデルを評価するために使用される。元のデータセットが2つのサブセット（訓練データセットとテストデータセット）に分割されている場合、テストデータセットはモデルを一度だけ評価する（たとえば）。ただし、このような方法を推奨しない文献もあることに注意されたい。しかし、交差検証（クロスバリデーション）のような方法を使用する場合、2つの分割で十分かつ効果的である。それは、モデルの訓練とテストを繰り返した後に結果を平均化することで、バイアスとばらつきが低減するためである。

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

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

## 参考項目
* 分類 (統計学) - ある観測が1組のカテゴリのどれに属するかを識別する統計学の問題
*  - 機械学習の研究で使用され、査読付学術雑誌に引用されているデータセット
* 階層的分類 - 物事を階層に従ってグループ分けする分類法

## 脚注

### 注釈

### 出典