ロジスティック回帰、その前に

はじめに

イラストで学ぶ機械学習を読み進めていたところ、 ロジスティック回帰(10章1節)のところで、しょっぱなにクラス事後確率  p(y|\boldsymbol{x}) をモデル化した式が現れました。

$$ \begin{eqnarray} q(y|\boldsymbol{x}; \boldsymbol{\theta}) = \frac{ \exp{\sum^{b}_{j=1}{\theta^{(y)}_j} {\phi_j}(\boldsymbol{x})} }{ \sum^{c}_{y'=1}{ \exp{\sum^{b}_{j=1}{\theta^{(y')}_j} {\phi_j}(\boldsymbol{x})} } } \label{eq:target_eq} \end{eqnarray} $$

(^ ^;) <ドウヤッテソノシキダシタノ?

救世主PRML

$ \eqref{eq:target_eq} $を手に入れるべく、聖書ことPRML(パターン認識機械学習)を紐解いてみました。
今回はPRMLの 4.2節、4.2.1節が対象です。

パターン認識と機械学習 上

パターン認識と機械学習 上

パターン認識と機械学習 下 (ベイズ理論による統計的予測)

パターン認識と機械学習 下 (ベイズ理論による統計的予測)

モデル導出

ロジスティック回帰は、確率的に分類を行う手法です。
確率論の重鎮「ベイズの定理」をしてモデルを導出していきます。
まずは単純化のために2クラス分類を考えていきます。 ベイズ定理より、クラス $ C_1 $ に対する事後確率は、 $$ \begin{align} \begin{split} p(C_1|\boldsymbol{x}) &= \frac{ p(\boldsymbol{x}|C_1) p(C_1) }{ p(\boldsymbol{x}|C_1) p(C_1) + p(\boldsymbol{x}|C_2) p(C_2) } \end{split} \label{eq:bayes} \end{align} $$ です。
分子が1にするように変換していくと上式は、 $$ \begin{align} \begin{split} p(C_1|\boldsymbol{x}) &= \frac{ p(\boldsymbol{x}|C_1) p(C_1) }{ p(\boldsymbol{x}|C_1) p(C_1) + p(\boldsymbol{x}|C_2) p(C_2) } \\ &= \frac{ 1 }{ 1 + \frac{p(\boldsymbol{x}|C_2) p(C_2)}{p(\boldsymbol{x}|C_1) p(C_1)} } \\ &= \frac{ 1 }{1 + \exp{\biggl(\ln{\frac{p(\boldsymbol{x}|C_2) p(C_2)}{p(\boldsymbol{x}|C_1) p(C_1)}}}\biggr)} \\ &= \frac{ 1 }{1 + \exp{\biggl(-\ln{\frac{p(\boldsymbol{x}|C_1) p(C_1)}{p(\boldsymbol{x}|C_2) p(C_2)}}}\biggr)} \\ &= \frac{1}{1 + \exp(a)} = σ(a)\\ &(※a = \frac{p(\boldsymbol{x}|C_1) p(C_1)}{p(\boldsymbol{x}|C_2) p(C_2)}) \end{split} \label{eq:bayes2} \end{align} $$ とできます。 この式はロジスティックシグモイド関数と言われています。 ロジスティックシグモイド関数は対称性を持ち、 $$ \begin{eqnarray} σ(-a) = 1 - σ(a) \end{eqnarray} $$ を満たします。
f:id:hades-netherworld-service:20160515023409p:plain このことからもわかるように、この関数は、2クラスの正規確率を足して1になることを満たしているんですね。 そして、このロジスティックシグモイド関数逆関数は $$ \begin{eqnarray} a = \ln{ \biggl(\frac{σ}{1 - σ}\biggr) } \end{eqnarray} $$ となり、これはロジット関数(対数オッズ)と呼ばれています。(この記事では特に使いません)

同じようにして、K > 2 クラスの場合を考えます。 多クラスの場合、事後確率$ p(C_k|\boldsymbol{x}) $はベイズの定理より

