アラフォー文系のサラリーマンがブームに乗っかって、
人気コースCoursera Machine Learningに
悪戦苦闘していることを 記した日記です。
今日は適切なCとsigmaを選びなさいという課題↑に取り組んでいました。
問題文の中で「0.01,0.03,0.1,0.3,1,3,10,30」の8個の中から
選んでもっとも精度の高い線をひきなさいという課題でした。
Week6まではFmincgとかを使用してCostFunctionを最小化するθを見つけて、
そのθでPredictionの式を作って、という流れだったので
何をやっていいかわからなくなりました。
問題文はXval,YvalのValidationSetについて 最適なCとSigmaを選びなさいとあります。
ただ、最適なCとSigmaはCostFunctionを最小化させることが
条件なのでCostFunctionを作成しないとダメではないかと考えました。
しかし、CostFunctionを計算するのにWeek6まで必要だったθを
どう設定すればいいのかわかりません。
しかもsvmTrainにもsvmPredictにもthetaの変数設定がありません。
どうすればいいんだろう????
svmTrainとsvmPredictの式を読み込む必要があると感じました。
どういうふうにワークしているかわからないと、応用できないと思いましたので
まずは具体的に数字をいれて動かしていきます。
問題自体はCとSigmaを8X8の64通り試せば答えは出ると思って力技に出ました 。
一つ一つグラフを作成していくことにしました。
まずC=0.03、sigma=0.3の組み合わせからスタート
うまいこと線はかけたので今度はSigmaをそのままにCを変えていきました。
線がちょっと縦に傾きました。Cをさらに大きくして0.1-->0.3にします。
Cを色々変えてきましたが線が問題文で提示されている正解より直線的すぎます。
線をグネグネさせるにはsigmaを変える必要ありと判断しました。
現在は直線的すぎてUnderfitの状態なので、
Overfitさせるためにはsigmaを小さくすることにしました。
Cは0.3のまま、sigmaを0.3から0.1にします。
曲がりました!だいぶ正解に近い気がします。
さらにsigmaを0.1-->0.03へ小さくします。
Overfitしすぎですね。。。
ということでsigmaは0.1がちょうどよさそうです。
今のところ、C=0.3、sigma=0.1が一番よさそうですが、
これが64通りの中で一番良いとどう証明すればいいんだろう?
やっぱりCostFuctionくらいは考えないとダメそうです。
というところで今日は力尽きました。
また明日から頑張ります。