Coursera Week3
はじめに
CourseraのWeek3を実施しましたので、私のメモを公開します。
Courseraってなんだ?という方はWeek1から御覧ください。
Week3では分類問題に使用するロジステック回帰について学習します。
ロジスティック回帰 (Logistic Regression)
分類(Classification)
機械学習の分野では最もポピュラーなアルゴリズム。
Classificationの例として、スパムメールかそうでないか、不正利用しているかしていないか、腫瘍ががんかそうでないか。
→ 必ず0か1に分類できるもの。
0:Negative Class
1:Positive Class
分類問題には線形回帰は利用できない。(おかしな値になることがある。)
さらに分類は$ y $0か1であることがわかっているのに、線形回帰$ h_\theta(x)$は1より大きいか0より小さい値を出してしまう。
そこで分類問題にはロジスティック回帰を使用する。
$$
0 \leqq h_\theta(x) \geqq 1
$$
仮説表現(Hypothesis Representation)
ロジスティック関数またはシグモイド関数は同じ意味で、
$ h_\theta(x) = g(\theta^Tx) $ と $g(z) = \frac{1}{1 + e^{-1}}$を変換して以下のようになる。
$$
h_\theta(x) = \frac{1}{1 + e^{-\theta^Tx}}
$$
シグモイド関数は$z$がマイナス無限に近づくと0に近づき、無限に近づくと1に近づく。
$h_\theta(x) = P(y = 1 | x; \theta)$と表すこともできる。
決定境界 (Decision Boundary)
$ h_\theta(x) \geqq 0.5$の場合は$y=1$
これは$\theta^t x \geqq 0$で求めることができる。
$ h_\theta(x) < 0.5$の場合は$y=0$
これは$\theta^t x < 0$で求めることができる。
このケースの場合、0.5が決定境界である。
ロジスティック回帰(Logistic Regression)
目的関数(Cost Function)
ロジスティック関数は出力が波をうち、多くの局所最適化を引き起こすため、線形回帰と同じ目的関数は使用できない。
$y = 1$の場合
$Cost(h_\theta(x), y) = -log(h_\theta(x))$
$y = 0$の場合
$Cost(h_\theta(x), y) = -log(1 - h_\theta(x))$
シンプルな目的関数と最急降下法(Simplified cost function and gradient descent)
上記で示した$y=1$の場合と$y=0$の場合の目的関数をシンプルに変換する。
$$
Cost(h_\theta(x), y) = -y * log(h_\theta(x)) - (1 - y) * log(1 - h_\theta(x))
$$
最急降下法は表向きには変わらないが、仮説の定義が変わっていることに注意。
最急降下法
$\theta_j := \theta_j - \alpha\sum_{i=0}^m (h_\theta(x^i) - y^i)x^i_j$
$h_\theta(x) = \frac{1}{1 + e^{-\theta^Tx}}$
高度な最適化(Advanced optimization)
最適化アルゴリズムは主に下記の4種類である。
・最急降下法
・共役勾配法(Conjugate gradient)
・BFGS
・L-BFGS
Octaveではfminunc関数を使用することで最急降下法の拡張版のようなものを使用できる。
これは学習率$\alpha$を求めなくていいので楽、さらに早い。
fminunc(@costFunction, initialTheta, options)
マルチクラス分類問題(Multi-class classification : One vs all)
マルチクラス分類とは、例えばメールのフォルダ分けがある。
仕事、友達、家族、趣味などのフォルダに分類するケースをマルチクラス分類という。
病気の診断や天気も同じ。
これらの分類問題では一番確率の高いものを正解とする。
$prediction = max(h_\theta^i(x))$
正規化(Regularization)
オーバーフィッティング問題(The problem of overfitting)
プロットされたデータに対して直線で線を引いて、あまりマッチしていない状態をアンダーフィッティングという。
同じくプロットされたデータに対して線を結ぶが、うねうねして結果の予測ができない状態になっていることをオーバーフィッティングという。
アンダーフィッティングとオーバーフィッティングはロジスティック回帰の場合にもあり得る。
オーバーフィッティング対策
・機能の数を減らす
・正規化する
目的関数(Cost function)
オーバーフィッティングを避けるためには適切に正規化をする必要がある。
不要なデータを0に近づけてほぼ取り除くことで、正常に結果が予測できる線にする。
$\lambda$はオーバーフィッティングを避ける役割を果たす。
$$
J(\theta) = \frac{1}{2m}\Biggl[\sum_{i=1}^m(h_\theta(x^i) - y^i)^2 + \lambda\sum_{i=1}^n\theta_j^2\Biggr]
$$
$\lambda$が大きすぎるとペナルティを与えすぎてアンダーフィッティングになる。
小さすぎるとオーバーフィッティングになる。
線形回帰の正規化(Regularized linear regression)
最急降下法
$$
\theta_j := \theta_j - \alpha\Biggl[\frac{1}{m}\sum_{i=1}^m(h_\theta(x^i) - y^i) x_j^i + \frac{\alpha}{m}\theta_j\Biggr]
$$
$$
\theta_j := \theta_j(1 - \alpha\frac{\lambda}{m}) - \alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^i) - y^i) x_j^i
$$
このとき$1 - \alpha\frac{\lambda}{m} < 1$となる。
ロジスティック回帰の正規化(Regularized logistic regression)
考え方は線形回帰の正規化の最急降下法と同じ。
ただし、ロジスティクス回帰は$h_\theta(x) = \frac{1}{1 + e^{-\theta^Tx}}$であることに注意する。