ロジスティック回帰 (logistic regression)

1.ロジスティック回帰とは [概要]

ロジスティック回帰(logistic regression)とは,教師あり学習向けの,シンプルな教師あり学習線形識別モデルである.線形回帰モデルの出力をロジスティック関数で変換し,2クラスの確率値を出力してクラス識別を行う.3クラス以上の識別に対応させて一般化した多項ロジスティック回帰とは異なることを強調する場合には,ロジスティック回帰のことを二項ロジスティック回帰(binary logistic regression)とも呼ぶ.

単純な線形回帰結果の値$\bm{w}^{\top}\bm{x}$をクラス確率として出力することで識別モデルとして線形回帰を使いたいという動機があった.しかし,線形回帰結果はそのままだと値が$-\inf ~ \inf $となってしまう.そこで,後段にロジスティック関数(1.2.1節)を加えることにより,線形回帰結果を確率値の$0~1$のあいだの値に押しつぶす(squashing)ことで,真ん中の値0.5を識別境界に用いることができる (押しつぶしについては,活性化関数の記事も参照).この構成により,線形回帰を確率出力式の2クラス識別モデルとして使用できるようにしたものが,ロジスティック回帰である.

1.1 記事の構成

2節以降のこの記事では,以下の構成でロジスティック回帰について解説する.

  • 2節 「2値ロジスティック回帰の概要」と事前準備.
  • 3節 識別モデルの構成(モデルの詳細)
  • 4節 損失関数
  • 5節 まとめ

まず2節で,と,ロジスティック回帰の理解に必要な事前知識として「ロジスティック関数」と「ベルヌーイ分布」について,基本となる「二項ロジスティック回帰の概要」について紹介する.

その後,本題の二項ロジスティック回帰・多項ロジスティック回帰の2つについて,それぞれ「モデルの詳細(3節)」と「誤差関数(4節)」を紹介する.

ロジスティック回帰は,パーセプトロンと等価であるゆえ,3層パーセプトロンやディープニューラルネットの機構を正しく理解するためには,ロジスティック回帰を理解しておくことも役にたつはずである.

2. ニ値ロジスティック回帰の概要と事前準備.

2.1 ニ値ロジスティック回帰の概要

二項ロジスティック回帰は,入力ベクトル$\bm{x} \in \mathbb{R}^D$の$D$個の変数群と,出力スカラーの$y$の間の関係である条件付き確率$p(y \mid \bm{x})$を,「線形回帰+シグモイド関数」の組み合わせにより構成した識別モデルである.

具体的には,以下のベルヌーイ分布を,条件的確率変数 $y \mid \bm{x}$ へフィットさせる:

\[
p_{\bm{w}}(y \mid \bm{x}) = \text{Ber}(y \mid \sigma(\bm{w}^{\top}\bm{x})) \tag{2.1}
\]

式(2.1)右辺では,入力に対する線形回帰モデル$\bm{w}^{\top}\bm{x}$の出力に,ロジスティック関数(1.2.1節)を適用して確率値化したあと,その確率値をベルヌーイ分布のパラメータ確率に用いて最終的に1か0をクラス識別値として出力する.

これは,入力$\bm{x}$を 線形回帰モデルとロジスティック関数を用いてクラス確率$\sigma(\bm{w}^{\top}\bm{x})$に写像し,そのクラス確率が0.5以上なのかそれ未満かによって,入力サンプル$\bm{x}$を2クラスに識別することに相当している(3.1節).

ロジスティック回帰のパラメータの学習には,最尤推定,勾配降下法が用いられ,最適化の目的関数には交差エントロピー(cross-entorpy)が用いられる(3.1節, 3.2 節).また,より高度な最適化として,ニュートン法(レべンバーグ・マーカート法)や,ニュートン法のロジスティック回帰向け版のIRLS(Iteratively Reweighted Least Squares)などが用いられる.これら最適化アルゴリズムの解説はここでは省略するので,参考書籍の Machine learning: a probabilistic perspective. や 画像認識(機械学習プロフェッショナルシリーズ)などの詳細解説を参照にされたい.

