ラビットチャレンジ【機械学習】~非線形回帰モデル~

概要

機械学習モデルの一つである非線形回帰モデルについて学ぶ

この章では以下のような項目を学んだ

非線形回帰モデルの基本

・パラメータ推定

・バイアスとバリアンスのトレードオフ

・モデルの汎化性能を測定方法

・ハイパーパラメータチューニング

・サマリー

非線形回帰モデルの基本

データを線形で予測できる場合は非常に少ない。下図は青色のデータに対して線形回帰を行った結果(オレンジ色線)である。

データの特徴を線形回帰では捉えることができていない

下図の赤線のように非線形な構造を捉える仕組みが必要がある

f:id:Maruring:20210715004558p:plain

非線形回帰モデルとは複雑な非線形構造を内在する現象に対して非線形回帰モデリングを実施する方法である

パラメータ推定

基底展開法

・回帰関数として、基底関数と呼ばれる既知の非線形関数とパラメータベクトルの戦型結合を使用

未知のパラメータは線形回帰モデルと同様に最小二乗法により推定


y_{i} = f(x_{i} + \epsilon_{i}

y_{i} = w_{0} + f(x_{i} + \sum_{j=0}^mw_{j} \phi_{j}(x_{i} + \epsilon_{i}

上記のxiを基底関数という

よく使用される基底関数

多項式関数

ガウス型基底関数

スプライン関数/Bスプライン関数

f:id:Maruring:20210715010656p:plain

ガウス型基底関数のイメージ

 

表現力が大きな基底関数を選べば万事OK!!ではない

適切な基底関数を選択しないと未学習(underfitting)過学習(overfitting)といった問題がでてくる

未学習

学習データに対して十分小さな誤差が得られないモデル

・(解決策)モデルの表現力を上げる

過学習

小さな誤差は得られたけど、テスト集合誤差との差が大きいモデル

・(解決策1)学習データを増やす

・(解決策2)不必要な基底関数(変数)を削除して表現力を抑止

・(解決策3)正則化法(Ridge正則化・Lasso正則化)を利用して表現力を抑止

正則化にかんしては、こちらの記事が非常に分かりやすいhttps://qiita.com/Takayoshi_Makabe/items/8f6dcb25124b9dcb1ae8

バイアスとバリアンスのトレードオフ

機械学習モデルの学習を進めていくなかで真のモデル(本当に欲しいモデルの値)との間にズレが生じてしまう。

このズレは

バイアス、バリアンス、ノイズ」の3つの要素から構成される。

ノイズ

どうやっても減らすことができない誤差(対処のしようがない)

バイアス

モデルの表現力が低いがゆえに学習が上手くいかない度合い

f:id:Maruring:20210715094411p:plain

 

バリアンス

訓練データに依存し過ぎることで新しいデータへの予測が悪化する度合い

f:id:Maruring:20210715094440p:plain

 

モデルの表現力を抑えるとバイアスが大きくなりバリアンスが小さくなる

モデルの表現力を高めるとバイアスが小さくなりバリアンスが大きくなる

バイアスとバリアンスはトレードオフ関係にあるため、バイアスとバリアンスのバランスが取るようにモデルの表現力を制御する必要がある

f:id:Maruring:20210715094655p:plain

 

モデルの汎化性能を測定方法

学習したモデルの汎化性能を測定するために大きく分けて2つの方法がある

ホールドアウト法

有限のデータを学習用と検証用の2つに分割し「予測精度」や「誤り率」を推定するために使用する

・学習の精度と性能評価の精度はトレードオフの関係にある

・手元に大量のデータがないと性能評価は良くならない

交差検証法法

データをK個に分割してそのうち1つを検証用、残りのK-1個を学習用に使用する

・比較的データが少ない時に使用する

・精度の平均をCV値と呼ぶ

f:id:Maruring:20210715102726p:plain

 

ハイパーパラメータチューニング

機械学習においては人間が調整する必要があるハイパーパラメータがある

ハイパーパラメータを調整する方法の1つとしてグリッドサーチがある

グリッドサーチ

・全てのパラメータの組み合わせで評価値を算出

・最も良い評価値のを持つチューニングパラメータをモデルのパラメータとして採用

f:id:Maruring:20210715101203p:plain


サマリー

データ構造が複雑であれば線形回帰ではなく、非線形回帰にてデータを捉える必要がある

非線形回帰になるとモデルの表現力(基底関数)によって学習が進まなかったり、過学習になったりする ⇒ 適切なモデルの表現力を制御する必要がある

学習だけではなく、そのモデルを性能評価する精度も大切であり、訓練データにだけ良い予測精度を出しても使い物にならない ⇒ 検証法も間違いなく選択する

モデルのハイパーパラメータは人間がやる必要があるが、手作業でしても終わらないため、プログラムで機械的に探索したほうがいい