ロジスティック回帰とは?線形回帰との違いを初心者向けに解説【分類問題への第一歩】
📌 「ロジスティック回帰」って、名前に「回帰」って入っているのに、実は分類問題を解くための手法なんです。
「線形回帰は知ってるけど、ロジスティック回帰って何が違うの?」「シグモイド関数とかオッズ比とか、用語がややこしくて挫折しそう…」そんな悩みを持つ方に向けて、この記事ではロジスティック回帰の仕組みを、線形回帰と比較しながらやさしく解説していきます。

「回帰」とついてるのに「分類」に使うって、最初はビックリするよね!でも仕組みを知ると、「なるほど!」ってスッキリするはずだよ~
📍 ロジスティック回帰とは|「分類」のための回帰モデル
ロジスティック回帰とは、ある事象が「起こる」か「起こらない」かを確率で予測するための統計手法です。一見「回帰」と名がついていますが、実際は2値分類(Yes/No、0/1)に使われる代表的な機械学習アルゴリズムです。
身近な例だと、こんな場面で使われています。
- 迷惑メール判定:このメールはスパムか、そうでないか
- 与信審査:このお客様は貸し倒れリスクが高いか、低いか
- 医療診断:この検査値から病気の可能性は高いか、低いか
- マーケティング:このユーザーは商品を買うか、買わないか
このように、「Yes/No」を確率で答えるような問題で大活躍するのがロジスティック回帰です。
ロジスティック回帰は「分類」のための手法ですが、出力されるのは0〜1の確率値。たとえば「迷惑メールである確率:0.92」のように予測します。一般的に0.5を閾値として、それ以上なら「Yes」と判定します。
🔍 線形回帰との違い|「直線」か「S字カーブ」か
ロジスティック回帰を理解する一番の近道は、線形回帰との違いを比較することです。
線形回帰:連続値を予測する「直線」モデル
線形回帰は、身長から体重を予測する、広告費から売上を予測するのように、連続的な数値を予測する手法です。グラフにすると、データの傾向を表す1本の直線でモデル化されます。
ロジスティック回帰:確率を予測する「S字カーブ」モデル
一方、ロジスティック回帰では出力を必ず0〜1の範囲に収めたいので、直線ではなくシグモイド関数と呼ばれるS字カーブを使います。これにより、どんな入力値でも確率として解釈できる出力が得られます。
- 線形回帰:連続値を予測(例:売上、株価、気温)/直線モデル
- ロジスティック回帰:確率(0〜1)を予測 → 分類に使う/S字カーブ
- 共通点:どちらも「説明変数の重み付き合計」をベースにする

S字カーブと「重み付き合計」、この2つを押さえればロジスティック回帰の骨組みはばっちりだよ!本当は入り口だけ見えて、中身は線形回帰と友達みたいなものなんだよね~
🧮 シグモイド関数のしくみ|ロジスティック回帰の心臓部
シグモイド関数は、ロジスティック回帰の心臓部とも言える重要な関数です。式は少し難しく見えますが、やっていることはシンプルです。
ここで z = β₀ + β₁x₁ + β₂x₂ + … で、これは線形回帰と同じ形です。つまり、線形回帰の出力をシグモイド関数で「0〜1の確率」に押し込めたのが、ロジスティック回帰なのです。
- z が大きい(プラス方向) → p は 1 に近づく(=「Yes」の確率が高い)
- z が小さい(マイナス方向) → p は 0 に近づく(=「No」の確率が高い)
- z = 0 → p = 0.5(=どちらとも言えない)
📊 オッズと対数オッズ|ロジスティック回帰の係数の意味
ロジスティック回帰でよく出てくる用語が「オッズ」と「オッズ比」です。馬券で聞くオッズと考え方は同じです。
- オッズ= p / (1 – p)(起こる確率 ÷ 起こらない確率)
- 対数オッズ= log(p / (1 – p)) = z
- オッズ比=説明変数が1単位増えたときに、オッズが何倍になるか
たとえば、年齢が1歳上がるごとに「ある病気にかかるオッズ比が1.05」だとすると、1歳ごとにリスクが約5%上がると解釈できます。
🛠 Pythonで実装してみよう|scikit-learnを使った例
ロジスティック回帰はscikit-learnを使えば、数行のコードで実装できます。基本的な流れは線形回帰とほぼ同じです。
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
# データ分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# モデル作成・学習
model = LogisticRegression()
model.fit(X_train, y_train)
# 予測(クラス)
y_pred = model.predict(X_test)
# 予測(確率)
y_proba = model.predict_proba(X_test)
predict() はクラス(0か1)を返し、predict_proba() は各クラスの確率を返します。状況に応じて使い分けましょう。
▶ 関連記事:【完全ガイド】線形回帰分析を学ぶ全ステップ
📈 評価指標|精度・適合率・再現率・F値
分類モデルの評価には、線形回帰のR²とは違う指標を使います。代表的なのが混同行列から計算される以下の指標です。
- 精度(Accuracy):全データのうち正しく分類できた割合
- 適合率(Precision):「Yes」と予測したうち、実際にYesだった割合
- 再現率(Recall):実際にYesのうち、Yesと予測できた割合
- F値(F1-score):適合率と再現率の調和平均(バランス指標)
「迷惑メール判定」のように誤検知(False Positive)を減らしたいなら適合率を、「がん検診」のように見逃し(False Negative)を減らしたいなら再現率を重視します。両方バランスよく見たい場合はF値が便利です。
⚠️ ロジスティック回帰の注意点
- 線形分離が前提:データが直線で分離できない複雑な構造には弱い
- 多重共線性に注意:説明変数同士の相関が強いと係数が不安定になる
- 外れ値の影響:シグモイド関数で緩和されるが、油断は禁物
- クラス不均衡:「Yes:No = 1:99」のような偏ったデータでは精度が信頼できない
▶ 関連記事:多重共線性とは?回帰分析でハマる落とし穴を初心者向けに解説

注意点を知っておくと、データを見たとき「あ、これはロジスティック回帰と相性がいいね!」って考えられるようになるよ!
🚀 まとめ|ロジスティック回帰は分類の入口
ロジスティック回帰は、機械学習の「分類」に最初に触れるのに最適な手法です。仕組みもシンプルで、結果の解釈もしやすく、実務でも幅広く使われています。
- 「回帰」と名前についているけど、実は分類のための手法
- シグモイド関数で出力を0〜1の確率に変換
- 線形回帰と兄弟みたいな関係(共通点も多い)
- 評価は精度だけでなく適合率・再現率・F値も確認
線形回帰とロジスティック回帰、この2つを押さえれば、機械学習の基礎の半分はクリアです。次は決定木やランダムフォレストのような、もっと表現力のあるモデルへ進んでいきましょう。
▶ 関連記事:決定木とは?仕組み・ジニ不純度・剪定までやさしく解説