$$ \begin{align} \begin{split} p(C_k|\boldsymbol{x}) &= \frac{ p(\boldsymbol{x}|C_k) p(C_k) }{ \sum_j p(\boldsymbol{x}|C_j) p(C_j) }\\ &= \frac{ \exp{\biggl(\ln{\bigl(p(\boldsymbol{x}|C_k) p(C_k)\bigr)}\biggr)} }{ \sum_j \exp{\biggl(\ln{\bigl(p(\boldsymbol{x}|C_j) p(C_j)\bigr)}\biggr)} }\\ &= \frac{\exp{(a_k)}}{\sum_j \exp{(a_j)}}\\ &(※a_k = \ln{\bigl(p(\boldsymbol{x}|C_k) p(C_k)\bigr)}) \end{split} \label{eq:bayesk} \end{align} $$

が得られます。この関数は正規化指数関数(ソフトマックス関数)と呼ばれており、ロジスティックシグモイド関数の多クラスへの一般化と捉えることが出来るとのこと。

目的の式を目指して

目的の式に向かうに伴い、次の条件を設定します。

  • 入力は連続値(D次元)
  • $p(\boldsymbol{x}|C_k)$ がガウス分布に従う
  • すべてのクラスは同じ共分散行列を持つ

つまりは、 $$ \begin{eqnarray} p(\boldsymbol{x}|C_k) = \frac{1}{(2\pi)^{\frac{D}{2}}} \frac{1}{|Σ|^{\frac{1}{2}}} \exp{\biggl\{-\frac{1}{2}(\boldsymbol{x} - \boldsymbol{\mu}_k)^TΣ^{-1}(\boldsymbol{x} - \boldsymbol{\mu}_k)\biggr\}} \label{eq:gaussian} \end{eqnarray} $$ です。

まずは2クラスで考えると、$ \eqref{eq:bayes} $と$ \eqref{eq:gaussian}$より、クラスC_1の事後確率は

$$ \begin{align} \begin{split} p(C_1|\boldsymbol{x}) &= σ\Biggl(\ln \frac{\frac{1}{(2\pi)^{\frac{D}{2}}} \frac{1}{|Σ|^{\frac{1}{2}}} \exp{\bigr\{-\frac{1}{2}(\boldsymbol{x} - \boldsymbol{\mu}_1)^TΣ^{-1}(\boldsymbol{x} - \boldsymbol{\mu}_1)\bigl\}} p(C_1)}{\frac{1}{(2\pi)^{\frac{D}{2}}} \frac{1}{|Σ|^{\frac{1}{2}}} \exp{\bigr\{-\frac{1}{2}(\boldsymbol{x} - \boldsymbol{\mu}_2)^TΣ^{-1}(\boldsymbol{x} - \boldsymbol{\mu}_2)\bigl\}} p(C_1)}\Biggr)\\ &= σ\Biggl(\ln \frac{\exp{\bigr\{-\frac{1}{2}(\boldsymbol{x} - \boldsymbol{\mu}_1)^TΣ^{-1}(\boldsymbol{x} - \boldsymbol{\mu}_1)\bigl\}} p(C_1)}{\exp{\bigr\{-\frac{1}{2}(\boldsymbol{x} - \boldsymbol{\mu}_2)^TΣ^{-1}(\boldsymbol{x} - \boldsymbol{\mu}_2)\bigl\}} p(C_1)}\Biggr)\\ &= \begin{array}{l} σ\biggl( -\frac{1}{2}(\boldsymbol{x} - \boldsymbol{\mu}_1)^TΣ^{-1}(\boldsymbol{x} - \boldsymbol{\mu}_1) + \ln\bigl(p(C_1)\bigr) \hspace{20px}\\ \hfill + \frac{1}{2}(\boldsymbol{x} - \boldsymbol{\mu}_2)^TΣ^{-1}(\boldsymbol{x} - \boldsymbol{\mu}_2) - \ln\bigl(p(C_2)\bigr) \biggr) \end{array}\\ &= \begin{array}{l} σ\biggl(-\frac{1}{2}\bigl(\boldsymbol{x}^TΣ^{-1}\boldsymbol{x} - \boldsymbol{x}^TΣ^{-1}\boldsymbol{\mu}_1 - \boldsymbol{\mu}^T_1Σ^{-1}\boldsymbol{x} + \boldsymbol{\mu}^T_1Σ^{-1}\boldsymbol{\mu}_1\bigr) + \ln\bigl(p(C_1)\bigr)\\ \hfill + \frac{1}{2}\bigl(\boldsymbol{x}^TΣ^{-1}\boldsymbol{x} - \boldsymbol{x}^TΣ^{-1}\boldsymbol{\mu}_2 - \boldsymbol{\mu}^T_2Σ^{-1}\boldsymbol{x} + \boldsymbol{\mu}^T_2Σ^{-1}\boldsymbol{\mu}_2\bigr) + \ln\bigl(p(C_2)\bigr)\biggr) \end{array}\\ \end{split} \label{eq:bayes2_1} \end{align} $$

