データサイエンスろぐ

データサイエンスを学ぶ大学4年生の学習ブログ

ロジスティック回帰分析を勉強したのでさらにわかりやすく解説した

概要

以前、ロジスティック回帰分析についての記事を執筆した。

dslog.hatenablog.jp

この記事は、かなり付け焼き刃な解説をしており、わかっているようなわかっていないような感じがする。

この記事を執筆した後も引き続き勉強を行い、当時(と言ってもたかだか数日前だが)よりは理解が深まってきたため、アウトプットのために改めて解説をしようと思う。

前回よりもさらにわかりやすい解説、具体的には機械学習に詳しくない高校生や大学1年生などが読んでもわかるような解説をする。

ロジスティック回帰分析とは

ロジスティック回帰分析とは、ある事象が起きるか起きないかということを予想するための分析である。

一般的には、「回帰分析」というと、数値を予想することなのだが、ロジスティック回帰分析は数値予想ではなく、分類問題なので注意が必要だ。

ある事柄が起きるか起きないかということを予想することの例として、天気予報を考えよう。

例1) 明日の降水確率は90%です。

上のような場合、明日の天気が「晴れ」か「雨」かと聞かれたら、多くの人が「雨」と答えるだろう。

では、次の場合はどうだろう?

例2) 明日の降水確率は51%です。

少し迷うだろう。

「降るかもしれないし、降らないかもしれない。傘くらい一応持っていこうか。」

という感じの確率だ。

ここで、「明日の天気はなんですか?晴れか雨かで答えてください。わからないとか曇りとかは無しで!」

と聞かれたら何と答えるだろうか。

おそらく普通の感覚の持ち主ならば「雨」と答えるだろう。

なぜなら、雨が降る確率が50\%を超えているから。

少し冗長な例え話になってしまったが、要するに確率が50\%を超えるならばその事象は起きると予想し、確率が50\%を下回るなら事象は起きないと予想するのが普通の感覚である。

ということは、ある事象が起きる場合、 0.5より大きい値を、ある事象が起きない場合、 0.5より小さい値を返してくれるような関数で0から1の値をとる関数が存在すると嬉しいわけだ。

ここまでのイメージを踏まえて、次項からはさらに詳しく考えていく。

変数が1つの場合を考える

ある事象が起きる確率を考えるときに、まず、何が事象の起きる可能性を左右するのか(これを特徴量という)を考えよう。

dslog.hatenablog.jp

例えば、先ほどの天気予報の例で考えると、特徴量は「雲量」かもしれない。あるいは、「前日の天気」かもしれない。(気象学に詳しくないので間違ってたらごめんなさい)

他の例えで考えると、「ある学生が入学試験にパスするかどうか」を予想するときの特徴量として「勉強時間」や「模擬試験の点数」などを設定するかもしれない。

このように、特徴量はいくつかあるケースの方が多いが、わかりやすさのために特徴量が1つの場合を考えよう。

シグモイド関数

特徴量を x、特徴量から導かれる事象が起きる確率を yとしよう。

ここで、 xがある値を超えると急激に 1に近づき、 xがある値を下回ると急激に 0に近づくような関数を考えたい。

そのような関数(これを活性化関数という)はたくさんあり、最もわかりやすい例としてはステップ関数などが挙げられるが、ロジスティック回帰分析ではシグモイド関数を扱う。

シグモイド関数は次式で表される関数である。

y = \frac{1}{1+ \exp[-(wx)+b]}

グラフにすると次のような形になる。

f:id:DSlog:20200623153944p:plain

なぜシグモイド関数なのか、というのは前回のブログで書いたようにオッズ比ロジット関数など確率にまつわる背景がある。

dslog.hatenablog.jp

さて、上記の式中にはwbという文字が突然出てきたが、これらは定数である。

wのことを重みと言い、bのことをバイアスと言う。

重みとバイアスをどのように設定すれば、入力xに対して、出力yを高精度で返すのかというのを探るのが機械学習の本質である。

(ここで言う高精度とは、現実の結果に非常近いということ)

ではここから、重みとバイアスが出力結果にどのような影響を与えているのかを見ていく。

重みを変化させると

下図は重みwを変化させたときのシグモイド関数の形の変化を表したものである。

f:id:DSlog:20200630212206p:plain

重みwが大きくなるほど、シグモイド関数の変化が急激になり、特徴量xが事象が起きるかどうかに強い影響を与えるということになる。

いや、実際には、結果から逆算して重みwを決めるため、事象が起きるかどうかについて特徴量xが与える影響が強ければ、重みwが大きくなるという言い方の方が正しいだろう。

バイアスを変化させると

下図はバイアスbを変化させたときのシグモイド関数の形の変化を表したものである。

f:id:DSlog:20200630212229p:plain

バイアスが事象の起きるか起こらないかの境目になっていると見ることができる。

おわりに

ロジスティック回帰分析について、機械学習に詳しくない高校生や大学1年生などが読んでもわかるようにということを意識して解説した。

これからデータサイエンスを学び始める方のとっかかりとなれば幸いである。

参考図書

株式会社マイナビ出版から発行されている、中山光樹著の『機械学習・深層学習による自然言語処理入門 scikit-learnとTensorFlowを使った実践プログラミング』という書籍が非常にわかりやすく大変参考になった。

www.amazon.co.jp