暇人日記

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

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

今回はこの↓computeCost.mに取り組みます。

 

f:id:omoshiroamericanews:20191226144220p:plain

 

問題は新規出店するFood Truckの利益を

既存店の人口と利益の関係から算出しようということでした。

 

その時はVideoにあるようにこれ↓を実践すればいいということになります。

 

f:id:omoshiroamericanews:20191226144318p:plain

 

これはVideoで説明されていた通りで、

Jを最小にするθを計算したいのだと理解しました。

 

 

 

人口と利益のデータをXとYにするのは↓のようなイメージです。

f:id:omoshiroamericanews:20191226144446p:plain

 

予測値の計算は

f:id:omoshiroamericanews:20191226144749p:plain

なので、

Θ0 + θ1 X x1

Θ0 X x0 + θ1 X x1

なので

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

 

絵にしたのがこちらです↓

 

f:id:omoshiroamericanews:20191226145011p:plain

 

どうやってこのピンクの列を足していいかわからないので、とりあえず前に進んで、

問題文を読みます。

 

f:id:omoshiroamericanews:20191226145201p:plain

赤枠で囲った

X = [ones(m, 1), data(:,1)]

theta = zeros(2, 1)

の意味が分かりませんでした。

考えても考えてもわからなかったのですが、

ふとプログラミングして直に見てみようと思いました。

 

f:id:omoshiroamericanews:20191226145324p:plain

 

このやり方が正解でした。

Codeされていてわからないものは

とにかく直に見に行くというのがこの後の大きな助けになりました。

 

X = [ones(m, 1), data(:,1)]も同じように見に行きました↓

 

f:id:omoshiroamericanews:20191226145546p:plain

 

この部分も分かったし、ピンクの列の足し方も分かったので

問題文を読み進めます。

 

f:id:omoshiroamericanews:20191226145739p:plain

 

なぜ最適θを計算していないのに32.07という値が

計算されるのかわかりませんでした。

先ほど見たようにθが(0,0)で決定されているのが理由でした。

Yはすべてそろっていて、Xもあり、θもあるので、

↓が計算可能ということですね。

 

f:id:omoshiroamericanews:20191226145832p:plain

それではプログラムファイルを見に行きます。

メンテしなければならないのはcomputeCost.mとあるので見てみます。

 

f:id:omoshiroamericanews:20191226150236p:plain

 

いきなり躓きました。

青丸で囲ったfunctionの意味が分かりませんでしたが

↓の図で考えてこういうことかなと推測しました。

 

f:id:omoshiroamericanews:20191226150050p:plain

 

サブファイルで代入関数のようなものとイメージすると

私はわかりやすくなりました。

 

続いて赤枠の部分です。

Your Code Hereとあるので赤枠で囲った部分が自分で作成するパートです。

裏を返すと赤枠で囲っていない部分はこれで完成という意味ですが、

XやYがないのがなぜなんだろうと思っていました。

 

こういう風になっていました↓

f:id:omoshiroamericanews:20191226150414p:plain

 

メインファイルの方にX,Yは書いてあるので

サブファイルのcomputeCot.mにはX,Yは不要ということです。

 

ここからこういう風に理解するようになりました。

function J = computeCost(X, y, theta)

と書いてあったら

このサブファイルはX,y、thetaを放り込むと

Jが算出される関数という風に理解してわかりやすくなりました。

 

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