前回は機械学習の「教師あり学習」を用いて、パンの名前を入力すると飲み物の名前を出力する「モデル」を作成する方法について説明しました。コンピュータが学習を終えた後のモデルは、未知のデータに対する予測にも使えるようになります。しかし、そのモデルは本当に適切な結果を出力してくれるのでしょうか。そこでカギを握るのが、モデルの性能です。
今回は教師あり学習で作成したモデルの性能を測る方法について説明します。
何のためにモデルの性能を測るのか?
そもそも、なぜモデルの性能を測る必要があるのでしょうか。その理由は大きく分けて2つあります。
1つは、モデルを選択するためです。
前回説明したように、機械学習では最初に人がモデルの土台を設計します。この土台のかたちはさまざまで、ある教師データを学習するのに適した土台がどれなのか、学習前の時点ではわかりません。そこで、まずは同じ教師データに対してさまざまな土台で機械学習を行い、出来上がったモデルの性能を比較して、その教師データに最も適合するモデルを選択するわけです。
もう1つは、モデルの評価のためです。
複数のモデルから最終的に1つのモデルを選んだ後に、そのモデルが未知のデータに対して、どのくらいの汎用性があるのか(性能を発揮するのか)を測ります。これにより、選んだモデルを評価するのです。
これらを踏まえ、以降では2つのモデルを作成してその性能を測り、より良いモデルを選択するケースについて考えてみましょう。
モデルを選択する
モデルの性能を測るためには、教師データから独立したデータに対する予測結果を確認する必要があります。最もシンプルな方法は、あらかじめ教師データから性能を測るためのデータを抽出しておく方法です。
まず、教師データから「確認用データ」を抽出しておきます。この確認用データは学習には使わず、モデルの性能を測るためだけに使用します。
2種類の土台で確認用データを除いた教師データをそれぞれ学習し、「モデル1」と「モデル2」を作成します。次に、各モデルに確認用データを入力し、出力された結果からその精度を計算します。
確認用データはもともと教師データの一部なので、「入力」とそれに対する「正解」を保持しています。したがって、入力を基にモデルが推測した結果と本来の正解から、精度を計算することができるのです。
その結果、モデル1のほうが精度が高ければ、「性能が良い」と判断し、最終的に利用するモデルとして選択します。
これで、最良のモデルを選択することができました。では、このモデルはどれくらい汎用的に使えるのでしょうか。
モデルを評価する
選択したモデルの汎用性を確かめるためには、教師データに含まれておらず、モデルの選択にも使用していない、未知のデータが必要です。そのため、複数のモデルを作成・選択し、さらに選んだモデルの評価まで行う場合、あらかじめ教師データから確認用データだけでなく「テスト用データ(未知のデータ)」も抽出しておきます。
テスト用データは学習する教師データに含めてはならないだけでなく、モデルの選択にも使用してはいけません。確認用データを使って選んだモデル(ここではモデル1)に対し、テスト用データを入力して予測された結果と本来の正解から精度を算出することで、モデルを評価することができます。
教師データが少ないときはどうするの?
ここまでで、あらかじめ教師データから性能を測るためのデータを抽出しておき、モデルを選択・評価する方法についてはおわかりいただけたかと思います。
しかし、上述した方法は、教師データの数が十分に無いときには使えません。性能を測るためのデータは教師データに含めることができないので、抽出すると学習に使う教師データが不足する可能性があるからです。
教師データの数が十分でない場合に用いられる方法の1つに、「交差検定」と呼ばれる手法があります。
交差検定を行う場合も、学習を始める前に教師データを分割します。今回は、便宜上4分割で説明しますが、実際に多いのは5分割や10分割するケースです。ここでは、4分割したデータの塊をそれぞれ、「データA」「データB」「データC」「データD」と呼びます。
交差検定では、分割したデータのうち、1つをテスト用データと見なし、残りを教師データと見なして学習します。次に、出来上がったモデルの性能を、あらかじめとっておいたテスト用データで測ります。そして、この作業を全ての組み合わせで繰り返すのです。
もう少し具体的に説明しましょう。まず最初にデータA、B、Cを教師データとし、機械学習を行います。このとき、データDを教師データには含めないことが重要です。データA、B、Cから構築されたモデルを用いて、学習せずに取っておいたデータDに対して推測を行います。これにより、データA、B、Cを教師データとし、データDをテスト用データとした際の精度がわかります。
次に、データA、B、Dを教師データとして機械学習を行います。今度はデータCを教師データに含めません。データA、B、Dから構築されたモデルを用いて、データCに対して推測を行い、精度を計算します。
こうして全ての組み合わせで学習を終えると、4つの精度が算出されているはずです。その精度の平均値をとり、これを教師データ全体(データA+データB+データC+データD)で学習したモデルの精度と見なし、評価できます。交差検定では、最終的に全ての教師データを用いたモデルを作成するため、擬似的にそのモデルの精度を算出できるのです。
* * *
以上、今回は教師あり学習で作成したモデルの性能を測る方法についてお話しました。次回は、機械学習の「教師なし学習」について説明します。
著者紹介
![]() |
国立研究開発法人 情報通信研究機構
ユニバーサルコミュニケーション研究所
データ駆動知能システム研究センター 専門研究員
大西可奈子
2012年お茶の水女子大学大学院博士後期課程修了。
博士(理学)。同年、大手通信会社に入社。2016年より現職。
一貫して自然言語処理、特に対話に関する研究開発に従事。
人工知能(主に対話技術)に関する講演や記事執筆も行う。
twitter:@WHotChocolate