まだまだ複雑ですね。 そこで、

  • 共分散行列が対称行列であること ⇒ $Σ^T = Σ$
  • 対称行列の逆行列も対称行列になること ⇒ $(Σ^{-1})^T = Σ^{-1}$
  • この関数の値はスカラーであること ⇒ $\boldsymbol{x}^T\boldsymbol{y} = \boldsymbol{y}^T\boldsymbol{x}$

を利用すると、 $$ \begin{equation} \boldsymbol{x}^TΣ^{-1}\boldsymbol{\mu}_k = \boldsymbol{x}^T(Σ^{-1}\boldsymbol{\mu}_k) = (Σ^{-1}\boldsymbol{\mu}_k)^T\boldsymbol{x} \label{eq:change1} \end{equation} $$ $$ \begin{equation} \boldsymbol{\mu}^T_kΣ^{-1}\boldsymbol{x} = \boldsymbol{\mu}^T_k(Σ^{-1})^T\boldsymbol{x} = (Σ^{-1}\boldsymbol{\mu}_k)^T\boldsymbol{x} \label{eq:change2} \end{equation} $$ (2つ目の式変換には、行列の公式 $(\boldsymbol{a}\boldsymbol{b})^T = \boldsymbol{b}^T\boldsymbol{a}^T$ を用いています。)

$ \eqref{eq:bayes2_1} $に$ \eqref{eq:change1} $と$ \eqref{eq:change2} $を適用していきます。 $$ \begin{align} \begin{split} p(C_1|\boldsymbol{x}) &= \begin{array}{l} σ\biggl(-\frac{1}{2}\bigl(\boldsymbol{x}^TΣ^{-1}\boldsymbol{x} - \boldsymbol{x}^TΣ^{-1}\boldsymbol{\mu}_1 - \boldsymbol{\mu}^T_1Σ^{-1}\boldsymbol{x} + \boldsymbol{\mu}^T_1Σ^{-1}\boldsymbol{\mu}_1\bigr) + \ln\bigl(p(C_1)\bigr)\\ \hfill + \frac{1}{2}\bigl(\boldsymbol{x}^TΣ^{-1}\boldsymbol{x} - \boldsymbol{x}^TΣ^{-1}\boldsymbol{\mu}_2 - \boldsymbol{\mu}^T_2Σ^{-1}\boldsymbol{x} + \boldsymbol{\mu}^T_2Σ^{-1}\boldsymbol{\mu}_2\bigr) + \ln\bigl(p(C_2)\bigr)\biggr) \end{array}\\ &= \begin{array}{l} σ\biggl((Σ^{-1}\boldsymbol{\mu}_1)^T\boldsymbol{x} - (Σ^{-1}\boldsymbol{\mu}_2)^T\boldsymbol{x}\\ \hfill - \frac{1}{2}\boldsymbol{\mu}_1Σ^{-1}\boldsymbol{\mu}_1 + \frac{1}{2}\boldsymbol{\mu}_2Σ^{-1}\boldsymbol{\mu}_2 + \ln \frac{p(C_1)}{p(C_2)}\biggr) \end{array}\\ &= σ\biggl(\bigl(Σ^{-1}(\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2)\bigr)\boldsymbol{x} - \frac{1}{2}\boldsymbol{\mu}_1Σ^{-1}\boldsymbol{\mu}_1 + \frac{1}{2}\boldsymbol{\mu}_2Σ^{-1}\boldsymbol{\mu}_2 + \ln \frac{p(C_1)}{p(C_2)}\biggr)\\ &= σ( \boldsymbol{w}^T\boldsymbol{x} + w_0)\\ &\bigl(※\boldsymbol{w} = Σ^{-1}(\boldsymbol{\mu}_1 - \boldsymbol{\mu}_2)\bigr)\\ &\bigl(※w_0 = - \frac{1}{2}\boldsymbol{\mu}_1Σ^{-1}\boldsymbol{\mu}_1 + \frac{1}{2}\boldsymbol{\mu}_2Σ^{-1}\boldsymbol{\mu}_2 + \ln \frac{p(C_1)}{p(C_2)}\bigr)\\ \end{split} \label{eq:bayes2_2} \end{align} $$

