ロジスティック回帰

名前は回帰だが中身は分類。シグモイド関数で確率を出力する仕組みを学びます。

名前は『回帰』だけど中身は『分類』。確率を予測する代表的アルゴリズム。

白峰 リリ(びっくり) 白峰 リリ

ロジスティック回帰って『回帰』なのに『分類』に使うらしいけど…?

神楽 モニカ 先生(笑顔) 神楽 モニカ 先生

そう、紛らわしいけれどロジスティック回帰は2クラス分類の代表的アルゴリズム。 出力は0〜1の確率よ。

紅林 かえで(普段) 紅林 かえで

線形回帰の出力 z=β₀+β₁x₁+... をシグモイド関数 σ(z)=1/(1+e⁻ᶻ) に通すことで、出力を0〜1に押し込めるの。 これが確率として解釈される。

藍沢 しずく(普段) 藍沢 しずく

シグモイドって、S字カーブですよねぇ?

紅林 かえで(普段) 紅林 かえで

そう、z→+∞で1に、z→-∞で0に近づく。 z=0で0.5。 これにより出力を確率として扱える。

白峰 リリ(笑い) 白峰 リリ

閾値0.5以上なら正例、未満なら負例、と判定するんだね。

神楽 モニカ 先生(普段) 神楽 モニカ 先生

そう、ただし閾値は問題に応じて変えられる。 不均衡データ(例: 病気の患者は1%)では0.5より低い閾値が適切なことも。

紅林 かえで(普段) 紅林 かえで

学習は{kw('最尤推定')}で行うわ。 訓練データの尤度(各サンプルが正しく分類される確率の積)を最大化する係数を求めるの。

藍沢 しずく(しょんぼり) 藍沢 しずく

最尤推定…難しそうですぅ。

神楽 モニカ 先生(普段) 神楽 モニカ 先生

実装は scikit-learn の LogisticRegression が解いてくれるから心配無用。 概念として『確率を予測している』『シグモイドで線形を非線形変換している』を押さえれば十分よ。

白峰 リリ(普段) 白峰 リリ

多クラス分類はどうするの?

紅林 かえで(普段) 紅林 かえで

Softmax回帰(多項ロジスティック回帰)に拡張できるわ。 クラス数Kに対し各クラスの確率を出す形。

紅林 かえで(普段) 紅林 かえで

DS検定では『ロジスティック回帰は分類』『シグモイドで0-1に押し込め』が頻出。 名前に騙されないように。

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris

X, y = load_iris(return_X_y=True)
y_binary = (y == 0).astype(int)  # 1クラス vs 残りの2クラス

model = LogisticRegression()
model.fit(X, y_binary)
proba = model.predict_proba(X)[:5]   # 各サンプルの確率
preds = model.predict(X)[:5]          # 0/1 ラベル

確認クイズ

ロジスティック回帰の出力として最も正しいのはどれか。

  1. 実数値の予測値(回帰)
  2. 0または1の整数
  3. 0〜1の確率
  4. -1〜1の値
こたえを見る

正解: 3. 0〜1の確率

0〜1の確率がロジスティック回帰の出力です。 シグモイド関数で線形結合を確率に変換し、閾値0.5などでクラスラベル(0/1)を決定します。

🔖 この記事の関連書籍

Amazonアソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。