また,$K$個の二項ロジスティック回帰を並列使用することで,$K$クラス識別版の多項ロジスティック回帰を構築できる.その際,出力をシグモイド関数の$K$クラス一般化版であるsoftmax関数に代えることで,$K$クラスの識別確率を事後確立として出力する設計になっている(3.2節, 4.2節)

2.2 前準備

2.2.1 ロジスティック関数(シグモイド関数)

ロジスティック関数の元となるlogit関数は,以下の関数である:

\[
\text{logit} (p) = \log \left( \frac{p}{1-p} \right) \tag{2.2}
\]

これは,0から1の値を取る$p$に対して,式(2.2)の右辺の値を出力する関数である.

そしてロジスティック回帰で用いるロジスティック関数(ロジスティックシグモイド関数, シグモイド関数)は,logit関数の逆関数である:

\begin{align}
\sigma(x) &= \text{logit}^{-1} (x)\\
&= \frac{\exp(x)}{1+\exp(x)}=\frac{1}{1+\exp(-x)} \tag{2.3}
\end{align}

このロジスティックシグモイド関数は,S字カーブにより,入力値のスカラー値を0~1の値に押しつぶし(squaching)により閉じ込め,0.5を識別境界(閾値)として入力値を0か1付近のどちらかに出力値を圧縮して変換できる(シグモイド関数のような「活性化関数」の一般的な役割についての詳細は, 活性化関数の記事を参照のこと).

従って,シグモイド関数は,ロジスティック回帰や識別ニューラルネットワークのように,出力値を識別モデルの確率ベクトルにしたい際に,出力部分で用いられる.

2.2.2 ベルヌーイ分布

ベルヌーイ分布は,コイントスのような「2クラスによる,1度の確率的試行」において,どちらのクラスが出現するかの確率を表現した,指数分布型の離散的確率分布である.確率$p$で値$1$を取り,確率$1-p$で値$0$を取る確率分布である.

ベルヌーイ分布のパラメータ値を $\theta$(確率値)としたとき,ベルヌーイ分布の出力確率は以下のようになる:

\begin{align}
\text{Ber}(1 \mid \theta) &= \theta \\
\text{Ber}(0 \mid \theta) &= 1 – \theta
\end{align}

この2つの式を,1つの式にまとめた方が分岐無しで計算できて便利なので,以下のように表すことが多い:

\[
\text{Ber}(x|\theta) = \theta^{I(x=1)} (1 -\theta)^{I(x=0)} \tag{2.4}
\]

ここで,$I(\cdot)$は指示関数(Indicator function)を表す:

\begin{align}
I(x) =
\begin{cases}
1 & \text{if} & x = \text{True}\\
0 & \text{if} & x = \text{False}
\end{cases}\tag{2.5}
\end{align}

以上で,詳細を説明する事前準備はおしまいであるので,次の3節と4節では,二項・多項ロジスティック回帰の詳細をみていきたい.

3. 識別モデルの構成

3.1 ニ値ロジスティック回帰(binary logistic regression)のモデル詳細

二値ロジスティック回帰 (binary logistic regression)のモデル
図1 二値ロジスティック回帰 (binary logistic regression)のモデル

二値ロジスティック回帰は,ベクトル$\bm{x}$を入力として,バイナリー識別ラベル$\{C_p,C_n\}$の2クラスに相当する値の$\{1,0\}$どちらかを$\hat{y}$として最終的に出力するモデルである(図1).

まず線形回帰モデルを実行したあとに(図1-a),式(1.3)のシグモイド関数$\sigma(\cdot)$(1.2.1節)を合成した以下の関数$p(\cdot)$により,ベルヌーイ分布に用いる(クラス$C_p$の)クラス確率値$p(\bm{x})$を出力する(図1-b):

\[
p(\bm{x}) = \sigma(\bm{w}^{\top}\bm{x}) = \frac{1}{1 + \exp (-\bm{w}^{\top}\bm{x})}\tag{2.1}
\]

これは線形回帰の出力全体を,ロジスティック関数によって,$0 \leq p \leq(\bm{x}) 1 $の間の値に押し潰す(squash)(※ ここでのロジスティック関数は,パーセプトロンにおける活性化関数に対応している).

