ロジスティック回帰とは何か

ロジスティック回帰って有名なわりにインターネット上の解説を見ていると定義にブレがあるように思う。なんだか紛らわしいので英語版 WikipediaLogistic regression のページをもとに整理してみる。その後なぜ紛らわしいのか整理しようと思う。ただし本稿ではモデルの学習の話は扱わない。

ロジスティック回帰とは?

まずは、ロジスティック回帰の基本的な定義から整理する。

統計モデルがロジスティック回帰であるためには以下のすべてを満たす必要がある。

  • Binary regression の一種である。つまり統計モデルは、1つ以上の説明変数と1つのバイナリ型("0" or "1" を取る)の従属変数をもつ。
  • バイナリ型の従属変数が ベルヌーイ分布 に従うものとし、その変数が "1" を取る確率を求める。その確率は、説明変数を線型結合したものに対して ロジスティック関数 を適用したものである。

たぶん要件はこれだけである。シンプル。もう悩まないぞ。

ロジスティック回帰の統計モデルの例を数式で書いてみる。まずロジスティック関数を \sigma(t) とする。また説明変数を2つだけとして x_1, x_2 とし、これらの線型結合を w_0 + w_1 x_1 + w_2 x_2 とする。従属変数を Y として、これが "1" を取る確率 P(Y = \text{"1"}) を以下のようにモデル化する。

P(Y = \text{"1"}) = \sigma(w_0 + w_1 x_1 + w_2 x_2)

見てのとおりシンプルな構造である。説明変数を線型結合すると任意の実数になってしまうが、それをロジスティック関数 \sigma によって 0 と 1 の間の値、つまり確率に変換しているのがポイント。

あとは学習によっていい感じのパラメータ w_0, w_1, w_2 を求めることになる。この最適化計算は世の中のライブラリを使えば勝手にやってくれる。

なにが紛らわしいのか?

こんなシンプルなロジスティック回帰だけどなんだか紛らわしい印象を受ける。その原因を列挙してみる。

「ロジスティック回帰は分類のためのものである」

書籍「仕事ではじめる機械学習」にこんな文言がある。厳密にはこれは誤りだろう。ロジスティック回帰で推定するのはあくまで確率であって所属するクラスではない。つまり、あくまで回帰であって分類ではない。

もちろん、推定した確率に対してクラスの境界値(cutoff value)を設定すれば、境界値より大きいか小さいかを判断することで即座に二値分類器(binary classifier)になる。にしても「ロジスティック回帰という命名自体が誤り」みたいな印象を与えるとかえって理解しづらくなるだろう。

シグモイド関数はロジスティック関数の一種である」

同じく書籍「仕事ではじめる機械学習」にこんな文言がある。世の中の他の解説にも同じような文言が見られる。要するに「ロジスティック回帰」と「シグモイド関数」の関係が紛らわしい問題。

ハッキリ言ってこの文言は誤りである。逆の「ロジスティック関数はシグモイド関数の一種である」は正しいだろう。WikipediaSigmoid function のページによると、シグモイド関数はシグモイドカーブと呼ばれる S 字の曲線をもつ関数の総称である。ロジスティック関数はその代表例である。

そして、ロジスティック回帰の要件はロジスティック関数を用いることである。その他のシグモイド関数を用いた回帰手法には別の名前が付いている。たとえば Probit model がその例である。

つまるところ、ロジスティック回帰の説明にシグモイド関数は不要である。ロジスティック関数の別名を「シグモイド関数」としている解説もあるがややこしいので望ましくない。チワワの飼い方を説明するときに「この動物(チワワ)は犬と呼ばれている」と言うくらいややこしい。

オッズ比の話

ロジスティック回帰の説明によくオッズ比の話が出てくる。オッズ比はロジスティック関数を使う背景であって、初学者はいったん無視してよい話だと思われる。むしろオッズ比から変形して回帰モデルの式に変形する過程を見せてしまうと「ロジスティック回帰をやるにはこんな式変形が必要なんだ」という誤解を与えかねない。まずはロジスティック関数という "公式" を知ってもらって、その導出としてオッズ比の話を扱いたい。余談だが、高校物理の授業は導出から入って公式にたどり着くスタイルだった。一方で、大学の数学の授業は先に定理を示してから証明するスタイルだった。たぶん多くの人にとって、目標の見えやすい後者のスタイルがよいのではないかなぁ。

ちなみに オッズ比 とは確率 p に対して  p/ (1- p) の値である。オッズ比の log の値をとったものが ロジット である。そしてロジットの逆関数がロジスティック関数である。つまり、ロジスティック関数を使うことでオッズ比を考慮したモデル化をしていることになる。

多クラス分類への拡張

通常のロジスティック回帰は従属変数が二値を取るものとしてモデル化を行う。n 値を取るロジスティックモデルは Multinomial logistic regression と呼ばれる。これらが異なるものであることは理解したい。

ニューラルネットワークとの関係

ロジスティック回帰は ニューラルネットワーク の一種であると言える。具体的には、説明変数の数のユニットからなる入力層と、1つのユニットからなる出力層をもつニューラルネットワークである。中間層は存在しない。そして活性化関数がロジスティック関数である。

近年、とりあえずニューラルネットワークだけ勉強した人は多そうなので、ロジスティック回帰がとてもシンプルなニューラルネットワークであると言われるとピンとくる人も多いのではないか。ロジスティック回帰の多クラス分類への拡張方法もニューラルネットワークによる分類のやり方と同じはず。

ちなみに、中間層のないニューラルネットワーク単純パーセプトロン と呼ばれる。しかし、一般的な単純パーセプトロンでは活性化関数として 0 or 1 を返す ステップ関数 が用いられるらしく、その点でロジスティック回帰とは異なる。もちろん、活性化関数をロジスティック関数とした単純パーセプトロンはロジスティック回帰とまったく同じものである。

おしまい。