COURSERAで学ぶ機械学習(1週目-1)

しんぺい

こんにちは!しんぺいです。

ここ数年で急激に伸びて来ている分野といえば、機械学習ですよね。
若干落ち着いて来ている感じもありますが、まだまだ需要は山ほどあります。

機械学習をこれから勉強しようと言う人は、どこから手をつければいいのか分からないことが多いと思います。
数学?プログラミング?はたまた統計学?

今回は、特にオススメしたいCOURSERAというオンライン学習教材の「Andrew Ng先生の機械学習」を紹介します!

COURSERAの「Andrew Ng先生の機械学習」とは?

そもそもCOURSERAというのをご存知でしょうか。
COURSERAは、世界的に有名な専門家や教授が丁寧に教えてくれるオンライン学習サイトなのです。

COURSERAの公式サイト

COURSERAの数多くあるコースの中で、機械学習を学ぶには一番いいとオススメされているのが、「Andrew Ng先生の機械学習」なのです。

今回は、その「Andrew Ng先生の機械学習」の第1週目-1のイントロ部分を、なるべくわかりやすく紹介します。
英語が得意、もっと詳しく知りたいという方は、ぜひ本編を見てみてください。

Andrew Ng先生の機械学習はこちら

線形回帰

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

ここから、「家の広さがxだった場合、売値はyになる」という予測をします。

既にデータが存在するということ、予測する対象(売値)が連続値であるということから、この問題は「教師あり学習の回帰」になります。

この図の「h(仮説)」を数式で表すと

$$\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先生の機械学習」よりhttps://ja.coursera.org/

この三次元構造を等高線図で表現すると、このようになります。

参考 「Andrew Ng先生の機械学習」よりhttps://ja.coursera.org/

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

しんぺい

機械学習の最初の部分をやってみました!

最初は難しいかもしれませんが、何回も反復していけば理解が深まります。
がんばりましょう!