暇人日記

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

Coursera Machine Learning Week2 課題 2周目③ -苦闘記憶- computecost

今回も引き続きComputeCost.mに取り組みます。

f:id:omoshiroamericanews:20191226144220p:plain

 各ファイルの関係は前回の日記で把握したので、

課題を考えていきたいと思います。

 

f:id:omoshiroamericanews:20191226144318p:plain

 

課題はこのJが最小となるθを見つけなさいということです。

ComputeCost.mではJの計算式を出すことが求められています。

 

Jは各xごとの予測値と実績値yの差を全xについて

足し合わせたところがカギです。

 

この問題でいえば、X(人口)97X1、y(利益)も97X1のベクトルなので

絵にするとこういうことになります↓

 

f:id:omoshiroamericanews:20191228101917p:plain

 

97個すべてを1つずつ引き算するとloop設定など必要かと思いましたが、

この97個の計算を一気にできるのがベクトルのいいところだと思いました。

 

まずはX(人口)を基にした予測値の出し方を考えます。

Videoには

f:id:omoshiroamericanews:20191226144749p:plain

とありました。

 

前回の日記に書いたように

 

Θ0 + θ1 X x1

Θ0 X x0 + θ1 X x1

なので

Xに1行足す必要があります。そしてその1行の要素は全て1です。

絵にするとこうです↓

f:id:omoshiroamericanews:20191226145011p:plain

 

そうするとXは97X2のベクトルになります。

 

θも前回の日記で触れたようにメインファイルex8.mの

メンテ不要部分のところで↓のように設定されています。

f:id:omoshiroamericanews:20191226145324p:plain

 Xは97X2でθは2X1なので、かけあわせると97X1になります。

そうするとYも同じ形の97X1なので、引き算できることになります。

 

X*Theta -yが97X1同士の引き算です。

 

しかしこのままだと、引き算の結果も97X1で

↓のような縦長のベクトルになっています。

 

f:id:omoshiroamericanews:20191228104813p:plain

 

欲しい計算結果はこの縦長のベクトルの合計値です。

 

少し実験をしてみます。

こういうベクトルを作りました↓

f:id:omoshiroamericanews:20191228104926p:plain

縦の合計が欲しいので試しにSum(B)としてみます。

f:id:omoshiroamericanews:20191228105014p:plain

 うまいこと縦だけ合計されました。

 

ということはX*Theta-yで縦長になっているものも

Sum(X*Theta-y)とすればいいとわかりました。

 

ところでThetaは0,0だったのでX*Thetaは全部0なんじゃないかなと

ふと思いました。そうするとX*Theta-yとyは符号が違うだけ!?

と思ったので見てみました。

 

f:id:omoshiroamericanews:20191228105302p:plain

 やっぱりそうでした。

 

最後は1/(2*m)ですね。

mは個数なので97になります。

Sampleが変わってもmがいつも正しい個数をカウントするためには

どうすればいいんだろう、と思ってました。

 

しかし、これはcomputeCost.mの中に答えが書いてあって

 m=length(y)

となっていました。

yは97X1なのでこれで97になるようです。

 

Xは97X2ですが、

length(X)は97になるか、2になるか興味があったので

実験してみました。

 

f:id:omoshiroamericanews:20191228105708p:plain

 

97になりました。

lengthは縦の長さをとってくるのでしょうか?

それとも長い方をとってくるのでしょうか?

 

気になったので調べてみました。

調べるときは「help 〇〇〇」と出てくると表示されます。

f:id:omoshiroamericanews:20191228110126p:plain

 

 

長い方をとってくるということですね。

 

ちょっと実験してみました↓

f:id:omoshiroamericanews:20191228110249p:plain

なるほど、長い方をとってきていますね。

 

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