#概要
機械学習を行う際に、問題となる過学習について、取り上げてみます。
#機械学習とは
- 人工知能のうちの一つで、機械に任意のデータ(画像データ、売上高、天気など)をINPUTして、分類、予測を学習します。その学習結果を使用する事で、テストデータをINPUTすると、分類結果、予測結果をOutputすることが出来ます。
- この際、機械にプログラミングで分類、予測させるのではなく、機械が学習アルゴリズムを使用して、機械自らが分類、予測アルゴリズムを学習します。
#過学習とは
- 機械学習で学習させすぎた際に弊害が発生します。
- 任意のデータをINPUTして学習させますが、学習させすぎるとその学習データに特化しすぎてしまい、幅を持たせたデータの分類結果、予測結果が間違ったものとなってしまいます。
- 例えば、「犬」のテストデータを与えて、画像解析させたケースを考えて見ます。
- このケースで、テストデータを学習させすぎると「犬」の細かい特徴まで捉えてしまいます。(過学習)
- 結果、何かのテストデータをINPUTして判定させたときに、細かい特徴の差異を判断してしまい、正しい結果を出せなくなってしまいます。
- よって、機械学習させるときに、過学習を防ぐ考慮が必要となります。
#過学習の回避方法
##回避方法① ホールドアウト法
- 学習用データを7:3くらいの割合で訓練データと評価データに分けて学習させる事によって、精度をチェックする。
##回避方法② K-分割交差検証
- 学習用データをk個に分割して交互に訓練データ、評価データに分けて学習させる事によって、精度をチェックする。
- 例えば、kを10とした場合
- 1,2,...10とデータを分割。
- 1を検証データ。1以外を訓練データとして学習
- 2を検証データ。2以外を訓練データとして学習
- ...
- 10を検証データ。10以外を訓練データとして学習
##回避方法③ 正則化
- 学習用データの内、複雑なデータ、滑らかでないモデルに罰則を与えて、重みを下げる事です。言い換えると、学習用データの内、他と余りにもかけ離れたデータは無視、または重要度を下げて学習モデルを複雑にしない、滑らかにするという事です。
- 機械学習においては、主にL1正則化、L2正則化が使用されているようです。
###L1正則化(Lasso回帰)
- 他と余りにもかけ離れたデータの重みを0にする事で、学習用データから削除するものです。
###L2正則化(Ridge回帰)
- 他と余りにもかけ離れたデータの大きさに応じて0に近づけて、学習結果を滑らかにするものです。