前回に引き続きdataset3Params.m↓に取り組みます。
もう5日目です。。。本当難しい。。。
前回は64通りのシュミレーションの取り出し方に四苦八苦していました。
ポイント
①Week6のやり方の取り出したい値の後ろに(i)をつけると
なぜか今回は1X8のベクトルになってしまうこと。
②(i)をつけずに行うと羅列が取り出せないこと
今回は人のをパクってでも正解にたどり着きたいと思います。
まずはSigmaを0.01に固定して、Cの8通りをシュミレーションするという
簡略化したバージョンでコードを書いていきます。
みたいC/sigma/errorの関係をresultで表記しています。
狙い通りC/sigma/errorの並びになりました。
これをぱっとみてわかるように、8X3のベクトルで一覧表記したいです。
ここからは人のを参考にしながら考えます。
ネットで参考になったのがこちらでした。
計算結果は下記のように表記されます。
イメージと一番近いのでこちらを参考にすすめます。
まず大きく違うのがresultの中になります。
私はresult = [C sigma error]としていましたが、
ネットのはresults = [results;C,sigma,error]となっています。
「、」が入っていることと、1X4にも見えそうな「results;」が
入っているのが違います。
このように変えてみます。
結果がこうです。
イメージ通りのものが出てきましたが、
0.01 0.01 の組み合わせが2回で出てきています。
ネットのはresults=という式がありますので、
こちらを追加してみます。
結果です。
見事に0.01 0.01の組み合わせが一つになりました!
ここまでのまとめです。
①iなしでも取り出せる
②;が有効
③results=が必要
今まではCを8通り、sigmaを1通りで固定していたので、
sigmaを8通りにしていよいよ64通りの検証に入ります。
iとjを設けます。
結果です。
できました!
狙い通り64通りできました!
あとはこれで一番小さいErrorの組み合わせを見つけるだけです!
しかし目視しただけでも0がいくつあるような気がします。。。
30と0.03の組合せとか10と0.03の組合せとか。
今回は64通りなので根性で組合せ見つけれそうですが、
1000通りなど大きなシュミレーションをしたときのための、
取り出し方を勉強しておきたいと思います。
さっき参考にしたネットにあるのがこの方法です。
右辺は64X3列のresults一番右、つまりerror値の最小値で1X1の
ベクトルで「0」になります。
左辺は構成要素からErrorの最小値とその場所を特定していると思われますが、
2X1のベクトルに見えて右辺の1X1と合わないので私には謎です。
しかし兎にも角にも入れると、
minError=0
minIndex=50
という値を返してくれます。
あとは50番目のCとsigmaを指定すればいいので、
としてCの行である1行目から50列目を、
sigmaの行である1行目から50列目を、
取り出します。
<プチ気づき「;」の機能について>
***********************************************
上と下の差は;があるかないかだけですが、
計算させると;がついている方は結果が表示されず、;がついていない方は結果が表示されます。
**********************************************
では答えで提示されたC=10とsigma=0.03で
Submitしてみます。
不正解でした。
ただ、ここはひとつずっと懸念がありました。
それは苦闘日記②で触れていた
modelの中はX,yの組合せがXvalとyvalの組合せなのかです。
問題文をよく読むと
(出典;『Coursera Machine Learning』 By Mr. Andrew Ng)
Training SetがX,yとしっかり書いてあるので、
modelの中をX,yのTraing setでパラメーターを決定して、
predとmeanはXval,yvalで行うということですね。
入れ替えて行うと正解となりました。
やっと64通りのシュミレーションを取り出すことに
正解いたしました。
次回は次の課題に取り組みます。