ロジスティック回帰モデル(Logistic Regression Model)

分類

メール受け取った時、そのメールがスパムか否かを判断するようなことを分類問題という。

スパムの場合は$1$、スパムではない場合は$0$としする。

$0.5$より大きいすべての予測を$1$としてマッピングし、$0.5$未満をすべて0にマッピングする。

$$ h_{ \theta }(x) \geqq 0.5 \to y = 1 $$

$$ h_{ \theta }(x) \lt 0.5 \to y = 0 $$

このように$0$か$1$かのような分類するような問題に、線形回帰を用いて分類を行ったとして、直線への当てはまりが悪くうまくいかない。

そこで、仮説関数$h(x)$が$0 \leqq h(x) \leqq 1$となるような変形を行う。

ロジスティック回帰(Logistic Regression )による仮説関数の表現

線形回帰の仮説関数は、$\theta$の転置行列にベクトル$\boldsymbol{ X }$を掛けたものであった。

$$ h(x) = \theta^{ \mathrm{ T } } \boldsymbol{ X } $$

ロジスティック回帰(Logistic regression)の仮説関数は、$\theta$の転置行列にベクトル$\boldsymbol{ X }$を掛けたものをシグモイド関数(sigmoid function)に代入したものになる。

$$ h_{ \theta }(x) = g(\theta^{ \mathrm{ T } } \boldsymbol{ X }) $$

シグモイド関数は下記のように表現される。

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

シグモイド関数を使った仮定関数は下記のように表現される。 $$ h_{\theta}(x) = g(\theta^{ \mathrm{ T } } \boldsymbol{ X }) = \frac{ 1 }{ 1 + e^{ -(\theta^{ \mathrm{ T } } \boldsymbol{ X }) } } $$

スパムか否かを表現すると、

$$ スパムとなるのは(y = 1)、h_{ \theta }(x) \geqq 0.5 、\theta^{ \mathrm{ T } } \boldsymbol{ X } \geqq 0 の時 $$

$$ スパムではないのは(y = 0)、h_{ \theta }(x) \lt 0.5 、\theta^{ \mathrm{ T } } \boldsymbol{ X } \lt 0 の時 $$

のように表現される。

決定境界

決定境界は、y = 0およびy = 1の領域を区切る線である。これは仮説関数によって作成される。

目的関数が下記として $$ h_{ \theta }(x) = \theta_0 + \theta_1 x_1 + \theta_2 x_2 $$

$\theta$が分かっているとする。

$$\theta = \begin{pmatrix}5 \\ -1 \\ 0\end{pmatrix}$$

$h_{ \theta }(x)$に$\theta$を代入すると、

$$ \begin{align} \theta_0 + \theta_1 x_1 + \theta_2 x_2 &= 5 + -1*x_1 + 0*x_2 \\
&= 5 + -x_1 \end{align} $$

となり

$$ x_1 \leqq 5 の時、y = 1 $$

$$ x_1 \gt 5 の時、y = 0 $$

となる。

コスト関数

ロジスティック回帰(Logistic Regression )のコスト関数(Cost function)は下記のように定義される。

$$ J(\theta) = \dfrac{1}{m} \sum_{i=1}^m \mathrm{Cost}(h_\theta(x^{(i)}),y^{(i)}) $$

$$ \begin{eqnarray} Cost(h_{ \theta }(x), y) = \begin{cases} -\log (h_{\theta}(x)) & \text{if y = 1} \newline -\log (1 - h_{\theta}(x)) & \text{if y = 0} \end{cases} \end{eqnarray} $$

このコスト関数は下記のような特徴がある。

  • $y = 1$ の時
    • $h_{ \theta }(x)$ が $0$ に近づくにつれコスト関数は無限に増大する
    • $h_{ \theta }(x)$ が $1$ に近づくにつれコスト関数は0に近づく
  • $y = 0$ の時
    • $h_{ \theta }(x)$ が $0$ に近づくにつれコスト関数は0に近づく
    • $h_{ \theta }(x)$ が $1$ に近づくにつれコスト関数は無限に増大する

このコスト関数を1つの式で表現すると下記のようになる。

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

ベクトル化された実装は次のとおり。

