#はじめに
ロジスティック回帰を理解するに当たっての前提知識となる、オッズとロジット変換について勉強したことをまとめました。
##参考
オッズとロジット変換について理解するに当たって下記を参考にさせていただきました。
- ロジスティック回帰分析(5)─ロジスティック変換の逆変換
- 統計分析を理解しよう-ロジスティック回帰分析の概要-
- StatQuest: Logistic Regression
- StatQuest: Odds and Log(Odds), Clearly Explained!!!
#ロジスティック回帰
##ロジスティック回帰概要
ロジスティック回帰はあるデータが特定のクラスに属する確率などを推計する際によく用いられるアリゴリズムです。
目的変数が量的変数のもの(ある月の店の売り上げなど)を予測する時には普通の線形回帰モデルが使用されますが、目的変数が質的変数のもの(このメールはスパムであるか否か、や血液型がA型であるか否かなど)にはそのモデルを直接当てはめることはできません。そのような目的変数が質的変数であっても線形回帰的な考え方を適用できるように拡張されたものが一般化線形モデル(GLM)でロジスティック回帰はその一種になります。
ロジスティック回帰自体は下記のような式で表されます。
($\beta$はパラメータ、$p$は出力された確率)
\log(\frac{p}{1-p})=\beta_{0} + \beta_{1}x_{1} + \beta_{2}x_{2} + ...+ \beta_{n}x_{n}
こちらを理解するに当たって前提知識となるオッズとロジット変換についての考え方を以下でまとめます。
##オッズ
##オッズの概要
ロジスティック分析を行う際に出てくる考え方に「オッズ」というものがあります。
オッズはある事象が発生する確率としない確率の比で表されます。ある事象が発生する確率を$p$と置くと下記数式で表されます。
\frac{p}{1-p}
具体例として下記のような場合を考えます。
野球の試合が5試合が行われたとして、自分のチームが1勝、相手チームが4勝した時のオッズを考えます。すると下記のようにオッズを求めることができます。
\frac{\frac{1}{5}}{1-\frac{1}{5}}=0.25
###オッズに対数を取る
上記オッズに対して対数を取って計算に用いることが多々あります。オッズに対数を取ることで何を表すことができるか下記で説明します。
オッズに対数を取る意義を考えるに当たって、自分のチームが非常に弱い時と自分のチームが非常に強い時と2パターンのオッズを考えてみます。
####自分のチームが非常に弱い時
自分のチームが非常に弱い時、オッズはどんどん0に近づいていることがわかります。逆に数式的に0よりマイナスにはならないこともわかるかと思います。
・1勝8敗の時
\frac{\frac{1}{9}}{1-\frac{1}{9}}=0.125
・1勝16敗の時
\frac{\frac{1}{17}}{1-\frac{1}{17}}=0.062
####自分のチームが非常に強い時
自分のチームが非常に強い時、逆にオッズは1から無限に大きくなることがわかります。
・8勝1敗の時
\frac{\frac{8}{9}}{1-\frac{8}{9}}=8
・16勝1敗の時
\frac{\frac{16}{17}}{1-\frac{16}{17}}=16
上記2つの例を見ると、自分のチームが弱い時のオッズは0から1に間に収まっているのに対して強い時のオッズは1から∞と、尺度が合っていて単純に比較できないことがわかります。
1勝8敗の時のオッズが$0.25$であるに対して8勝1敗時のオッズは$8$になっています。
###対数が尺度を揃える
実は対数を取ることによって上記尺度の問題を解決することができます。
・1勝8敗時のオッズに対数を取る
\log(0.25)\fallingdotseq-2.079
・8勝1敗時のオッズに対数を取る
\log(8)\fallingdotseq2.079
対数を取ることで尺度を揃える、ということがロジスティック回帰において非常に重要になります。
##ロジット変換
ロジスティック回帰は普通の線形回帰モデルと同様に説明変数の加重総和(にバイアス項が加わったもの)を計算しますが、その出力は直接の結果ではなく結果をロジット変換したものを返します。そしてその目的変数のロジット変換は、先ほど説明した目的変数のオッズに対数取ることとイコールになります。
\log(\frac{p}{1-p})
ロジスティック回帰は目的変数に確率を取るような回帰ですが、確率は0から1の間に値が収まるため、通常の線形回帰に当てはめると不都合が生じます。ロジット変換を行うことで、値が-∞から∞を取るものに変換することができ、不都合を解消することができます。
ロジスティック回帰の式のとしては下記のように表すことができます。
\log(\frac{p}{1-p})=\beta_{0} + \beta_{1}x_{1} + \beta_{2}x_{2} + ...+ \beta_{n}x_{n}
下記がy軸に確率(p)、x軸にロジット変換した値(logit)を取ってグラフを描画したものです。
import numpy as np
import matplotlib.pyplot as plt
def logit(x):
return np.log(p/(1-p))
x = np.arange(0.001, 1, 0.001)
y = logit(x)
plt.xlabel("logit")
plt.ylabel("p")
plt.plot(y, p)
logitが0の時、確率pは0.5となります。ロジットの0前後はpの変化が大きく、ロジットが0から離れていくに従ってpの変化は緩やかになります。ロジットがどんなに大きくともpが1を超えることはなく、ロジットをいくら小さくしてもpより小さくなることはありません。
##ロジットの逆変換
先ほどのロジット変換された値は逆に下記式で確率値に変換することも可能です。
p = \frac{\exp(logit)}{1+\exp(logit)}
上記式は下記のように導出することが可能です。
{\begin{eqnarray*}
logit &=& \log(\frac{p}{1-p})\\
\exp(logit) &=& \frac{p}{1-p}\\
p(1+\exp(logit)) &=& \exp(logit)\\
p &=& \frac{\exp(logit)}{1+\exp(logit)}\\
\end{eqnarray*}}
ロジスティック回帰によって求めた予測値は、ロジットの逆変換を用いることで確率値に変換することができます。
#Next
今回はロジスティック回帰を理解にするにあたって前提となる知識についてまとめました。続いてはロジスティック回帰における最適なパラメータ(係数)の求め方などをまとめていきます。