今回はこの↓computeCost.mに取り組みます。
問題は新規出店するFood Truckの利益を
既存店の人口と利益の関係から算出しようということでした。
その時はVideoにあるようにこれ↓を実践すればいいということになります。
これはVideoで説明されていた通りで、
Jを最小にするθを計算したいのだと理解しました。
人口と利益のデータをXとYにするのは↓のようなイメージです。
予測値の計算は
なので、
Θ0 + θ1 X x1
は
Θ0 X x0 + θ1 X x1
なので
Xに1行足す必要があります。そしてその1行の要素は全て1です。
絵にしたのがこちらです↓
どうやってこのピンクの列を足していいかわからないので、とりあえず前に進んで、
問題文を読みます。
赤枠で囲った
X = [ones(m, 1), data(:,1)]
と
theta = zeros(2, 1)
の意味が分かりませんでした。
考えても考えてもわからなかったのですが、
ふとプログラミングして直に見てみようと思いました。
このやり方が正解でした。
Codeされていてわからないものは
とにかく直に見に行くというのがこの後の大きな助けになりました。
X = [ones(m, 1), data(:,1)]も同じように見に行きました↓
この部分も分かったし、ピンクの列の足し方も分かったので
問題文を読み進めます。
なぜ最適θを計算していないのに32.07という値が
計算されるのかわかりませんでした。
ふとわかったのは先ほど見たようにθが(0,0)で決定されているからだと気付きました。
Yはすべてそろっていて、Xもあり、θもあるので、
↓が計算可能ということですね。
それではプログラムファイルを見に行きます。
メンテしなければならないのはcomputeCost.mとあるので見てみます。
いきなり躓きました。
青丸で囲ったfunctionの意味が分かりませんでしたが
↓の図で考えてこういうことかなと推測しました。
サブファイルで代入関数のようなものとイメージすると
私はわかりやすくなりました。
続いて赤枠の部分です。
Your Code Hereとあるので赤枠で囲った部分が自分で作成するパートです。
裏を返すと赤枠で囲っていない部分はこれで完成という意味ですが、
XやYがないのがなぜなんだろうと思っていました。
こういう風になっていました↓
メインファイルの方にX,Yは書いてあるので
サブファイルのcomputeCot.mにはX,Yは不要ということです。
ここからこういう風に理解するようになりました。
function J = computeCost(X, y, theta)
と書いてあったら
このサブファイルはX,y、thetaを放り込むと
Jが算出される関数という風に理解してわかりやすくなりました。
今回はここまでです!また次回頑張ります!