そして,ロジスティック関数の中央値0.5を境界値とみなすことで,(ポジティブクラスの)クラス確率$p(\bm{x})$の値が0.5より上か下かにより,最終的なクラス識別結果$\{1,0\}$のどちらかを$\hat{y}$として出力する:

\begin{align}
\hat{y} =
\begin{cases}
1 & (p(\bm{x}) \geq 0.5 )\\
0 & (p(\bm{x}) < 0.5 )
\end{cases}
\end{align}

この出力$\hat{y}$は,以下のように,確率$p(\bm{x})$で値1($C_p$)を,確率$1- p(\bm{x})$で値0($C_n$)を出力する,以下のベルヌーイ分布に相当している(式(1.1)を参照):

\begin{align}
P(y=C_p \mid \bm{x}) &= p(\bm{x}) \tag{2.3}\\
P(y=C_n \mid \bm{x}) &= 1 – p(\bm{x})\tag{2.4}
\end{align}

3.1.1 線形モデルからの変形箇所を整理

言い換えると,(二値)ロジスティック回帰は,(確率的)線形回帰モデルを,以下の2点から一般化をおこない(確率的)識別モデルへと変形させたモデルであると言える:

  1. $y$をガウス分布(連続分布)でモデル化していたのを,ベルヌーイ分布(2値の離散分布)へ変更した.
  2. 回帰結果$\bm{w}^{\top}\bm{x})$を,0.5を識別境界面として確率値範囲内の値の0か1にほとんどの値を閉じ込めることができる「ロジスティック関数」を出力部分に追加した.

(※ このように,線形回帰から派生したモデルであるので,識別モデルなのに「ロジスティック回帰」と呼ばれている)

3.1.2 クラス確率の解釈

ロジスティック回帰の出力の解釈
図2 ロジスティック回帰の出力の解釈

ロジスティック回帰の出力である,式(2.1)のクラス確率値$p(\bm{x})$について,その性質を少し見てみおこう.

クラス確率値$p(\bm{x})$を関数入力として,logit関数(オッズの対数)を計算することを試してみる.すると,元の(ロジスティック関数の入力であった)線形回帰モデル$p(\bm{x})$だけが出てくる:

\begin{align}
\log \frac{p(\bm{x})}{1-p(\bm{x})} = \bm{w}^{\top}\bm{x} \tag{2.5}
\end{align}

これは,logit関数とロジスティック関数が逆関数同士(1.2.1節)だからこういう変換が可能であり,$p(\bm{x})$に限らず,あらゆる確率に対してこの変換(元の入力確率$p$の抽出)が実施できる(図2).

更に,式(2.5)について,両辺の指数を取ってみる.すると,今度は以下のような関係が導かれる:

\begin{align}
\frac{p(\bm{x})}{1-p(\bm{x})} = \exp(\bm{w}^{\top}\bm{x}) \tag{2.6}
\end{align}

この式(2.6)の左辺はオッズである.つまり,式(2.5) => 式(2.6)で行ったことは以下の通りである:

  • 『ロジスティック回帰の出力クラス確率である「オッズの対数(logit)」を指数化すると,右辺の「入力$\bm{x}$の線形回帰を指数化した関数」として解釈できるようになる.
  • つまり,ロジスティック関数の出力の確率は,線形回帰の超平面$\bm{w}^{\top}\bm{x}$上のいずれかの点に射影できる.

3.2 多項ロジスティック回帰(multi-class logistic regression)のモデル

次に,2項ロジスティックモデルの$K$クラス向け一般化をすることで,多項ロジスティック回帰のモデル化について考えていきたい.

多項ロジスティック回帰では,$\bm{x}$を入力として,他クラス識別ラベルを確率ベクトル$\bm{y}$として出力する.$K (\geq 3)$クラスの識別を行う際に,クラス$k$に対応する2項ロジスティック回帰を$k$個合体させたモデルである.

多項ロジスティック回帰では,それぞれのクラスに対して個別のロジスティック回帰の重みベクトル$\bm{w}_k$を用意し,各出力の最後にソフトマックス関数を用いて正規化することで,最終出力を確率値化する.そして,出力は$K$クラスのカテゴリカル分布によりモデル化されている.

クラス$k$の識別担当のロジスティック回帰の,各クラス$C_k$の出力事後確率を$p(y = C_k \mid \bm{x})$とすると,二項ロジスティック回帰と同様に,まず線形回帰したのちに,その値をsoftmax関数で出力する風に,モデル化されている:

