Courseraで機械学習を勉強する:ロジスティク回帰でどのようにパラメータを決定するのか
さて、ロジスティク回帰ではパラメータはΘである。Θはどのように求めるのだろう。
線形関数でコスト関数を定義した時は、誤差の二乗平均を使っていた。しかし、同じ計算方法をシグモイド関数に当てはめると、極小値が複数ある関数が出来上がってしまう。極小値が一つであれば、確実に最小のコストが求められ、そこで得られたパラメータは最適である。しかし、極小値が複数あるとそうはいかない。
そこで、logを使ったコスト関数を考える。もしy=1であるなら、コスト関数は
もしy=0であるなら、コスト関数は
とする。ここで、y=1のとき、h→0でコスト→∞になることに気を付ける。h(x)=0のとき、y=1になる、つまりΘの式が0以上になる場合、コストは無限大になる。そんなΘは全く適していないから、選ばないよう、コストが大きくなるのである。逆に、h(x)=1, y=1の場合、予測は的中し、そんな関数hを作り出すΘは選ばれるよう、コストが最小になるのである。
これを一つにしたのが、
そして、最善のΘは、
この関数、各データセットについてそれぞれ値を求め、足し合わせたもの、が最小になるΘである。このコスト関数を選ぶのは、統計学で効率的に見つけられるといわれているからである(最尤推定、さいゆうすいてい、と呼ばれる原理である)。
さて、ここから実際に計算をしていく。このコスト関数を最小化するためには、勾配降下法を使う。これは、あるパラメータから、そのパラメータで偏微分した値を引いていく。こうすれば、極小値から遠いときは大きく動き、極小値付近の傾きがほぼ0の時は少しずつパラメータが変動する。これを式で書くと
これを計算すると、
となる。ここで気を付けるのは、Θは多次元のパラメータで、ΘT=[Θ0, Θ1, ..., Θn]となっていて、上の式ですべてのパラメータを同時に更新していくのである。この式は一見、線形回帰で使う式と似ているが、そもそもhΘはロジスティック関数であるから、全く異なる。