最尤法による一般化線形モデルのパラメータ推論
【概要】
- 一般化線形モデル(ロジスティック回帰、ポアソン回帰)のパラメータ推論を最尤法を使って実装してみます
- 確率モデルとして考えることで統一した考え方ができます(わざわざ「〇〇回帰」みたいな名称を覚える必要ない)
【目次】
はじめに
「一般化線形モデル」の実用例として頻繁に使われる(と思う)ロジスティック回帰とポアソン回帰のパラメータを最尤法によって推論してみます。「ロジスティック回帰」、「ポアソン回帰」のようにそれぞれ名前が付いているように思いますが、これらは確率モデルの一つです。確率モデルとして考えれば統一したアプローチでモデルの推論ができます。
本記事は以下のセミナーで話した内容を整理したものです。
liberal-arts-for-tech.connpass.com
次回はこちらです。
liberal-arts-for-tech.connpass.com
なおここでの話題は、こちらのテキストで取り扱っています(宣伝)。
統計モデリング
「統計モデリング」とは、データの構造を確率分布を組み合わせて表現する活動だと理解しています。そして、確率分布を組み合わせて構築するモデルのことは「確率モデル」と呼ぶことが多いと思います。(解釈が間違っているかも。間違っていたらご指摘お願いします。)
例えば、私が趣味でやっているもう一つのブログ「チョコボール統計」では、エンゼルの出現有無というデータをベルヌーイ分布に従うと仮定し、データからそのパラメータを推論しています。
他にも、線形関数にガウスノイズが乗っていると考える「線形回帰*1」などがよく使われると思います。
一般化線形モデル
あくまで説明上の都合ですが、”一般化”ではない「線形モデル」は次のような確率モデルです。
変数がガウス分布に従い、ガウス分布のパラメータが重みベクトルと変数の線型結合になっているモデルです。
次に、「一般化線形モデル」では、変数が従う分布がガウス分布以外にも様々な分布になり得ます。「一般化」とはこれだけです。 例えば、あるイベントが発生するかしないかといった2値のデータを扱う場合には、ベルヌーイ分布に従うと仮定します。ベルヌーイ分布のパラメータはイベントの発生確率なので、0~1の実数です。上記の「線形モデル」のようにとの線型結合とすると0~1の範囲を超えてしまう可能性があるので、ロジスティック・シグモイド関数をかけるような調整を行います。これが「ロジスティック回帰」と呼ばれているものです。
ということで、「一般化線形モデル」のように名称がついていますが、あくまでも確率モデルです。確率変数がどのような分布に従うと仮定するか?、その分布のパラメータの定義域は?を考えればわざわざ名前を付けて別に扱う必要ないです*2。
最尤法
確率モデルの未知のパラメータを推論するための考え方として、尤度を基準にしてパラメータを推論する手法がよく使われます。
尤度というのは、データと確率モデルがどの程度フィットしているかを測るための指標です。データに対しての同時確率で表現されます。
ここで、は確率モデルのパラメータであり、変数xの関数です。 先にあげたチョコボールの例では、xは無く常に一定のパラメータと考えています。線形回帰モデルの場合はのような関数が使われます。ここで、がデータから求めたい未知のパラメータです。
なお、上式のように同時確率を総積で表現できるのは、独立同分布(i.i.d.)を仮定しているためです。つまり、データの順番は関係ないということです。時系列データのように順番に依存する場合はこのようには書けません。
尤度は推論対象のパラメータの関数です。尤度が高いほどデータとモデルがフィットしているので、尤度が最も大きくなるようにパラメータを調整してやるのが「最尤推定」という考え方になります。
最大値を求めるということでについて微分して0となるを導出すれば良いと考えると思いますが、後述のように活性化関数として非線形な関数を使っており解析解が導出できないケースがあります。そこで、勾配法などの探索的なアルゴリズムによってパラメータを推論します。
勾配法とは、誤差関数(対数尤度の符号反転)の微分に基づいて、少しずつパラメータを最適値に近づけていこうとする方法です。手順としては次のようになります。
- 尤度関数を定義する
- 誤差関数を定義する
- は負の対数尤度
- を最大化する
- の微分を算出
- に小さい係数(学習係数:)を掛けてパラメータを更新する
手順4を何度も繰り返し、パラメータを更新します。
ロジスティック回帰
ロジスティック回帰は、二値変数を予測するモデルです。の出現確率をとし、は変数に依存する構造になります。確率を回帰しているモデルと見做せます。
例えば、二値変数としてWebのバナー広告がクリックされるか否かを考えてみます。「クリック」というイベントが発生する確率をとしますが、広告の商材を扱うWebサイトを何日前に訪れたかといった変数に依存しては変わるのではないか?と考えられます。このような関係をモデリングするのに、ロジスティック回帰はよく使われると思います。実際はとして多変量の値が用いられることが多いですね。
モデル
なので、が従う確率分布としてベルヌーイ分布を考えます。ベルヌーイ分布のパラメータを変数とパラメータの線形結合で予測します。ここで、は確率なので0~1の範囲に収まっている必要があります。なので、ロジスティック・シグモイド関数で0~1の範囲に収めてしまいます。
ここで、は重みベクトルで、ここではの二次元ベクトルとします。はとします。つまり、という線形回帰の式になります*3。
ちなみに、一般化線形モデルの説明でよく出てくるリンク関数というのは、上記のの式を変形することで現れます。ロジスティック回帰の場合は下式の通り、ロジット関数になります。
このようになるのですが、私としては「リンク関数」を考えるよりも、パラメータを確率モデルに合うように押し込めるための変換と考えた方がわかりやすい気がします。このような見方は「活性化関数」という表現をされることが多いです。
パラメータ推論
先に説明した勾配法を使ってパラメータを推論します。
まずは、勾配を求めるために、誤差関数を定義します。誤差関数は、負の対数尤度ですので以下の通りです。
ということでクロスエントロピーが出てきました。
あとはこれをパラメータについて微分すれば良いです。微分の結果は以下のようになります。
ということで、ここで出てきた勾配に基づいて、パラメータを更新していけば良いわけです。
モデルの定義と勾配の導出までの手書きメモを貼っておきます。汚い字なので読めないかも。
実装
勾配が計算できればあとは単純にパラメータを更新していくだけです。具体的な実装については、下記のnotebookを参照ください。
先に挙げたサンプルデータを推論した結果は以下のようになりました。真の関数をかなり忠実に推論できています。
学習曲線はこんな感じです。
ポアソン回帰
ポアソン回帰は、0を含んだ正の整数()を予測するモデルです。後述の通りyはポアソン分布に従うとします。ポアソン分布のパラメータはyの平均なので、平均がに依存する構造になります。 yはイベントの発生回数などカウント系のデータです。
例えば、かき氷の販売数をとして、気温をとして気温とかき氷の販売数の関係をモデリングするような応用が考えられます*4。
モデル
は0を含んだ正の整数、つまり、カウント系のデータですので、が従う確率分布としてポアソン分布を考えます。ポアソン分布のパラメータは上記の通り平均です。が変数に依存するとして、重みとの線型結合で予測をします。ここで、は平均回数ということなので、0以上の実数であることが必要です。そこで、指数関数に押し込めてしまいましょうというのがポアソン回帰です。
は先のロジスティック回帰と同じです。
パラメータ推論
ロジスティック回帰と同様に、勾配を求めます。
誤差関数として、負の対数尤度を求めます。
これをパラメータについて微分します。微分した結果は次の通りです。
モデルの定義と勾配の導出までの手書きメモを貼っておきます。汚い字なので読めないかも。
実装
勾配が計算できたのであとはロジスティック回帰と同様にパラメータを更新していきます。具体的な実装については、下記のnotebookを参照ください。
先に挙げたサンプルデータを推論した結果は以下のようになりました。真の関数をかなり忠実に推論できています。
学習曲線はこんな感じです。
ポアソン回帰ですが、学習率にだいぶシビアだったんですけど、こんなもんなんでしたっけ?間違ってないか不安。。。
実装(jupyter notebook)
まとめ
ということで今回は、実務でもよく使われる(と思う)、ロジスティック回帰とポアソン回帰のパラメータ推論を勾配法を使って推論するコードをスクラッチで書いてみました。
実務上は、ロジスティック回帰もポアソン回帰もライブラリが提供されているので*5、こうやって勾配法を使って書いていくような必要は一切ありません。というか実行速度やバグを考えると実務上は書かないほうが良いです。あくまでも理解のためということで。
参考文献
- 須山敦志, 機械学習スタートアップシリーズ ベイズ推論による機械学習 入門, 講談社, 2017
- 「ベイズ推論」についての本ですが、確率モデルの考え方がしっかり書かれているので、最尤法を使うにしても一読をお勧めします。
機械学習スタートアップシリーズ ベイズ推論による機械学習入門 (KS情報科学専門書)
- 作者:須山 敦志
- 発売日: 2017/10/21
- メディア: 単行本(ソフトカバー)
- 作者:C.M. ビショップ
- 発売日: 2012/04/05
- メディア: 単行本(ソフトカバー)
- 久保拓弥, データ解析のための統計モデリング入門, 2012
- 「一般化線形モデル」についての入門書。上記の書籍が難しいと感じるなら、こちらを事前に読んでおくと理解が進むかも。
データ解析のための統計モデリング入門――一般化線形モデル・階層ベイズモデル・MCMC (確率と情報の科学)
- 作者:久保 拓弥
- 発売日: 2012/05/19
- メディア: 単行本