前回は機械学習の「教師あり学習」を用いて、パンの名前を入力すると飲み物の名前を出力する「モデル」を作成する方法について説明しました。コンピュータが学習を終えた後のモデルは、未知のデータに対する予測にも使えるようになります。しかし、そのモデルは本当に適切な結果を出力してくれるのでしょうか。そこでカギを握るのが、モデルの性能です。

今回は教師あり学習で作成したモデルの性能を測る方法について説明します。

何のためにモデルの性能を測るのか?

そもそも、なぜモデルの性能を測る必要があるのでしょうか。その理由は大きく分けて2つあります。

1つは、モデルを選択するためです。

前回説明したように、機械学習では最初に人がモデルの土台を設計します。この土台のかたちはさまざまで、ある教師データを学習するのに適した土台がどれなのか、学習前の時点ではわかりません。そこで、まずは同じ教師データに対してさまざまな土台で機械学習を行い、出来上がったモデルの性能を比較して、その教師データに最も適合するモデルを選択するわけです。

もう1つは、モデルの評価のためです。

複数のモデルから最終的に1つのモデルを選んだ後に、そのモデルが未知のデータに対して、どのくらいの汎用性があるのか(性能を発揮するのか)を測ります。これにより、選んだモデルを評価するのです。

これらを踏まえ、以降では2つのモデルを作成してその性能を測り、より良いモデルを選択するケースについて考えてみましょう。

モデルを選択する

モデルの性能を測るためには、教師データから独立したデータに対する予測結果を確認する必要があります。最もシンプルな方法は、あらかじめ教師データから性能を測るためのデータを抽出しておく方法です。

まず、教師データから「確認用データ」を抽出しておきます。この確認用データは学習には使わず、モデルの性能を測るためだけに使用します。

2種類の土台で確認用データを除いた教師データをそれぞれ学習し、「モデル1」と「モデル2」を作成します。次に、各モデルに確認用データを入力し、出力された結果からその精度を計算します。

確認用データはもともと教師データの一部なので、「入力」とそれに対する「正解」を保持しています。したがって、入力を基にモデルが推測した結果と本来の正解から、精度を計算することができるのです。

その結果、モデル1のほうが精度が高ければ、「性能が良い」と判断し、最終的に利用するモデルとして選択します。

確認用データで各モデルの精度を算出し、性能の良いほうを選択する

これで、最良のモデルを選択することができました。では、このモデルはどれくらい汎用的に使えるのでしょうか。

モデルを評価する

選択したモデルの汎用性を確かめるためには、教師データに含まれておらず、モデルの選択にも使用していない、未知のデータが必要です。そのため、複数のモデルを作成・選択し、さらに選んだモデルの評価まで行う場合、あらかじめ教師データから確認用データだけでなく「テスト用データ(未知のデータ)」も抽出しておきます。

テスト用データは学習する教師データに含めてはならないだけでなく、モデルの選択にも使用してはいけません。確認用データを使って選んだモデル(ここではモデル1)に対し、テスト用データを入力して予測された結果と本来の正解から精度を算出することで、モデルを評価することができます。

選んだモデルの精度をテスト用データで算出し、モデルを評価する

教師データが少ないときはどうするの?

この記事は
Members+会員の方のみ御覧いただけます

ログイン/無料会員登録

会員サービスの詳細はこちら