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

Bicepper

こんにちは!Bicepperです。

前回のCOURSERAの「Andrew Ng先生の機械学習」4回目からの続きです。

4回目はこちらからどうぞ!

1回目はこちら

分類

今までは回帰についてやってきましたが、今回から分類についてです。

分類の例として、

  • スパムかスパムではない
  • 不正か不正ではない
  • 悪性腫瘍か良性腫瘍か

などが挙げられます。

これらは「どちらに分けることができるか」であり、2値分類とも言えます(多値分類については後でやります)。

言い換えれば「0か1か」であり、以下の式で表すことができます。

$$\large y\in\{0,1\}$$

先ほど例に挙げた、悪性腫瘍か良性腫瘍かの分類を見てみましょう。

腫瘍の大きさで悪性か良性かを判定します。赤いバツ印がそれぞれの腫瘍ですね。

これまで得た知識でこの問題を解こうとすれば、知っているアルゴリズムを使うしかありません。
例えば線形回帰を当てはめるとこのようになりますね。

さて、このままではまだ分類ができませんので、閾値を決める必要があります。
仮に閾値を0.5と決めた場合、このように考えられます。

$$もし~\large h_θ(x)\geq0.5~\small ならば \large y=1$$
$$もし~\large h_θ(x)\leq0.5~\small ならば \large y=0$$

これをグラフに追記してみましょう。

0.5と直線がぶつかる点を軸として緑色の線を引きました。

この線よりに腫瘍があれば良性、にあれば悪性ということになります。かなり上手く分類出来ているように見えますね。

ここで、もう一つ腫瘍のデータを追加してみましょう。

かなり右端上の方に腫瘍が追加されました。

この状態で、もう一度考えてみます。
まず、二次関数の直線が今よりも右に動くのは明らかですね。このような感じでしょうか。

直線が動きましたから、閾値との接点も見直す必要がありそうです。

そうすると…

おや?

先ほどまで悪性と判定されていた腫瘍が良性に変わりました。
これでは正しく判定されていないことになります。

この例から分かる通り、分類問題では線形回帰はうまく働かないことが多いため、使用しません。

もう一つ、分類問題に線形回帰を使った場合にどんなことが起こるか見てみましょう。
これまでのことから、分類の場合は\(y\)は0か1のどちらかであると考えます。しかし、線形回帰の場合、仮説の結果が1より大きくなったり、あるいは0より小さくなる可能性は十分にあるのです。

そこで、分類に適応できるアルゴリズムの一種であるロジスティック回帰を使用します。
ロジスティック回帰は、名称に「回帰」と入っているため非常にややこしいですが、分類問題に属します。

仮説の表現

\(θ\)の話に移る前に、仮説の表現について見ていきましょう。

前回の話で、ロジスティック回帰の結果は0と1の間に収まるものが欲しいということでした。

$$\large 0\leq h_θ(x)\leq 1$$

今まで学んできた線形回帰の式は以下のような形でしたね。

$$\large h_θ(x)=θ^{T}x$$

ロジスティック回帰は、この線形回帰をこのように変形します。

$$\large h_θ(x)=g(θ^{T}x)$$

新しく、g()という関数が出てきました。このg()という関数については、以下の式で表します。

$$\large g(z)=\frac{1}{1+e^{-z}}$$

これを、シグモイド関数、もしくはロジスティック関数と呼びます。名称こそ全然違いますが、意味合いは同じです。
「ロジスティック回帰」の語源もここから来ているのですね。

シグモイド関数をグラフで見てみます。

グラフが下手くそで申し訳ないですが、\(g(z)\)は0と1にそれぞれ漸化します。
つまり、\(z\)が負に無限大であれば0に近付いて行き、\(z\)が無限大であれば1に近付いて行くということです。

さて、シグモイド関数についてわかりましたので、この\(h_θ(x)\)の右辺に\(g(z)\)を代入してみましょう。

$$\large h_θ(x)=\frac{1}{1+e^{-θ^{T}x}}$$

この仮説の出力はどのように解釈するべきでしょうか?

