ロジスティック回帰

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

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

胡桃 あんず(びっくり) 胡桃 あんず

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

若葉 みどり 先生(笑顔) 若葉 みどり 先生

そう、紛らわしいけれどロジスティック回帰は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アソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。

この記事について

データサイエンティスト検定スタディが作成した教材です。運営について・記事の作り方

試験についてはこちらをご覧ください: データサイエンティスト協会 公式サイト

この記事を共有