4.4 ロジスティック回帰
「スパムかどうか」を判定する分類器が、ただ「スパムです」と断言するだけでなく、「80%の確率でスパムです」と答えてくれたら—そんな確率出力を直接モデル化するのがロジスティック回帰です。
シグモイド関数というシンプルな変換で、任意の実数を0〜1の確率に変換し、係数をオッズ比として解釈できる。分布の仮定が少なく頑健で、医学研究から機械学習まで幅広く使われる、分類問題の基本手法を一緒に学んでいきましょう。
分類で「確率」を知りたい理由
あなたのメールボックスに1通のメールが届きました。これはスパムでしょうか、それとも大事なメールでしょうか?
分類器が「スパムです」と断言してくれるのも便利ですが、こんな答えの方がもっと便利ではないでしょうか:「80%の確率でスパムです」。
確率がわかれば、私たちは柔軟に対応できます:
- 95%以上 → 自動的にゴミ箱へ
- 70〜95% → スパムフォルダへ(あとで確認可能)
- 50〜70% → 受信箱に入れるが警告を表示
- 50%以下 → 通常どおり受信
医療でも同じです。「心臓病です」という診断と「心臓病の可能性は90%です」という診断では、その後の対応がまったく違います。確率がわかれば、追加検査をするか、すぐに治療を始めるかの判断ができるのです。
前章のLDA(線形判別分析)でもベイズの定理を使えば確率は計算できました。しかし「データがガウス分布(正規分布)に従う」という仮定が必要でした。
ロジスティック回帰は、そうした分布の仮定なしに確率を直接モデル化します。出発点はシンプルです:「確率そのものを予測変数xの関数として表そう」。

確率を直接モデル化する問題
確率 $p(x)$ を予測変数 $x$ の関数として表したい。最も単純なアイデアは線形モデルです:
ここで β₀, β₁, ... はデータから学習するパラメータです。
しかし、これには致命的な問題があります。確率は0から1の間の値でなければなりませんが、線形モデルの出力はどんな値でも取りえます。xが大きくなると p(x) が1.5になったり、小さくなると-0.3になったりしてしまいます。
1.5という確率や、-0.3という確率は意味がありません。
私たちが必要なのは、「任意の実数を0〜1の範囲に押し込める」変換です。
シグモイド関数 - 実数を確率に変換する
この問題を解決するのがシグモイド関数(ロジスティック関数とも呼ばれます)です。
e はネイピア数(約2.718)で、数学でよく使われる定数です。
この関数には素晴らしい性質があります:
- 出力が常に (0, 1) の範囲 - どんな入力でも確率として使える
- S字型の滑らかな曲線 - 極端な値では飽和する
- z = 0 のとき σ(0) = 0.5 - ちょうど真ん中
具体的な値を見てみましょう:
- z = -3 のとき σ(-3) ≈ 0.05(ほぼ0)
- z = 0 のとき σ(0) = 0.5(真ん中)
- z = 3 のとき σ(3) ≈ 0.95(ほぼ1)

この関数を使えば、線形モデルの出力を確率に変換できます:
これがロジスティック回帰の核心です。
決定境界は線形
ロジスティック回帰で「クラス1」と判定するのは、確率が0.5を超えたときです:
シグモイド関数の性質から、σ(z) > 0.5 は z > 0 と同じです。したがって:
これは、決定境界が次の式で表されることを意味します:
2次元なら直線、3次元なら平面、それ以上なら超平面です。
前章のLDAと同様に、ロジスティック回帰も線形の境界で分類します。
ただし重要な違いがあります:
- LDA: 「データがガウス分布に従う」という仮定から線形境界が導かれる
- ロジスティック回帰: 最初から線形境界を仮定している(分布の仮定なし)
仮定が少ない分、ロジスティック回帰はより多くの場面で安定して使えます。

ここまでのまとめ - ロジスティック回帰の基本形
ここまでの内容を整理しましょう。
ロジスティック回帰の基本アイデア:
- 確率を直接予測したい
- 線形モデルの出力は[0,1]に収まらない
- シグモイド関数で変換すれば確率になる
モデルの形:
決定境界:確率 = 0.5 となる線(超平面)
あとは、パラメータ β₀, β₁, ... をデータから学習する方法がわかれば、ロジスティック回帰を実際に使えるようになります。
最尤推定 - パラメータの学習
シグモイドモデルの形は決まりました。あとはパラメータ β をデータから学習する必要があります。
N個の訓練データ (x₁, y₁), (x₂, y₂), ..., (xₙ, yₙ) があるとします。各 yᵢ は0または1です。
学習の基本的な考え方は「尤度(ゆうど)最大化」です。尤度とは「今観測されたデータがどれくらいもっともらしいか」を表す値です。
各観測値について:
- yᵢ = 1 のとき、モデルが与える確率 p(xᵢ) が高いほど良い
- yᵢ = 0 のとき、モデルが与える確率 1 - p(xᵢ) が高いほど良い
すべての観測値についてこの「もっともらしさ」を掛け合わせ(対数を取ると足し算になります)、その値を最大にするようなパラメータを探します。
この式を最大化するパラメータ β を見つけるのが「最尤推定」です。

