機械学習に詳しくなりたいブログ

機械学習や数学について勉強した内容を中心に書きます。100%趣味です。記事は数学的に厳密でなかったり誤りを含んでいるかもしれません。ご指摘頂ければ幸いです。

ロジスティック回帰

まずは、確率的生成モデル(1)確率的生成モデル(2)で書いたことのおさらいです。

2クラスの問題を考えます。データ\mathbf{x}が与えられたとき、それがクラスC_1に属する確率は、


\displaystyle a = \ln \frac{P(\mathbf{x}|C_{1})P(C_{1})}{P(\mathbf{x}|C_{2})P(C_{2})} \tag{1}

として、


P(C_{1}|\mathbf{x}) = \sigma(a) \tag{2}

と書けました。また、aはデータ\mathbf{x}の生起確率が指数型分布族で表せるとき、a=\mathbf{w}^{T}\mathbf{x}と書けました。よって、


\begin{eqnarray}
P(C_{1}|\mathbf{x}) &=& \sigma(\mathbf{w}^{T}\mathbf{x}) \tag{3} \\
P(C_{2}|\mathbf{x}) &=& 1 - \sigma(\mathbf{w}^{T}\mathbf{x}) \tag{4}
\end{eqnarray}

です。式(3)、(4)を使ったモデルをロジスティック回帰と呼びます。回帰という名称ですが、分類のためのモデルです。

さて、ここからが本題です。今回は最尤推定により最適なパラメータ\mathbf{w}を求めていきます。式(3)、(4)は、正解ラベルをt\in \{0,1\} とすれば


\sigma(\mathbf{w}^{T}\mathbf{x})^{t_n}(1-\sigma(\mathbf{w}^{T}\mathbf{x}))^{1-t_n} \tag{5}

と、まとめて書けます。式(3)~(5)のシグモイド関数の出力は確率と解釈することができました。(参考:確率的生成モデル(2)) したがって、訓練データ(\mathbf{x}_1, \cdots , \mathbf{x}_N )(t_1, \cdots , t_N )が与えられたとき、尤度関数は


\displaystyle L(\mathbf{w}) = \prod_{n=1}^{N}\sigma(\mathbf{w}^{T}\mathbf{x}_n)^{t_n}(1-\sigma(\mathbf{w}^{T}\mathbf{x}_n))^{1-t_n} \tag{6}

となり、これを最大化する\mathbf{w}が求める解です。(尤度について参考:線形回帰を最尤推定で解く(尤度とは?)y_n=\sigma(\mathbf{w}^{T}\mathbf{x}_n)とし、積の計算を簡単にするためにL(\mathbf{w})の対数をとれば、


\begin{eqnarray*}
\displaystyle \ln L(\mathbf{w}) &=& \sum_{n=1}^{N} \ln y_n^{t_n}(1-y_n)^{1-t_n} \tag{7} \\
&=& \sum_{n=1}^{N} \left\{ t_n \ln y_n + (1-t_n)\ln(1-y_n) \right\} \tag{8}
\end{eqnarray*}

となります。ここでE(\mathbf{w}) = - \ln L(\mathbf{w})と定義すれば、求める解\mathbf{w}は、E(\mathbf{w})を最小にする\mathbf{w}です。なおE(\mathbf{w})は交差エントロピー誤差関数と呼びます。名前はどうでもいいですが、E(\mathbf{w})の最小値はシグモイド関数が入っていて解析的に求められません。そこで勾配法などのアルゴリズムを使うため、偏微分係数を求めます。y_n = \sigma(\mathbf{w}^{T}\mathbf{x}_n)=\sigma(g(\mathbf{w}))とすれば、合成関数の微分とシグモイド関数の微分より、


\begin{eqnarray*}
\displaystyle \frac{\partial E(\mathbf{w})}{\partial \mathbf{w}} &=& \frac{\partial E(\mathbf{w})}{\partial y} \frac{\partial y}{\partial g} \frac{\partial g}{\partial \mathbf{w}} \tag{9} \\
&=& -\sum_{n=1}^{N} \left[  \frac{t_n}{y_n} y_n(1-y_n)\mathbf{x}_n + \frac{1-t_n}{1-y_n}\left\{ -y_n(1-y_n) \right\} \mathbf{x}_n \right] \tag{10} \\
&=&  -\sum_{n=1}^{N} \left\{ t_n(1-y_n)\mathbf{x}_n - (1-t_n)y_n\mathbf{x}_n \right\} \tag{11} \\
&=&  -\sum_{n=1}^{N} ( t_n \mathbf{x}_n - t_n y_n \mathbf{x}_n  -y_n \mathbf{x}_n + t_n y_n \mathbf{x}_n ) \tag{12} \\
&=& \sum_{n=1}^{N}(y_n - t_n)\mathbf{x}_n \tag{13}
\end{eqnarray*}

となります。非常にすっきりとした形になりました。さて、これを用いて最急降下法により解を求めることができますが、最急降下法よりも効率の良いニュートン法というアルゴリズムを使うため、次はヘッセ行列を求めます。→ロジスティック回帰における交差エントロピー誤差のヘッセ行列

最終的な実験結果:ロジスティック回帰を最急降下法とニュートン法で解く

参考: * ニュートン法(多変数の場合) * ベクトルをベクトルで微分の定義とヘッセ行列