$$\large h_θ(x)=入力xで~y=1~となる推定確率$$

難しく表現していますが、つまり、「何かしらのxを突っ込んだ結果、出力されるyが1になる確率」ということです。

腫瘍の分類の例を見てみましょう。
\[
x
=
\left[
\begin{array}{ccc}
x_0 \\
x_1
\end{array}
\right] =
\left[
\begin{array}{ccc}
1 \\
腫瘍の大きさ
\end{array}
\right] \]

ここに特徴ベクトル\(x\)があり、\(x_0\)は1、\(x_1\)は腫瘍の大きさです。
ある患者の腫瘍の大きさが既に分かっているとし、この仮説に入れたところ、0.7という結果が返って来たとします。

$$\large h_θ(x)=0.7$$

つまりこの結果は、「特徴\(x\)を持った患者が\(y=1\)である確率は0.7である」と解釈できるわけです。
もっと端的に言えば、「患者の腫瘍は70%の可能性で悪性である」ということですね。

以上の結果を確率論的に表現するのであれば、

$$\large h_θ(x)=P(y=1|x;θ)$$

となります。

確率に慣れていないと理解しがたい表現ですが、「与えられた\(x\)を\(θ\)でパラメータ化した場合に、\(y=1\)である確率」ということです。

さて、ここまでの話は全て「確率」です。すなわち、全事象の確率は1になります。

$$\large P(y=0|x;θ)+P(y=1|x;θ)=1$$

これは裏を返せば、\(y=1\)(もしくは\(y=0\))が分かっていれば、\(y=0\)が極めて簡単に導き出せる、ということです。

$$\large P(y=0|x;θ)=1-P(y=1|x;θ)$$

決定境界

今目の前に、このようなデータセットがあるとしましょう。

そして、仮説は以下です。

$$\large h_θ(x)=g(θ_0+θ_1x_1+θ_2x_2)$$

\(θ\)を決定する具体的な話はまた別の機会にするとして、今回は\(θ_0=-3\)、\(θ_1=1\)、\(θ_2=1\)と導き出せたとしましょう。
\[
θ
=
\left[
\begin{array}{ccc}
-3 \\
1 \\
1
\end{array}
\right] \]

今までやってきたことを踏まえると、「\(-3+x_1+x_2 \geq0\)を満たすのであれば、\(y=1\)である確率は非常に高い」と導き出すことが可能です。

この式をちょっと書き換えれば、

$$\large x_1+x_2 \geq3$$

と書くこともできます。\(y=1\)を求めることに変わりはありません。

この式を、先ほどのグラフに当てはめてみましょう。

\(x_1\)軸、\(x_2\)軸それぞれの3を通る直線ですね。この直線より右上が\(y=1\)の集団になります。
反対に\(x_1+x_2 \leq3\)は、直線左下にある\(y=0\)の集団になります。

この\(y=0\)と\(y=1\)を分かつ直線を、決定境界と呼びます。

もう一つ例を見てみましょう。

このようなデータセットの場合、どのように決定境界を引いたらいいでしょうか?

線形回帰の時に多項式、つまり複数の特徴量があった場合にどのように対処したらいいかという話がありましたが、ロジスティック回帰の場合も全く同じことが可能です。

$$\large h_θ(x)=g(θ_0+θ_1x_1+θ_2x_2+θ_3x^{2}_1+θ_4x^{2}_2)$$

今回も各パラメータが\(θ_0=-1\)、\(θ_1=0\)、\(θ_2=0\)、\(θ_3=1\)、\(θ_4=1\)と導き出せたとします。

\[
θ
=
\left[
\begin{array}{ccc}
-1 \\
0 \\
0 \\
1 \\
1
\end{array}
\right] \]

これは、「\(-1+x^{2}_1+x^{2}_2 \geq0\)を満たすのであれば、\(y=1\)である確率は非常に高い」と言えます。

同様に、式を書き換えましょう。

$$\large x^{2}_1+x^{2}_2 \geq1$$

これをグラフに書いてみると…

このようなが決定境界になるんですね。