ログオッズという見方
ロジスティック回帰には、もう一つの有用な視点があります。それがログオッズ(対数オッズ)です。
まずオッズという概念から。オッズとは「起こる確率 / 起こらない確率」のことです:
競馬などで「3倍のオッズ」と言うとき、それは「起こる方が3倍起こりやすい」という意味です。確率が0.75なら、オッズは 0.75/0.25 = 3 です。
このオッズの対数を取ったものがログオッズ:
驚くべきことに、ロジスティック回帰ではこのログオッズが入力の線形関数になっているのです:
この見方は係数の解釈に役立ちます。β₁ は「x₁ が1増えると、ログオッズがβ₁だけ増える」ことを意味します。

係数の解釈 - オッズ比
ロジスティック回帰の大きな強みは、係数を直感的に解釈できることです。
係数 βⱼ は「xⱼ が1単位増加したとき、ログオッズがどれだけ変化するか」を表します。これをオッズの変化に直すと:
具体例:心臓病予測モデルで、喫煙量(生涯のタバコ使用量 kg)の係数が β = 0.081 だとします。
- オッズ比 = e^0.081 ≈ 1.084
- 解釈:喫煙量が1kg増えると、心臓病のオッズが約8.4%増加
もう少し具体的に言うと:
- 喫煙量が10kgの人と11kgの人を比べると、後者の心臓病のオッズは前者の1.084倍
- これは「リスクが8.4%高い」という意味です
この解釈のしやすさが、医学研究などでロジスティック回帰が広く使われる理由の一つです。

LDAとの比較
前章のLDAとロジスティック回帰を比較してみましょう。両者は同じ線形の決定境界を持ちますが、アプローチが異なります。
| 観点 | LDA | ロジスティック回帰 |
|---|---|---|
| モデル化対象 | クラス内のデータ分布 | 確率を直接 |
| 仮定 | データが正規分布に従う | 特になし |
| 強み | 仮定が正しければ効率的 | 頑健(仮定が少ない) |
実践的な選択基準:
- データが正規分布に従うと確信できる → LDA
- 仮定に自信がない、またはカテゴリカル変数がある → ロジスティック回帰
多くの実践的場面では、ロジスティック回帰がより安全な選択とされています。分布の仮定をしないため、様々なデータタイプに対応できるからです。
一方、データが本当に正規分布に従う場合、LDAの方が約30%効率的(より少ないデータで同じ精度が出せる)という理論的結果もあります。

発展 - 多クラス分類と正則化
ここまでは2クラス分類を見てきましたが、ロジスティック回帰は多クラス分類にも拡張できます。
3クラス以上の場合、各クラスの確率をSoftmax関数で計算します。これは、各クラスに対するスコア(線形関数の出力)を確率に変換する方法です。すべてのクラスの確率を足すと1になります。

また、特徴量が多い高次元データでは過学習(訓練データには合うが新しいデータに合わない)のリスクがあります。これを防ぐために、Lasso(L1正則化)と同様のペナルティを加えることができます。
λを大きくすると、より多くの係数がゼロに縮小され、重要な変数だけが残るモデルになります。
まとめ - ロジスティック回帰の位置づけ
ロジスティック回帰は、分類問題に対する強力で解釈しやすい手法です。
核心的アイデア:
- 線形関数の出力をシグモイド関数で確率に変換
- ログオッズが入力の線形関数

実用的な強み:
- 確率出力 - 予測の確信度がわかる
- 解釈可能性 - 係数をオッズ比として理解できる
- 頑健性 - 分布の仮定が少ない
- 拡張性 - 多クラス、正則化に対応
使い分けの指針:
- LDAより仮定が少なく、多くの場面で安全な選択
- 高次元データではL1正則化版が有効
- 線形分離が難しい場合は、より複雑なモデル(カーネル法、ニューラルネット)へ
次章では、「クラスを分離する超平面を直接見つける」という別のアプローチ(分離超平面とSVM)を学びます。