機械学習

ロジスティック回帰の基本的なことをわかりやすくまとめてみた

今日はロジスティック回帰に関してまとめていきます。

ロジスティック回帰とは?

最初に今まで学んだ回帰方法を振り返ると、次のような単回帰や重回帰といった回帰分析でした。

このような回帰モデルを作成することで、未知の説明変数(経験)からでも目的変数(給料)の数値を見積もることができるようになりました。

次にロジスティック回帰ですが、縦軸が定量データではなく、ゼロかイチを判定する二値分類の問題を解く場合に用いられています。

yaaku

ロジスティック回帰って言っているのに分類なのか…

ここでは例としてある商品のプロモーションにより購入されたか否か(Yes = 1 or No = 0)を年齢ごとに集めたデータがある場合を考えます。

このようなゼロイチのデータに対して回帰分析を行うと…

予測モデル(赤い線)を書くことはできますが、図のように1と0の範囲から外れてしまう部分が発生します。

そこで、出力値を0より大きく1より小さい値に変換する処理を加えます。変換時に使うのがシグモイド関数と呼ばれるものです。

yaaku

シグモイド関数…?

 

シグモイド関数(シグモイドかんすう、英: sigmoid function)は、

で表される実関数である。 (wikipediaより引用)

グラフは下のように0<y<1の範囲で滑らかな曲線となる。

シグモイド関数はxの値に何を入れても出力値が必ず0より大きく1より小さい値に変換されるため、ちょうど確率のように0から1の値を取るため二値分類を行うのに当てはまりが良い予測モデルを作成できます。

シグモイド関数がどのように使われるのか?

先ほど紹介したシグモイド関数を用いて予測モデルを作成するには回帰式を下記のようにyについて解いていきます。

pはpossibility(可能性)を表します。yについて解くと説明変数xと発生確率pの関係をみることができるようになりました。(厳密にはロジスティック回帰の出力は確率ではなくてCalibrationという確率に変換する処理が必要になるようです―それでも他のモデルよりもロジスティック回帰は実際の確率に近いようです)

yについて解いた式の左辺をロジット関数といい、p/(1-p)をオッズ比と言います。

ロジスティック回帰での予測モデルの見方

次に予測モデルの結果の見方に関してです。

最初の例で出したある商品のプロモーションにより購入されたか否か(Yes or No)を年齢ごとに集めたデータでロジスティック回帰で予測モデルを書いてみると

ちょっと汚いですが(笑)赤い予測モデルが立てられたとします。

ざっくりな傾向としては年齢が高くなるほど、商品が買われているということが言えるかと思います。

この予測モデルを使うことで新しいデータに対して商品を買う確率を計算することができるようになります。

例えば新しいプロモーションメールを送ったユーザーの年齢が20歳、40歳の人場合、汎化性能が良いモデルであれば次のように確率を求めることができます。

yaaku

シグモイド関数スゲー

まとめ

ロジスティック回帰はkaggleではメインのモデルとして使用されることはほとんどありませんが、各変数の変化に対する出力値の変化(上の例なら年齢が1上がったことに対する商品を買う確率の変化)を説明しやすいなど利点もあり実務でよく使われているようです。

kaggle survey 2017

しかし、重回帰と同様に入力変数同士の相関が高い場合(例えば年齢と年収など)に各係数の値を見て特徴量の重要度を説明することが難しくなるなど、デメリットもあるので扱うデータによっては最初から勾配ブースティングなどを検討する方が精度も説明性の面でも適切かもしれません。

yaaku

使いどころが難しい…