機械学習

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

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

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

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

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

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

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

しかし、ロジスティック回帰の計算は重回帰の出力にシグモイド関数を適用しただけなので、重回帰同様に入力変数同士の相関が高い場合(例えば年齢と年収など)に各係数の値を見て特徴量の重要度を説明することが難しくなります。

また、線形回帰になるので目的変数が一方向に傾向があれば正しく分類できる可能性が高いですが、特徴量空間で斜め方向にクラスの偏りがある場合は分類が難しくなることが予想されます。(2つの変数x1, x2 があったとしてx1、x2 が高い時、x1、x2が低い時にそれぞれクラス1を取りやすいなどの傾向は分類できない)

上記のような変数間の相互作用を意図的に学習させたくないという問題設定の場合は、ロジスティック回帰を用いると良いと思いますが、最初から勾配ブースティングなどを検討しても精度と説明性の面で良いケースが多いように思います。

yaaku

使いどころが難しい…