暇人日記

アラフォーおっさんのコーセラの機械学習の課題を解こうと頑張っています!

Coursera Machine Learning Week3 課題 2週目⑤ -苦闘記憶- fminunc

今回はfminuncに取り組みます。

これに似たfmincgがWeek4以降もずっと出てくるので非常に大事な関数だと思います。

 

まずは問題文を読むことにします↓

 

f:id:omoshiroamericanews:20200128174715p:plain

 

Week2ではgradientのStepとJが減る様子を順にみていったが、

Week3では備え付き機能のfminuncを使う、と説明されています。

 

↓でfminuncには制約がなければBestのthetaを見つけることができる関数と

説明されています。

 

f:id:omoshiroamericanews:20200128174750p:plain

 

これはめっちゃ便利な関数だ!使いこなしたい!と思いました。

 

読み進めていきます↓

使うのに必要なinputについて書かれています。

f:id:omoshiroamericanews:20200128182213p:plain

thetaの初期値とJとgradが必要と説明されています。

 

さらに読み進めていきます。

 

f:id:omoshiroamericanews:20200128182308p:plain

Courseraがすでにfminuncの関数はプログラムの中に書いています、

と説明されて、プログラム文そのものが書かれています↑

 

f:id:omoshiroamericanews:20200128182401p:plain

Costfunction(t,X,y),initial_theta,optionsを入力すると

thetaとcostが計算される関数になります。

 

tについては後ろで説明が出てきます。

 

さっきの『thetaの初期値とJとgradが必要』の

thetaの初期値=initial_theta,

Jとgrad= Costfunction(t,X,y)

の関係だと思います。

 

Optionsは

f:id:omoshiroamericanews:20200128182433p:plain

ですね。

 

 まだまだ読み進めます。

f:id:omoshiroamericanews:20200128183054p:plain

ここはOptionsの箇所の説明です。

 

GradObjをonにすると、CostとGradientの情報が出てくると書かれているので、

最初の2つはSETだと思います。

 

次の2つもSETでMaxIterと400で400Step実験すると書いてあります。

MaxIterは Max  Iterationの省略のようです。最大試行回数ということでしょうか。



f:id:omoshiroamericanews:20200128183148p:plain

 

 

 

さらに読み進めていきます。

f:id:omoshiroamericanews:20200128183612p:plain

@t(costFunction(t,X,y))のtはcostFunction.mを呼ぶ機能で

fminuncを使うためにcostFunction.mをラップくるむことができると書いていますね。

tはthetaのtではないようです。

 

 まだまだ読み進めていきます

f:id:omoshiroamericanews:20200128183930p:plain

 

正しく設定出来たらfminuncはBestなthetaをJとともに一発回答してくれると

説明があります。

Week2ではalphaを設定して大きいか小さいかみたり、

ループを設定しなければなかったが、fminuncを使えば

そういうことは必要ないと書いてあります。

 

というわけで、fminuncでWeek2の課題を解いたのが↓でした。

www.courseradaisuki.com

 

 

逆にWeek3のこの課題をWeek2方式で解くことはできるのでしょうか?

興味がわいてきました、どこかでやってみたいと思います。

 

さらに読み進めていきます。

f:id:omoshiroamericanews:20200128184138p:plain

正しく設定出来たらJが0.203になると書いてあります。

 

プログラム全体ex2.mにはもう少し追加があって、

thetaが[25.161;n 0.206;n 0.201]になると書いてあります↓

 

f:id:omoshiroamericanews:20200128184449p:plain

 

 

何も追加でやることはないので、さっそく実行してみると↓

 

f:id:omoshiroamericanews:20200128184525p:plain

となりました!

 

今回はここまでです!また次回頑張ります!