$$ \begin{align*} & h = g(X\theta)\newline & J(\theta) = \frac{1}{m} \cdot \left(-y^{T}\log(h)-(1-y)^{T}\log(1-h)\right) \end{align*} $$

最急降下法

線形回帰と同様。

$$ \begin{align*}& Repeat \; \lbrace \newline & \; \theta_j := \theta_j - \alpha \dfrac{\partial}{\partial \theta_j}J(\theta) \newline & \rbrace\end{align*} $$

コスト関数を偏微分して展開すると下記のように表現できる。

$$ \begin{align*} & Repeat \; \lbrace \newline & \; \theta_j := \theta_j - \frac{\alpha}{m} \sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)}) x_j^{(i)} \newline & \rbrace \end{align*} $$

ベクトル化した実装は下記のとおり。

$$ \theta := \theta - \frac{\alpha}{m} X^{T} (g(X \theta ) - \vec{y}) $$

コスト関数の最適化アルゴリズム

最急降下法の他にもコスト関数を最小化するアルゴリズムがある。

  • 共役勾配法(Conjugate gradient)
  • BFGS法(BFGS)
  • L-BFGS法(L-BFGS)

これらのアルゴリズムは、最急降下法と比較して下記のような特徴がある。

  • $\alpha$を自分で選ぶ必要がない
  • 最急降下法より速く収束する

複数クラス分類(Multiclass Classification)

分類するクラスが複数になる場合、One-vs-allと方法を使って分類を行う。

One-vs-allは、1つのクラスを選択して、

  • 選択したクラス
  • 他のクラス

といった分類を行うロジスティック回帰(Logistic Regression )$h_{ \theta }^{ (i) }(x)$を適用する。これをクラスがn個あれば、n回行う。ロジスティック回帰(Logistic Regression )もn個作成して、これを全て適用し、このうち最も高い値を返したものを予測として使用する。

過学習(Overfitting)

過学習の問題

特定のデータセットに特化しすぎて、その結果、正確な予測ができなくなくなる状態のことを過学習(Overfitting)という。

回帰分析では、説明変数(feature)$x$の次数を増やせばデータへのフィット感がよくなるが、フィット感を良くしようと、説明変数(feature)$x$が多くしすぎると、仮説関数の精度が落ちる。

ちなみに、フィット感が足りない状態のことを未学習(Underfitting)といい、関数が単純すぎるか、説明変数(feature)$x$の次数が足りない場合に発生する。

過学習(Overfitting)を解決する方法は2つある。

  • 説明変数(feature)の数を減らす
  • 正則化

正則化したコスト関数

正則化とは、$\theta$の値を小さくすれば、説明変数(feature)$x$による影響を小さくでき、過学習(Overfitting)しにくくするといった手法である。

正則化したコスト関数は下記のように定義される

$$ min_\theta\ \dfrac{1}{2m}\ \sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)})^2 + \lambda\ \sum_{j=1}^n \theta_j^2 $$

$\lambda$が大きすぎると、コスト関数を最小化するためには$\theta$の値を小さくする必要があり、結果$\theta$が$0$に近づくため、未学習(Underfitting)が発生する。

正則化した線形回帰(Regularized Linear Regression)

最急降下法(Gradient Descent)は下記のとおり。

$$ \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)} $$

正規方程式(Normal Equation)は下記のとおり。

$$ \begin{align*}& \theta = \left( X^TX + \lambda \cdot L \right)^{-1} X^Ty \newline& \text{where}\ \ L = \begin{bmatrix} 0 & & & & \newline & 1 & & & \newline & & 1 & & \newline & & & \ddots & \newline & & & & 1 \newline\end{bmatrix}\end{align*} $$

正則化したロジスティック回帰(Regularized Logistic Regression)

コスト関数は下記のとおり。

$$ J(\theta) = - \frac{1}{m} \sum_{i=1}^m \large[ y^{(i)}\ \log (h_\theta (x^{(i)})) + (1 - y^{(i)})\ \log (1 - h_\theta(x^{(i)}))\large] + \frac{\lambda}{2m}\sum_{j=1}^n \theta_j^2 $$

最急降下法(Gradient Descent)は線形回帰と変わらない。