LoginSignup
0
0

More than 3 years have passed since last update.

ロジスティック関数を描いてみる

Last updated at Posted at 2020-08-07

Overview

けっこう前に sympy でテイラー展開を描いてみたんですけど、
https://qiita.com/arc279/items/dda101b39b96c4aa94d0

視覚化するとイメージがわきやすいので、
今回はロジスティック回帰に出てくるロジスティック関数を描いてみます。

ロジスティック回帰の詳しい説明はこの辺が詳しいので、以下のサイトの解説と合わせてグラフを眺めてみてください。
http://darden.hatenablog.com/entry/2016/08/22/212522

ここでは数式のちゃんとした説明はしません、というかできないw

前準備

$ pip install matplotlib sympy     
以下、jupyterのセルだと思ってください
from sympy import Symbol
from sympy.plotting import plot

p = Symbol('p')
x = Symbol('x')

登場する計算式

\begin{align*}
& {\rm オッズ比 }: \frac{p}{1-p} \\
& {\rm ロジット関数 }: f(p) = \log \frac{p}{1-p} \\
& {\rm ロジスティック関数 }: g(x) = \frac{1}{1+e^{-x}}
\end{align*}

オッズ比(p) = p/(1-p)

jupyter
plot(p/(1-p), (p, -2, 2), ylim=(-100, 100), legend=True)

fig1.png

p = 1-inf+inf が繋がっちゃてるのはご愛嬌なんですが、
これの 0 <= p <= 1 を切り取ると、

jupyter
plot(p/(1-p), (p, 0, 1), ylim=(-100, 100), legend=True)

fig2.png

定義域 0 <= p <= 1 に対して 値域が 0 <= オッズ比(p) < +inf まで拡張されます。

ロジット関数 f(p) = log(p/(1-p))

オッズ比の対数を取ることで、

jupyter
from sympy import log

plot(log(p/(1-p)), legend=True)

fig3.png

オッズ比と同じ定義域に対して、値域が -inf < f(p) < +inf まで拡張されてますね。

ロジスティック関数 g(x) = 1/(1+exp(-x))

ロジット関数の逆関数なので、

jupyter
from sympy import exp

plot(1/(1+exp(-x)), legend=True)

fig4.png

ロジット関数の値域と定義域が入れ替わって、

  • 定義域: -inf < z < +inf
  • 値域 : 0 <= g(z) <= 1

つまり、確率 0 <= g(z) <= 1 とみなせる値を出力する関数、と見なせるってことですね。

みたいな解釈で合ってる?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0