さて、今回は分類(Classification)に関して学習したことをまとめてみます。

ロジスティック回帰 (Logistic Regression)

予測値 $y’$ を0.5以上を1とし、0.5未満を0とすることで分類を行います。線形回帰では目的関数の範囲が定まっておらず、分類することが出来ないため、ロジスティック回帰を使います。

ロジスティック関数 (Logistic Function)あるいは、シグモイド関数 (Sigmoid Function)

シグモイド関数(別名:ロジスティック関数) $g(z)$ は以下の様な関数です。

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

ロジスティック回帰における仮説 $h_\theta (x)$ はシグモイド関数 $g(z)$ に予測変数 $x$ のパラメーター  $z = \theta^T x$ を代入します。

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

画像引用: Machine Learning - Coursera

$h_\theta(x)>0.5$ なら $y=1$

$h_\theta(x)\leq 0.5$ なら $y=0$

この様に分類判定が行えます。

ロジスティック回帰の目的関数と最急降下法

ロジスティック回帰の目的関数を求める時、対数 $log$ を利用します。

$y=1$ なら ${J(\theta) = -log(h_\theta (x)) }$

$y=0$ なら ${J(\theta) = -log(1 - h_\theta (x))}$

これをまとめると目的関数は以下の様になります。

$${ J(\theta) = - \frac{1}{m} [ \sum_{i=1}^m y^{(i)} log(h_\theta (x^{(i)})) + (1 - y^{(i)}) log(1 - h_\theta (x^{(i)}))] }$$

目的関数を最急降下法に代入すると以下の様になります。

$${ \theta_j : \theta_j - \alpha \sum_{i=1}^m (h_\theta (x^{(i)}) - y^{(i)}) x_j ^{(i)} }$$

基本式は単回帰・重回帰の時と同様です。

ロジスティック回帰の多クラス分類

応用変数 $y$ を複数設定する事で多クラス分類(Multiclass Classification)する事が出来ます。

画像引用: Machine Learning - Coursera

One-vs-all という手法を使います。図をみるとわかり易いのですが、多クラスを仮の2クラスに分割して分類する手法です。

目的変数はどの様になるのでしょうか?

応用変数 $y_1$, $y_2$, $y_3$

に対し、目的変数はカテゴリーと同数のモデルが出来ます。

$$
{
h_\theta ^{(i)} (x) = P (y = i | x; \theta)
}
$$

それぞれのモデルは以上の様に表す事が出来ます。新たな $x$ が与えられた時、 $h_\theta ^{(i)} (x) $ が最大になるカテゴリーに分類されます。

では。

参考にさせていただきました

Coursera Machine Learning (3): ロジスティック回帰、正則化 - Qiita