マシーンラーニング(ex.5) | 常常日記

マシーンラーニング(ex.5)

ブログを三ヶ月放置してたら、更新しませんかという通知が二回も来たので

更新しとこ。。。

 

正規化された線形回帰と、バイアス vs ヴァリアンス(分散)

 

今回は正規化された線形回帰を使い、さまざまなバイアス、ヴァリアンス を有するモデルを学習します。

 

前半では、正規化された線形回帰を使い、

保水池の水量から、ダムから放出される水量を算出します。

 

後半では学習アルゴリズムのデバグの診断と、バイアス対ヴァリアンスの効果を検証します。

 

 

1.1 データセットを可視化する。

 

x:保水地の水量 y:ダムから溢れる水量

 

1.2 正規化された線形回帰のコストファンクションをプログラムする。

 

1.3 グラジエントのコードを追加する。

1.4 線形回帰のフィッティング

コストファンクションとグラジエントが機能しているのを確認したら、

トレーニング用のプログラムを走らせ、

 

2.バイアス と ヴァリアンス

 

機械学習の重要な概念は、バイアスとヴァリアンスのトレードオフです。

 

バイアスの高いモデルは、データにとり、複雑さが充分ではなく、アンダーフィットになりがちです。

一方、ヴァリアンスの高いモデルは、データがオーバーフィットしがちです。

 

このバイアス、ヴァリアンス問題を検証するために、

次に、学習曲線上に学習とテストエラーをプロットしてみましょう。

 

2.1 学習曲線

学習アルゴリズムのデバグに役に立つ、学習曲線をプロットするコードを作成します。

この学習曲線を描くために必要なのは、

さまざまな学習セットサイズにおける、トレーニングエラーと

クロスヴァリデーション(相互検証)セットエラーです。

 

このグラフから解ることは、トレーニングの増加にともない

トレインエラーとクロスヴァリデーションエラーの双方が増加していることです。

これは、このモデルにおける、高バイアス問題を示しています。

線形回帰モデルがあまりに単純で、データセットによくフィットしていません。

次に多項式回帰モデルを構築し、このデータセットによくフィットするようにします。

 

3.ポリノミアルレグレッション(多項式回帰)

上記の線形モデル(t0 + t1*X)では、あまりに単純すぎたため、アンダーフィッティング(高バイアス)

となってしまいました。

そこで、多項式(t2*X^2+t3*X^3+...+tp*X^p) を上記の線形モデル(t0 + t1*X)に追加して

多項式回帰モデル(t0 + t1*+t2X2*X^2+t3*X^3+...+tp*X^p)を使用してみます。

元のトレーニングセット(size(m x 1)) がこの多項式回帰を通過すると

size(mxp)のマトリックスになってしまひます。

 

 

 

これは、まだエラーがすこし高めです。。。。。

 

このあと、λ=0、1、100、1100 と いろいろと試してみます。(上記はλ=3)

そして、このレギュラライゼーションがよりよいモデルを構築するのかを試してみます。

では、いったいどのλが最適なのでしょうか?

これを自動化する方法があります。

さまざまなλとクロスヴァリデーションエラー、トレインエラーの相関をプロットするのです。


この図からわかることは、λ=3が最適なレギュララーぜーション値となることです。

(続く。。。)

んーっ、次回更新、何時になりますかね。。。

あと少なくとも三回は更新しておきたいのですが。。。