名前は『回帰』だけど中身は『分類』。確率を予測する代表的アルゴリズム。
ロジスティック回帰って『回帰』なのに『分類』に使うらしいけど…?
そう、紛らわしいけれどロジスティック回帰は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 ラベル
確認クイズ
ロジスティック回帰の出力として最も正しいのはどれか。
- 実数値の予測値(回帰)
- 0または1の整数
- 0〜1の確率
- -1〜1の値
こたえを見る
正解: 3. 0〜1の確率
0〜1の確率がロジスティック回帰の出力です。 シグモイド関数で線形結合を確率に変換し、閾値0.5などでクラスラベル(0/1)を決定します。