\begin{align}
P(y = C_k \mid \bm{x}) & = softmax(\bm{w}_k^{\top}\bm{x})_k \\
&= \frac{
\exp(\bm{w}_k^{\top}\bm{x})
}{
\sum_{j=1}^{K} \exp (\bm{w}_{j}^{\top}\bm{x})
}\tag{3.7}
\end{align}

ここで,softmax関数は,分母の総和が1にして,入力の$K$個の変数値を,一括して(マルチヌーイ)確率ベクトル化できる関数である.つまりは,ロジスティックシグモイド関数群による$K$個の出力へ対応させたものである.

4. 誤差関数

4.1 ニ項ロジスティック回帰の最尤推定

尤度最大化による最尤推定(maximum likelihood)を用いた最適化から考えたい.

二項ロジスティック回帰では,予測モデルの分布はベルヌーイ分布であった.ベルヌーイ分布の対数尤度は式(1.4)の確率密度関数で計算できる.

よって,式(3.2), (3.3)を用いることで,最適化に用いる『サンプル$i$の「負の対数尤度」の総和』を,次のように計算できる:

\begin{align}
\mathcal{L}_{\bm{w}}
&= – \log \left[\Pi_{i=1}^{N}
\underbrace{ p_{\bm{w}}(y^{(i)} \mid \bm{x}^{(i)})}_{\text{尤度関数}}
\right] \\
&= – \log \left[ \Pi_{i=1}^{N} P(y^{(i)} =C_p | \bm{x}^{(i)})^{y^{(i)}} (1-P(y^{(i)} =C_p | \bm{x}^{(i)}))^{1-y^{(i)}} \right] \\
&= – \sum_{i=1}^{N} \left[ y^{(i)} P(y^{(i)} =C_p | \bm{x}^{(i)}) + (1-y^{(i)}) \log (1-P(y^{(i)} =C_p | \bm{x}^{(i)}))\right]\tag{4.1}
\end{align}

この式(4.1)の二値ロジスティック関数向けの誤差関数を,二値交差エントロピー(binary cross-entropy)と呼ぶ.

4.2 多項クラスロジスティック回帰の最尤推定

多項ロジスティック回帰(2.2節)の場合,二項ロジスティック関数と同様に,以下のように負の対数尤度関数を最小化する:

\begin{align}
\mathcal{L}
&= – \log \left[ \Pi_{i=1}^{N} \Pi_{k=1}^{K} P(y^{(i)} =C_k \mid \bm{x}^{(i)})^{I(k=y^{(i)})} \right] \\
&= – \left[ \sum_{i=1}^{N} \sum_{k=1}^{K} I(k=y^{(i)}) \log P(y^{(i)} =C_k \mid \bm{x}^{(i)}) \right] \tag{4.2}
\end{align}

多値ロジスティック関数を学習する際に使う,式(3.2)の誤差関数を,交差エントロピー(binary cross-entropy)と呼ぶ.

従って,式(4.2)では,正解以外の$k-1$個のクラスでは$I(k=y^{(i)}) = 0$であるので,和の計算で考慮されなくなり,正解のクラスの項しか和として足されない.

5. ロジスティック回帰のまとめ

この記事では,線形回帰モデルを,ロジスティック関数をもちいて2値識別モデル化した「ロジスティック回帰」を紹介した.2節でまず事前知識をおさらいしたのち,モデルの構成(3節)と学習に用いる損失関数(4節)についてそれぞれ紹介した.

3節では,2値出力版「二項ロジスティック回帰」(2.1節)と,Kクラス識別版「多項ロジスティック回帰」(2.2節)について,それぞれモデルの中身を紹介した.

4節では,モデルの最適化に用いられる,負の対数尤度誤差である「二値交差エントロピー」(3.1節)と,「交差エントロピー」(3.2節)の導出過程を確認した.ただし,それらの誤差関数を用いた最適化アルゴリズムの中身については,この記事では触れなかった.

References

  • [Cramer 2002] Cramer J. S. “The origins of logistic regression.” (2002): 4.

参照書籍

参照外部リンク

関連記事