Coursera 機械学習(1週目-1)


機械学習に関しては全くの初心者です。
有名なCourseraのAndrew Ng先生の機械学習の内容を、ほぼ無知の状態から、どこまで理解できているかを確認するためにも、学習したことを書き出していこうと思います。
Andrew Ng先生の動画はこちらです。
Coursera 機械学習

線形回帰

データとして「家の広さ(x)」と「販売価格(y)」がわかっており、このデータを図で表現してみます。

ここから、「家の広さがxだった場合、売値はyになる」という予測をします。
既にデータが存在するということ、予測する対象(売値)が連続値であることから、この問題は「教師あり学習」の回帰になります。

この「h(hypothesis)」を数式で表すと
$$\large h_θ(x)=θ_0+θ_1x$$
となり、広さと売値に線形(直線)の関係があると仮説を立てます。今回は変数x(広さ)一つのみでy(売値)を予測するため、単回帰とも言います。

\(θ\)を決める

ところで、\(θ\)は一体どうやって決めればいいのでしょうか。
上記の画像で示している直線は僕が「なんとなく」で引いたものであり、最適であるかどうかはわかりません。
画像に3つの丸をつけてみました。

直線と丸との距離を考えてみます。緑の丸で囲まれた×は直線の上にほぼピッタリ乗っているので、直線との距離は0に等しい(直線上にいる)と言えます。ピンクの丸は少し離れていて、オレンジの丸はかなり離れている、と言えます。
この「距離」を全ての×において計測し、その合計値が最も小さくなる直線が最適な直線と定義しよう、というのが最小二乗法です。
個々のデータ、(x, y)で見てみると
$$\large h(x)-y$$
が最小になればいいわけですから、データセット全体(m)は
$$\large J(θ_0,θ_1)=\frac{1}{2m}\sum_{i=1}^m (h_θ(x_i)-y_i)^2$$
となるわけです。2mで割っているのは、後で微分した時に都合がいいからです。

最小二乗法について理解を深める

もう少し深く読み解いてみます。
分かりやすくするために、\(θ_0=0\) として考えてみます。\(θ_0=0\)ということは原点を通るため、\(θ_1\)についてのみ考えればいいわけです。
ここで新しくグラフを作成し、(1, 1)、(2, 2)、(3, 3)の3点をプロットし、この3点に対して最適な線形を導き出す、ということを考えてみます。

さて、試しに\(θ_1=0.5\)で考えてみます。\(θ_0=0\)ですから、今回の式は\(h_θ(x)=0.5x\)になります。グラフに書き出して、実際の値との距離(差)を見てみましょう。

それぞれの距離は赤字で示した0.5、1、1.5なので、最小二乗法の公式の結果0.58になります。これを二次関数にプロットしてみます。横軸が\(θ_1\)、縦軸が最小二乗法の結果です。

\(θ_1=1\)、\(θ_1=0\)の場合も同様に考え、二次関数にプロットすると…

こんな感じでしょうか。これをひたすらやっていけば…

このようなグラフになります。再び距離(差)について考えてみますと、もっとも差が小さくなるのは、\(θ_1=1\)の時ですね。つまり、二次関数の最も値が小さくなる点を導き出せばいいわけです。

等高線図

今までは\(θ_0=0\)として考えてきましたが、通常は\(θ_0\)についても考えなければなりません。
パラメータが\(θ_0\)と\(θ_1\)の2つになった場合、グラフはどうなるのでしょうか。パラメータが1つだった場合は先ほどの二次関数になりますが、2つになるとボウルのような三次元構造になります。

Andrew Ngの機械学習より
これを等高線図で表現すると、このようになります。

Andrew Ngの機械学習より
この場合も同様で、最小値、つまり「ボウル底」を求めればいいわけです。等高線図の赤丸ですね。

コメントを残す