#Level4.機械学習講座(理論と実践)
##4-2.非線形回帰モデル
###4-2-1.データの捉え方
●複雑な非線形構造を内在する現象に対して、非線形回帰モデリングを実施する
データの構造を線形で捉える場合は限られている。
⇒非線形な構造をとらえる仕組みを考える。
###4-2-2.基底展開法
●基底関数と呼ばれる「既知の非線形関数」と「パラメータベクトル」の線形結合
●未知のパラメータには、線形回帰モデルと同じく「最小二乗法」「最尤法」によって推定する
y_{i}=f(x_{i})+ε_{i}
y_{i}=w_{0}+\sum_{j=1}^{m}w_{j}\phi_{j}+ε_{i}
・・・$x$を線形の写像の$\phi$によって、非線形にしてから$w$との線形結合を見る。
ムムム。難しいですね。
ということで、別にお勉強してみました。
困ったときのWikipedia様。
<非線形回帰(出典:Wikipediaより)>
●よく使われる基底関数
①多項式関数
②ガウス型基底関数
③スプライン関数/Bスプライン関数
⇒$x$軸の空間は横軸であるので、$x$を一度、非線形に変換する。
その後、非線形の関数とパラメータを線形結合でfitできるのではという考え方。
もう少し深く勉強が必要そうです。(笑)
###4-2-3.1次元の基底関数に基づく非線形回帰
【多項式(1~9次)】
\phi_j=x^j
【ガウス型基底】
●正規分布の形そのもので、当然、微分すると1になる。
\phi_j(x)=exp \left\{\frac{(x-μ_j)^2}{2h_j}\right\}
###4-2-4.2次元の基底関数に基づく非線形回帰
【2次元ガウス型基底関数】
●ベクトル表記で表せられる。
●$h_j$が小さくなるとバンド幅も小さくなり、大きくなるとバンド幅も大きくなる。
\phi_j(x)=exp \left\{\frac{(x-μ_j)^T(x-μ_j)}{2h_j}\right\}
###4-2-5.非線形関数の計画行列や最尤法の予測値
【説明変数】
x_i=(x_{i1},x_{i2},・・・,x_{im})\in{\mathbb{R}^m}
【非線形関数ベクトル】
●基底関数ベクトルに変換した$k$次元のベクトル
●$\phi$は事前に用意したものに置き換える。
\phi(x_i)=(\phi_1(x_i),\phi_2(x_i),・・・,\phi_k(x_i))^T\in{\mathbb{R}^k}
【非線形関数の計画行列】
●$n×k$のサイズの行列で、写像を学習データ分だけ用意する。
\Phi^{(train)}=(\phi(x_1),\phi(x_2),・・・,\phi(x_n))^T\in{\mathbb{R}^{n×k}}
【最尤法による予測値】
\hat y=\Phi(\Phi^{(train)^T}\Phi^{(train)})^{-1}\Phi^{(train)^{T}}y^{(train)}
###4-2-6.未学習(underfitting)と過学習(overfitting)
●未学習 ・・・ 学習データで十分な誤差が得られないモデル。表現力が低い。
●過学習 ・・・ 学習データにぴったりのモデル過ぎて、テストデータとの誤差が大きいモデル。
未学習の場合は、表現力の高いモデルを利用する。
過学習の場合は、学習データを増やしたり、不要な基底関数(変数)を削除して表現力を抑止する。
また、正規化法で表現力を抑止する。
※何事も「やらなすぎ」「やりすぎ」にはご注意を!!
###4-2-7.過学習(overfitting)対策
【不要な基底関数を削除】
●基底関数の数、位置やバンド幅によりモデルの複雑さが変化する。
●適切な基底関数を用意する。
【正規化法(罰則化法)】
●モデルの複雑さに伴い値が大きくなる“正則化項(罰則項)”を課す関数を最小化
⇒複数の種類があり、推定量の性質が異なる。
●正則化(平滑化)パラメータ
\mathcal{S}_γ=(y-\Phi w)^{T}(y-\Phi w)+γR(w) \gamma(>0)
⇒$γR(w)$がモデルの複雑さに伴う罰則である。
$γ$をどの程度抑えるかがポイント。
###4-2-8.正則化項(罰則項)の役割、正規化パラメータの役割
●正則化項が無い場合は、最小二乗推定量となる。
●L2ノルムを利用する場合は、Ridge推定量と呼ぶ。(縮小推定と呼ばれる)
⇒Ridge推定量を大きく取る(制約面を大きく)と、最小二乗推定量と同じになる。
小さく取る(制約面を小さく)と、パラメータが0になるものが多く、overfittingしてしまう。
●L1ノルムを利用する場合は、Lasso推定量と呼ぶ。(スパース推定と呼ばれる)
⇒L1ノルムはダイヤモンド形。
いくつかのパラメータを正確に0に推定する。不要な基底や変数を排除できる。
また、変数を推定する指標になる。
###4-2-9.モデルの選択
●汎化性性能が高い適切なモデルは交差検証法で決定する!!
⇒どうやって見つけるのか。
###4-2-10.汎化性能
●学習データ以外で、新たな入力データに対する予測性能のこと。
●汎化誤差(テスト誤差)が小さいものが良い性能のモデル。
⇒当然、学習データではなく、検証データで性能測定する。
●バイアス・バリアンス分解
⇒今度、ゆっくり勉強してみよう。。。《今後の宿題》
【訓練誤差】
MSE_{train}=\frac{1}{n_{train}}\sum^{n_{train}}_{i=1}(\hat y_i^{(train)}-y_i^{(train)})^2
【テスト誤差】
MSE_{test}=\frac{1}{n_{test}}\sum^{n_{test}}_{i=1}(\hat y_i^{(test)}-y_i^{(test)})^2
###4-2-11.学習と検証のデータ利用
【ホールドアウト法】
データを学習用とテスト用の2つに分けて「予測精度」「誤り率」
を推定するために使用する。ただし、問題がある。
・学習用を多くすると精度は上がるが、性能評価の精度が落ちる。
・テスト用を多くすると学習用が減るため、予測精度が落ちる。
・使用できるデータが大量にない場合、良い性能評価を与えない欠点となる。
⇒そのため、データ量のバランス等を考えなければならない。
(例:片方に外れ値のデータが含まれる。等)
【クロスバリデーション(交差検証:CV)】
データを学習用とテスト用に分割して、組み替えて使用する。
分割したデータでは重複していないことが大切。
制度の平均をCV値と呼び、最も小さいCV値のモデルを採用する。
※ホールドアウトとCVでモデルの検証をした際に、
ホールドアウトの精度の方が良くても、汎化性能の推定としてはCVを利用する。