$ \eqref{eq:target_eq} $に出てきた線形関数がお目見えしましたね。 いい感じです。

ではこれを多クラスにも適用してみましょう。
とその前に、$ p(\boldsymbol{x}|C_k) p(C_k) $の対数をとったものを式変換しておきましょう。

$$ \begin{align} \begin{split} \ln p(\boldsymbol{x}|C_k) p(C_k) &= \ln\biggl(\frac{1}{(2\pi)^{\frac{D}{2}}} \frac{1}{|Σ|^{\frac{1}{2}}} \exp{\bigl\{-\frac{1}{2}(\boldsymbol{x} - \boldsymbol{\mu}_k)^TΣ^{-1}(\boldsymbol{x} - \boldsymbol{\mu}_k)\bigr\}} p(C_k)\biggr)\\ &= \begin{array}{l} \ln\biggl(\exp{\bigl\{-\frac{1}{2}(\boldsymbol{x} - \boldsymbol{\mu}_k)^TΣ^{-1}(\boldsymbol{x} - \boldsymbol{\mu}_k)\bigr\}} \biggr)\\ \hfill+ \ln\biggl(\frac{1}{(2\pi)^{\frac{D}{2}}} \frac{1}{|Σ|^{\frac{1}{2}}}\biggr) + \ln\biggl(p(C_k)\biggr) \end{array}\\ &= \bigl(-\frac{1}{2}(\boldsymbol{x} - \boldsymbol{\mu}_k)^TΣ^{-1}(\boldsymbol{x} - \boldsymbol{\mu}_k)\bigr) + \ln\bigl(N\bigr) + \ln\bigl(p(C_k)\bigr)\\ &\bigl(※N = \frac{1}{(2\pi)^{\frac{D}{2}}} \frac{1}{|Σ|^{\frac{1}{2}}}\bigr) \end{split} \label{eq:gaussian2} \end{align} $$

