機械学習のモデルを評価するためのデータセットの分け方

モデル評価

機械学習を利用して予測モデルを作成する目的は、未知のデータが与えられた時に、高い精度で物事を予測できるようにすることである。そのため、モデルを作成した後に、学習データの他に、評価データを使用してモデルの評価を行う必要がある。とくに重要なのは、評価データの中に学習データを含んではいけないということである。そのために、モデルを作成するには、有限なデータセットを予め学習データと評価データに分けてから、学習には学習データだけを使用し、評価には評価データだけを使用する方法が取られている。

モデルを作成するときに、最適なモデルを決めるために(あるいは、モデルの最適なパラメーターを決めるために)、様々なモデルに対して学習と評価を繰り返す必要がある。学習データと評価データを何度も繰り返して使用することで選ばれた最適なモデルは、学習データと評価データに対して過学習を起こしてしまう(Sebastian et al, 2017)。そのため、評価データを使用して評価したモデルのパフォーマンスは信頼できなくなる。

これを防ぐために、使用できるデータを学習データ(training data)、評価データ(validation data)およびテストデータ(test data)の 3 セットに分ける。そして、学習データと評価データを使用して、最適なモデルを選択する。最適なモデルが選択されると、テストデータを使用して、最終的なパフォーマンスの評価を行う。最終的なパフォーマンス評価に使ったテストデータは、学習データと評価データとまったく異なるデータであるため、モデルを公平に評価できると考えられる。

機械学習でモデルを作成するためのデータセットの作り方

しかし、この方法でも、学習データと評価データの分け方によって、作成されたモデルのパフォーマンスが大きく異なってくる。これを防ぐために、学習データと評価データをランダムに分ける方法が考えられている。例えば、5-fold cross validation 法では、学習データと評価データを合わせてランダムに 5 つのサブセットに分けて、そのうち 4 つのサブセットで学習を行い、残りの 1 つのサブセットで評価を行う。これを 5 回繰り返して、評価指標の平均値を計算して、それをモデルのパフォーマンスとする方法がある。

機械学習でクロスバリデーションを考慮してモデルを作成するためのデータセットの作り方

References

  • Sebastian Raschka, Vahid Mirjalili. Python Machine Learning, Second Edition, Chapter 1. Packt Publishing. 2017.