目的関数(Cost Function)
今回は目的関数(Cost Function)をやります。最適化問題、目的関数(Cost Function)
データに対して関数を定義し、その関数の最小または最大を求める問題を最適化問題といいます。そして、その関数を目的関数(Cost Function)といいます。
線形回帰で出てきた最小二乗法の式も目的関数です。
\( h_\theta (x) = \theta_0 + \theta_1 * x \)
\(J(\theta_0, \theta_1) = \frac{1}{2m}\sum_{i=1}^m(h_\theta (x_i) - y_i)^2 \)
→\(J(\theta_0, \theta_1)\)が最小になるように\( \theta_0 、 \theta_1 \)を求めます。
ロジスティック回帰の目的関数
線形回帰の目的関数は上記の式でしたが、ロジスティック回帰の目的関数は以下のようになります。\( h_\theta(x)=\dfrac{1}{1+e^{-(\theta_0 + \theta_1 * x )}}\ \)
\(J(\theta_0, \theta_1) = - \frac{1}{m} [ \sum_{i=1}^m y_i log(h_\theta (x_i)) + (1 - y_i) log(1 - h_\theta (x_i))] \)
→\(J(\theta_0, \theta_1)\)が最小になるように\( \theta_0 、 \theta_1 \)を求めます。
log関数
2を3乗すると8になります。このときの3を指数と言います。\(2^3 = 8\)
逆に2をなんとか乗すると8になる場合、以下のように表します。
\( log_2 8 = 3 \)
上記の式は2を底とする8の対数は3ということを表しています。
対数を表すときにlog関数を使用します。
ネイピア数
底にe(≒2.716...)を使用する対数を、自然対数といいます。このeをネイピア数と言います。\( log_e x\)
ネイピア数、\(e^x\)を微分しても\(e^x\))という特徴があったり、
\( log_ex\)を微分すると\(\frac{1}{x}\)になるといった特徴があります。
eは省略されて、以下のようにLogの後にいきなり数値が記述されていることがあります。
\( log x\)
省略されている場合、必ず自然対数という訳でもなく、常用対数(底が10)も底が省略されることがあるので注意が必要です。
ロジスティック回帰の目的関数の構成
ロジスティック回帰の目的関数は複雑に見えますが、yの値(0 or 1)により前半と後半の2つに分けて考えることができます。
(ロジスティック回帰の学習データ:yはYes、Noのどちらかなので、0 か 1 にしかなりません。)
\(y_i=1\)の場合、後半部分の、\((1 - y_i)\)は 1 - 1 なので0になり、\(0 * log(1 - h_\theta (x_i))\)
なので、後半部分はなくなって以下のようになります。
\(J(\theta_0, \theta_1) = - \frac{1}{m} [ \sum_{i=1}^m 1 * log(h_\theta (x_i)) + (1 - 1) * log(1 - h_\theta (x_i))] = - \frac{1}{m} [ \sum_{i=1}^m log(h_\theta (x_i))] \)
これをシグマ記号(Σ)を抜かしてグラフに表すと以下のようになります。
logのグラフなのでこのような形になって、式の頭にマイナスが付いているので上と下が逆になります。
実績データの結果が1(y=1)のグラフ
実績がy=1なので、予想の結果も1であれば差異はない状態(コストが0)で、逆に実績がy=1で予想が0に近ければ、近いだけコストが掛かります。
次に\(y_i=0\)の場合、前半部分の\( y_i\)は 0になり、\(0 * log(h_\theta (x_i))\)
なので、前半部分はなくなって以下のようになります。
\(J(\theta_0, \theta_1) = - \frac{1}{m} [ \sum_{i=1}^m 0 * log(h_\theta (x_i)) + (1 - 0) * log(1 - h_\theta (x_i))] = - \frac{1}{m} [ \sum_{i=1}^m log(1 - h_\theta (x_i))] \)
実績データの結果が0(y=0)のグラフ
実績がy=0なので、予想の結果も0であれば差異はない状態(コストが0)で、逆に実績がy=0で予想が1に近ければ、近いだけコストが掛かります。
ページのトップへ戻る