ebook

第 3 章

過学習の回避


過学習とは、モデルがあまりに学習データセットにぴったりと調整されすぎてしまっていて、うまく新しい状況に対応できなくなっている状態を言います。このチャプターでは以下について学びます:

  • 過学習を回避しにくいのはなぜか?
  • 過学習の修正方法
  • 過学習の回避方法

過学習を回避しにくいのはなぜか?

過学習が起こるのは、多くの場合において学習データが不足していることが原因となってい ます。モデルの開発担当者とデータ収集の担当者が異なる場合があり、学習と検定のフェーズにおいて必要となるデータの量が認識されていないケースがあります。

過学習しているモデルではエラーの数が非常に少ないので、一見すると素晴らしいのですが、背後の隠れたシステムをモデル化するにはあまりにも多くのパラメーターが存在していることになります。そのため、学習アルゴリズムはこれらのパラメーターをチューニングして損失関数の値を最小にしますが、結果的にモデルが学習データに対して過剰に適合されてしまい、データが背景に持っている傾向を一般化するような望ましい振る舞いをしてくれなくなります。大量の新規データが入力された場合、この学習器は新しいデータにうまく対処できず、大量のエラーが発生することになります。

理想的には、機械学習のモデルは可能な限り単純にし、有意な結果を生成するのに十分な精度にすべきです。モデルが複雑になるにつれ、過学習が起こりやすくなります。

過学習の回避方法

過学習を回避する最も良い方法は、十分な学習データを使用することです。一般的には、モデルのテストと学習には少なくとも 10,000 個のデータ点が必要と言われていますが、その数は、実行するタスクの種類によって大きく異なります (単純ベイズと k 最近傍法では、どちらもはるかに多くのサンプル点が必要です)。そのデータは、モデルが扱うことになるデータの複雑度や多様性を正確に反映していることも必要です。

データの過適合を防ぐ

過学習の修正方法

すでにモデルの利用を開始しており、データの過学習が疑われる場合、正則化 を使用して修正できることがあります。正則化では、大きなパラメーターにペナルティが課され、モデルが個々のデータ点に依存し過ぎてしまうのを防ぎます。目的関数は、誤差 \(+ λf(Ɵ)\) のような形に変更されます。\(f(Ɵ)\) は \(Ɵ\) の成分が大きくなるにつれて増大するようになっており、\(λ\) は正則化の強さを表すものとなります。

\(λ\) として選んだ値により、過学習をどれくらい防ぐかが決定されます。\(λ=0\) の場合、過学習は修正されません。逆に、\(λ\) の値が大きすぎる場合、モデルは \(Ɵ\) をできるだけ小さい値に留めようとします (学習セットに対する性能は犠牲となります)。\(λ\) の最適な値を見つけるにはある程度の時間が必要となります。

過学習の回避方法

機械学習における重要なステップはモデルのパフォーマンスをチェックすることです。アルゴリズムのパフォーマンスを評価する方法の 1 つが交差検定です。この手法では、学習段階で使用されていないデ ータを使用して予測を行うというやり方が利用されます。交差検定では、データセットを分割し、サブセ ットを使用してアルゴリズムの学習を行い、残りのデータを使用してテストを行います。交差検定ではモ デルの構築にすべてのデータを使用するわけではないため、学習時に過学習を防ぐ方法として一般的に利用されます。

交差検定は各実行で、元のデータセットを無作為に分割して、学習セットとテストセットを作成します。 その後、学習セットを使用して教師あり学習を行い、テストセットを使用してパフォーマンスを評価します。 このプロセスを数回繰り返して行います。パフォーマンスの指標としては平均交差検定誤差を利用します。

一般的な交差検定の手法:

大まかに同じサイズで、無作為に選択された k 個のサブセット (分割) にデータを分けます。1 つのサブセットを使用し、残りのサブセットによって学習されたモデルを検証します。このプロセスを k 回繰り返します。各サブセットが検定に使用されるのは 1 回限りです。

学習および検定のために指定された比率でデータを正確に 2 つのサブセットに分けます。

k 分割のアプローチに沿ってデータを分割しますが、k はデータの観測値の数に等しくなるようにします。Leave-one-out (一個抜き) 交差検定としても知られています。

ランダムなデータの分割を モンテカルロ 反復として実行し、すべての実行に対する結果を集約します。

学習セットと検定セットの両方が応答またはターゲットのクラス比率とほぼ同じになるようにデータを分割します。

データは分割しません。学習データを使って検定を行います。通常、パフォーマンスは非常に楽観的に見積もられます。データが不足している場合は避ける必要があります。

知識試しに挑戦!