機械学習 はじめよう

第18回 ロジスティック回帰

この記事を読むのに必要な時間:およそ 2 分

ロジスティック回帰

先ほどの仮定から出発して,確率的な分類モデルを構築してみましょう。

定式化のために,データ点xの分類を表す2値の確率変数をCとおきます。例えば問題がスパム判定なら,Cは「メールxがスパム(C=1)か,スパムではない(C=0)か」という確率変数になります。

パーセプトロンでは分類の値を正と負で表現しましたが,これから紹介するロジスティック回帰では1と0を使うほうが都合いいため,Cの値も同じく1または0とします。

この確率変数Cを使うと,先ほどの仮定は「xについてC=1となる確率となる確率はσ(f(x))」と言い換えられます。これを式で記述します。

C=0となる確率は足して1になることから次のように記述できます。

Cの値が1の場合と0の場合に分けるこの表し方は,わかりやすいのですが,代入して使うときには不便で困ります。

そこで,Cの取り得る値tが0か1しかないことをうまく利用して,次のように1つの式で記述することにします。

すこし長くてややこしいですね。簡単のためy=σ(wTφ(x))とおいて,次のように書き直しておきます。

これはt=1のとき,後半は0乗になって消え,前半のyのみ残ります。t=0のときは,前半が0乗になって後半の1-yのみ残ります。場合分けがうまくまとまっていますね。

この式を使えば,パラメータwを最尤推定するための尤度関数を表現できるようになります。

X={(xn,tn)}をデータ点xnが正解tnを持つデータセットとし,xnに対応するyn=σ(wTφ(xn))も同様に考えると,尤度関数L(w)は次のようになります。

尤度関数の最適化

最尤推定とは実際に観測されたデータが確率最大となるようにパラメータを決める,つまりL(w)が最大となるwを見つけることです。

機械学習の周辺では,関数の最小点(または最大点)を求めることを「最適化」というのでしたね。特に連載第16回ではその最適化手法の一つとして「確率的勾配降下法」を紹介しました。この「確率的勾配降下法」でロジスティック回帰モデルを解いてみることにしましょう。

そのためにはまず,最小化(または最大化)したい目的関数を微分して「勾配」を得る必要があります。

ところが,尤度関数は「複数ある観測データのすべてが起こる確率」であるため,L(w)も実際そうであるように,その形は確率(予測分布関数)のかけ算になります。かけ算した関数は微分してその「勾配」を求めるのも一苦労です。

「かけ算した形になる」ことがあらかじめわかっているなら,対数を取って足し算に変えてしまいましょう。都合のいいことに対数は単調増加関数なので,対数をとっても大小関係は変化しない,つまり最小点(または最大点)は変わらないことが保証されます。

ところで「⁠⁠または最大点⁠⁠」といちいち但し書きをするのはめんどくさいですよね。

実は「最適化」と特に断りなく言った場合は最小化を指すことが多いです。最大化したい尤度関数も符号を反転しておけば,最小化で考えることができます。

その2つをあわせて,最尤推定の一般的なアプローチは「負の対数尤度関数の最適化」になります。

ロジスティック回帰モデルの負の対数尤度関数は次のようになります。

目的関数が足し算になりました。これなら勾配も求めやすそうです。

次回は実際に勾配を計算して,確率的勾配降下法の更新式を導出してみましょう。

著者プロフィール

中谷秀洋(なかたにしゅうよう)

サイボウズ・ラボ(株)にてWebアプリ連携や自然言語処理を中心に研究開発を行いながら,英単語タイピングゲーム iVocaをサービス提供している。

URLhttp://d.hatena.ne.jp/n_shuyo/
Twitterhttp://twitter.com/shuyo