$ \eqref{eq:bayesk} $、$ \eqref{eq:gaussian}$、$ \eqref{eq:change1} $と$ \eqref{eq:change2} $、$ \eqref{eq:gaussian2} $より、 $$ \begin{align} \begin{split} p(C_k|\boldsymbol{x}) &= \frac{ \exp{\biggl(\ln{\bigl(p(\boldsymbol{x}|C_k) p(C_k)\bigr)}\biggr)} }{ \sum_j \exp{\biggl(\ln{\bigl(p(\boldsymbol{x}|C_j) p(C_j)\bigr)}\biggr)} }\\ &= \frac{ \exp\bigl\{\bigl(-\frac{1}{2}(\boldsymbol{x} - \boldsymbol{\mu}_k)^TΣ^{-1}(\boldsymbol{x} - \boldsymbol{\mu}_k)\bigr) + \ln\bigl(N\bigr) + \ln\bigl(p(C_k)\bigr)\bigr\} }{ \sum_j \exp\bigl\{\bigl(-\frac{1}{2}(\boldsymbol{x} - \boldsymbol{\mu}_j)^TΣ^{-1}(\boldsymbol{x} - \boldsymbol{\mu}_j)\bigr) + \ln\bigl(N\bigr) + \ln\bigl(p(C_j)\bigr)\bigr\} }\\ &= \frac{ \exp\bigl\{\bigl(-\frac{1}{2}(\boldsymbol{x} - \boldsymbol{\mu}_k)^TΣ^{-1}(\boldsymbol{x} - \boldsymbol{\mu}_k)\bigr) + \ln\bigl(p(C_k)\bigr)\bigr\} }{ \sum_j \exp\bigl\{\bigl(-\frac{1}{2}(\boldsymbol{x} - \boldsymbol{\mu}_j)^TΣ^{-1}(\boldsymbol{x} - \boldsymbol{\mu}_j)\bigr) + \ln\bigl(p(C_j)\bigr)\bigr\} }\\ &= \frac{ \exp\bigl\{\bigl(-\frac{1}{2}\boldsymbol{x}^TΣ^{-1}\boldsymbol{x} + (Σ^{-1}\boldsymbol{\mu}_k)^T\boldsymbol{x} - \frac{1}{2}\boldsymbol{\mu}^T_kΣ^{-1}\boldsymbol{\mu}_k + \ln p(C_k)\bigr\} }{ \sum_j \exp\bigl\{\bigl(-\frac{1}{2}\boldsymbol{x}^TΣ^{-1}\boldsymbol{x} + (Σ^{-1}\boldsymbol{\mu}_j)^T\boldsymbol{x} - \frac{1}{2}\boldsymbol{\mu}^T_jΣ^{-1}\boldsymbol{\mu}_j + \ln p(C_j)\bigr\} }\\ &= \frac{ \exp\bigl\{\bigl((Σ^{-1}\boldsymbol{\mu}_k)^T\boldsymbol{x} - \frac{1}{2}\boldsymbol{\mu}_kΣ^{-1}\boldsymbol{\mu}^T_k + \ln p(C_k)\bigr\} }{ \sum_j \exp\bigl\{\bigl((Σ^{-1}\boldsymbol{\mu}_j)^T\boldsymbol{x} - \frac{1}{2}\boldsymbol{\mu}_jΣ^{-1}\boldsymbol{\mu}^T_j + \ln p(C_j)\bigr\} }\\ &= \frac{ \exp\bigl\{\boldsymbol{w}^T_k\boldsymbol{x} + w_{k0}\bigr\} }{ \sum_j \exp\bigl\{\boldsymbol{w}^T_k\boldsymbol{x} + w_{k0}\bigr\} }\\ &\bigl(※w_k = Σ^{-1}\boldsymbol{\mu}_k\bigr)\\ &\bigl(※w_0 = - \frac{1}{2}\boldsymbol{\mu}_kΣ^{-1}\boldsymbol{\mu}^T_k + \ln p(C_k)\bigr) \end{split} \end{align} $$

多クラスの場合も同様に線形関数の式を得ることができました。
$w_k0 = 0$とすれば、$ \eqref{eq:target_eq} $と同じ式になることがわかるかと思います。

おわりに

今回、$ \eqref{eq:target_eq} $を得るために、 「すべてのクラスは同じ共分散行列を持つ」という条件を入れました。 もし共分散行列が、クラスごとに異なる場合、 途中の式変換において $\boldsymbol{x}^TΣ^{-1}\boldsymbol{x}$の項が消えずに残ります。
その場合は、今回得られた式ではなく、2次関数を持つ2次判別関数となることになります。

推測とはなりますが、その後のロジスティック回帰の解説でもロジスティックシグモイド関数を用いていることから、 一般的な仮定においても入力ベクトルの共分散行列は共有しても問題にはならないのですね。

とにもかくにも、これでやっとロジスティック回帰の話を読み進めることができそうです。