目的
このページは強化学習を勉強していて出てきたロジスティック回帰って何?!に対して答えるのと同時に以下の問いに答えられるようになることを目的としている.
- ロジスティック回帰ってどういうもの?
- 確率の話に微分が出てくるのはなんで?
- ロジスティック回帰のモデルでなんで線形モデルの話が出てくるの?
このあたりがなんとなくわかるようになればいいかなと思って書いた.文章をである張で書いているのは,なんとなくそっちの方が数学やってる気がしていいと思ったからである.
基本的にはWikipediaの該当ページをまとめたものなので,内容的に超正確かどうかはさておき,概要は掴めるといいなと思う.
Cumulative distribution function(累積分布関数)
The cumulatve distribution function of a real-valued random variable X is the function given by $F_X(x) = P(X\leq x)$
これは任意の確率変数 $X$ の実測値が $x$ 以下になる確率を表した関数である.これを用いることによって確率変数の実測値がある範囲内 $a < X \leq b$ にある確率を以下のように表せる:
P(a < X \leq b) = F_X(b) - F_X(a)
累積分布関数は確率密度関数の面積になっているといえるので,その変化量がそのまま確率密度関数になることは明白である.すなわち $F(X)$ を累積密度関数,$f(x)$を確率密度関数としてあらわすと以下の式が成り立つ.
f(x) = \frac{dF(x)}{dx}
Quantile function (分位関数)
In probability and statistics, a probability distribution's quantile function is the inverse of its cumulative distribution function.
そもそも確率密度関数というのは平たく言えばある実数空間 $\mathbb{R}$ を閉区間 $[0,1]$ に変換する写像であると言える(この言い方があっているかどうかはわからないけどイメージとして).その逆を行うのが分位関数であると認識できる(つまり閉区間 $[0,1]$ から 実数空間 $\mathbb{R}$ への写像).
ここで累積分布関数が単調増加するような関数だった場合(通常の確率分布について扱う場合はこの場合になる)
\begin{align}
F_X(x) &\equiv Pr(X \leq x) = p \\
Q(p) &= F^{-1}_X(p)
\end{align}
この $Q(p)$ が分位関数である.ここで $p$ は確率変数 $X$ が任意の値 $x$ 以下になる確率を表している.口語的に表すと以下のような意味合いになる.
- $F_X(x)$:ある確率変数 $X$ が任意の値 $x$ 以下になる確率は?
- $Q(p)$:確率 $p$ で確率変数 $X$ は何以下になる?
このとき先にも述べたように累積分布関数が単調増加する必要がある.なぜなら単調増加でない場合は分位関数の解は複数になってしまうからである.そのため一般化されたものでは以下のように定義される:
\begin{align}
Q(p) &= [ \sup\{x:F(x) < p\}, \sup\{x:F(x)\leq p\}] \\
Q(p) &= \inf \{x\in \mathbb{R}:p\leq F(x)\}
\end{align}
つまり確率 $p$ で確率変数 $X$ が何以下になるかを表す値のうち,最も大きいものを大きいものをピックアップしてくれということである.
Logistic distribution (ロジスティック分布)
Odds (オッズ)
In propability theor, odds provide a measure of the probability of the particular outcome.
オッズはギャンブル等を嗜んでるなら聞き覚えのあるもの.これは基本的にはオッズ比として表現されるが数学においては分数として取り扱われることもある.概念的なことなので具体例を見て頭の中で一般化した方がわかりやすい.
$W:L$ としてオッズ比を与えた場合,有利な確率 (Odds in favor) $o_f$ と不利な確率 (Odds against) $o_a$ は以下のように表される.
\begin{align}
o_f = \frac{W}{L} = \frac{1}{o_a} \\
o_a = \frac{L}{W} = \frac{1}{o_f} \\
o_f \cdot o_a = 1
\end{align}
Logit (ロジット)
If $p$ is a probability, then $\frac{p}{1-p}$ is the corresponding odds, the logit of the probability is a logarithm of the odds.
ロジットはオッズのログをとったもの.
logit(p) = \ln\frac{p}{1-p} = \ln(p)-\ln(1-p) = 2atanh(2p-1)
これは基本的に情報量の定義にほぼ等しく,例えば $2$ を底としてとるとシャノンエントロピーになるし,$e$ を底としてとると nit という自然情報量の単位になる.
Logistic function (ロジスティック関数)
A logistic function or logistic curve is a common S-shape curve (sigmoid curve) with the equation:
f(x) = \frac{L}{1+e^{-k(x-x_0)}}
$L$ is the carrying capacity, the supremum of the values of the function;
$k$ is the logistic growth rate, the steepness of the curve; and
$x_0$ is the $x$ value of the function's midpoint.
これは $0\sim L$ をとるシグモイド曲線である.例えば $L=1, k=1, x_0=0$ のときは曲線の形は以下の図のような形.
数学的特徴としてロジスティック関数の逆関数は上述したロジットである.一応証明というか逆関数であることの証を以下に示す.
\begin{align}
logit(p) &= \ln \frac{p}{1-p},\ (0<p<1)\\
e^{logit(p)} &= \frac{p}{1-p} \\
(1-p)e^{logit(p)} &= p \\
e^{logit(p)}-p\cdot e^{logit(p)} &= p \\
e^{logit(p)} &= p(1+e^{logit(p)}) \\
p &= \frac{e^{logit(p)}}{1+e^{logit(p)}} \\
&= \frac{1}{1+e^{-logit(p)}}
\end{align}
もともとは人口増加モデルとして提唱されたもので以下の3つの特徴を持っているから選ばれたとされている.
- 増加初期は指数関数的に増加 (geometric)
- 飽和し始めると増加率が減少し線形に近づく (arithmetic)
- 成熟すると指数関数を逆にしたように増加がなくなる
この関数において $p$ が $0\sim 1$ を取る場合,この関数は累積分布関数として使用できることを表している.
Logistic distribution (ロジスティック分布)
In probability theory and statistics, the logistic distribution is a continuous probability distribution. Its cumulative distribution function is the logistic function, which appear in logistic regression and feedforward neural networks.
ロジスティック分布は一言で言えばロジスティック関数の偏微分である.確率分布は累積分布関数の微分系であるという話は前述した通りであり,ロジスティック関数において $L=1$ として累積分布関数とみなした場合,その微分系である確率密度関数がこのロジスティック分布である.
ロジスティック分布は確率密度関数として用いるため,ロジスティック関数の各パラメータに意味をもたせ,累積分布関数を以下のように定義している(ただし $L=1$ を前提としなければ確率として成立しないため,それだけは固定値である).
\begin{align}
F(x; \mu, s) = \frac{1}{1+e^{-\frac{(x-\mu)}{s}}}
\end{align}
このとき $\mu = x_0$,$s = \frac{1}{k}$ としてそれぞれを平均,および標準偏差に比例するパラメータとして解釈される.
ロジスティック分布はこの累積分布関数の出力に対する偏微分($x$ に関して偏微分した形)である.偏微分に関しては累乗の微分公式 $((f(x))^n)' = n(f(x))^{n-1}f'(x)$ を用いると算出できた.
\begin{align}
f(x;\mu,s) = \frac{\partial F(x;\mu,s)}{\partial x} = \frac{e^{-\frac{(x-\mu)}{s}}}{s(1+e^{-\frac{(x-\mu)}{s}})^2}
\end{align}
Logistic regression (ロジスティック回帰)
The goal of logistic regression is to use the dataset to create the predictive model of the outcome variable.
ロジスティック回帰の目的は既存のデータセットからその要因をもとに結果の発生確率を求めるための手法.定義を確認するよりも具体例を通してどういう操作を行なっているのかをみた方が理解が早い.
具体例
具体例の内容は Wikipedia のものを使用.そのページ見ればいいじゃんというのは言う通りだが私はあまり英語が得意ではないのでできれば日本語でまとめておきたかったのでそこは許容してほしい.
20人の生徒が0~6時間の勉強をして試験に臨んだ.各生徒の勉強時間と試験結果(不合格か合格)は以下の表に記されている.このときどの程度勉強をすると,どの程度の確率で試験に合格できるかを予測せよ.
| Hours $(x_k)$ | 0.50 | 0.75 | 1.00 | 1.25 | 1.50 | 1.75 | 1.75 | 2.00 | 2.25 | 2.50 | 2.75 | 3.00 | 3.25 | 3.50 | 4.00 | 4.25 | 4.50 | 4.75 | 5.00 | 5.50 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Pass $(y_k)$ | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
このようなデータセットが与えられたときに,その要因(Hours)をもとに結果(Pass)の発生確率を求めることができるモデルを導き出す.これがロジスティック回帰分析の目的である.そしてそのときに使用するモデルがロジスティック関数である場合ロジスティック回帰と言える.
もう一度復習するがロジスティック関数は以下の関数である.
p(x)=\frac{1}{1+e^{-\frac{(x-\mu)}{s}}}
このとき直接的に $\mu$ と $s$ を出すのではなく,この値 $\frac{(x-\mu)}{s}$ が独立変数 $x$ に従っていると考え,それを線形モデルとして表すことでパラメータ推定を可能にしている.つまり回帰すべきモデルは以下のようになる.
p(x)=\frac{1}{1+e^{-(\beta_0+\beta_1 x)}}
このようにすることで $\beta_0 = -\frac{\mu}{s}$,$\beta_1 = \frac{1}{s}$ となるので,間接的に求めることができると言うわけである.
loss (損失)
一発で上述したようなパラメータが求められるわけではなく,ちゃんと段階を踏んでいかいないと行けない.そこで導入されるのが損失という概念.これは選択したパラメータがどのぐらいデータにフィットしているか (goodness of fit) を求めるためのものである.ロジスティック回帰では以下のような損失を用いる.
l_k = - y_k \ln p_k - (1 - y_k) \ln (1 - p_k)
ここで $y_k$ は先の表の出力値,$p_k$ は現状のモデルにおける成功(Pass)の発生確率の予測値.そのためこの指標は
- 成功のとき $(y_k = 1)$ の対数尤度 $-\ln p_k$ と
- 失敗のとき $(y_k = 0)$ の対数尤度 $-\ln (1-p_k)$
を加算したものである.これがデータセットに含まれる点分あるので,全ての総和は以下のようになる.
l = \sum^K_{k=1} (y_k \ln (p_k) + (1 - y_k) \ln (1 - p_k))
Parameter estimation (パラメータ推定)
損失は出せたが,その変化量がわからなければパラメータを調整できない.なので損失の変化量,すなわち損失の偏微分を求めることが必要である.損失の変化量は各パラメータ $\beta_0, \beta_1$ ごとに偏微分を行い求める.
\begin{align}
0 &= \frac{\partial l}{\partial \beta_0} = \sum^K_{k=1}(y_k - p_k) \\
0 &= \frac{\partial l}{\partial \beta_1} = \sum^K_{k=1}(y_k - p_k)x_k
\end{align}
これは各 $k$ における $p_k$ の偏微分を求めれば導出できる.興味があれば自分で導出してみるとなんとなく理解が深まると思う.これで偏微分の値が $0$ の点を見つけることによって最小値が求められ,良いというわけ.
