「このメールは迷惑メールか」「この患者は再発するか」「この広告はクリックされるか」——世の中の予測問題の多くは、答えがイエスかノーの二択です。ただし現場で本当に欲しいのは「イエス」という断定ではなく、「73%の確率でイエス」という数字のほうです。確率が分かれば、閾値を状況に応じて動かせます。見逃しが致命的な医療診断なら30%で警告を出し、誤検知のコストが高い自動処理なら95%まで待つ、といった判断ができるからです。
ロジスティック回帰(Logistic Regression)は、この「二択の確率」を出すための最も基本的なモデルです。名前に「回帰」と付いていますが分類モデルであり、線形回帰にシグモイド関数を1枚かぶせただけの、驚くほど簡単な構造をしています。にもかかわらず、提案から70年以上たった今でも医学統計・信用スコアリング・広告配信の現場で第一選択であり続けています。理由は精度ではなく、係数がそのまま解釈できることと、確率の値そのものが信頼できることにあります。
さらに、この構造を理解しておく価値はロジスティック回帰の外側にあります。ニューラルネットワークの出力層で使われるシグモイドと交差エントロピー損失の組み合わせは、ロジスティック回帰そのものです。深層学習の「分類器」は、極端に言えばロジスティック回帰の手前に非線形な特徴抽出器を挟んだものにすぎません。ここを飛ばして先に進むと、あとで必ず戻ってくることになります。
本記事では、次の順で解きほぐします。
- なぜ線形回帰ではだめで、シグモイド関数が必要になるのか
- 対数オッズという「直線が住める土俵」への2段変換
- 最尤推定から交差エントロピー損失が導かれる過程
- なぜ二乗誤差を使ってはいけないのか(実測で170万倍の差)
- 係数 $w$ の正しい読み方(オッズ比)
- 最尤推定が破綻する完全分離という現象と、その処方箋

勉強時間から試験の合否を予測する場面です。左は素直に直線を当てはめた結果で、$x=12$ 時間では予測値が $1.487$、$x=0$ 時間では $-0.235$ になってしまいました。148%の確率も、マイナス24%の確率も存在しません。赤く塗った領域が、確率としてありえない部分です。右が本記事の主役で、同じデータにS字カーブを当てはめています。値は必ず $0$ と $1$ の間に収まり、しかも「4〜6時間あたりで合否が入れ替わる」という現実的な形になっています。
前提知識
この記事を読む前に、以下を押さえておくと理解が深まります。
なぜ線形回帰ではだめなのか
冒頭の図で見たとおり、二値の目的変数に直線を当てはめると予測値が $[0,1]$ をはみ出します。しかし問題はそれだけではありません。もう2つ、より深刻な事情があります。
ひとつは分散の不均一性です。$y$ が0か1しか取らないとき、その分散は $p(1-p)$ となり、$p$ の値によって変わります。線形回帰が前提とする「誤差の分散はどこでも一定」という仮定が最初から成り立ちません。
もうひとつは外れ値への脆さです。極端に大きい $x$ を持つデータが1つ加わるだけで、直線全体が引きずられて境界の位置が動いてしまいます。確率が飽和する仕組みがないためです。
これらをまとめて解決するのが、次に見るシグモイド関数です。
シグモイド関数
ロジスティック回帰の核となるのはシグモイド関数(ロジスティック関数)です。
$$ \begin{equation} \sigma(z) = \frac{1}{1 + e^{-z}} \end{equation} $$
この関数は、実数全体 $(-\infty, +\infty)$ を $(0, 1)$ に押し込む働きをします。

左がシグモイド関数の形です。$z=0$ でちょうど $0.5$ を通り、$z$ が大きくなれば1に、小さくなれば0に漸近します。原点周りで急に立ち上がり、両端では平らになる——この「両端で飽和する」性質が、外れ値への頑健さを生みます。$z$ が $10$ でも $1000$ でも出力はほぼ $1$ で変わらないため、極端なデータが結果を支配できないのです。
右は微分 $\sigma'(z) = \sigma(z)(1-\sigma(z))$ です。この式は後で勾配を計算するときに効いてきますが、形そのものにも意味があります。$z=0$ で最大値 $0.25$ を取り、$z=4$ では $0.0177$、$z=8$ では $0.000335$ まで落ちます。判断に迷う境界付近ではパラメータの変化に敏感に反応し、すでに答えがはっきりしている領域では鈍感になる——学習が「まだ決着していない部分」に集中する仕組みが、微分の形に埋め込まれています。
なお、この飽和は深層学習では厄介者にもなります。層を深く重ねるとこの小さな微分が掛け算されていき、勾配消失を引き起こすからです。ReLUが主流になった理由のひとつがここにあります。
モデルの定義と対数オッズ
入力 $\bm{x} = (x_1, \dots, x_p)^T$ に対し、クラス1に属する確率を次でモデル化します。
$$ \begin{equation} p(y=1|\bm{x}) = \sigma(\bm{w}^T\bm{x} + b) = \frac{1}{1 + \exp(-(\bm{w}^T\bm{x} + b))} \end{equation} $$
「線形の計算をして、シグモイドに通す」だけです。ここで自然な疑問が浮かびます——なぜ他のS字カーブではなく、この形なのか。答えは、式を裏返してみると見えてきます。
$p = \sigma(z)$ を $z$ について解きます。まず両辺の逆数を取って整理すると
$$ \begin{align} p &= \frac{1}{1+e^{-z}} \\ \frac{1}{p} &= 1 + e^{-z} \\ e^{-z} &= \frac{1-p}{p} \end{align} $$
となり、両辺の対数を取って符号を反転させると
$$ \begin{equation} z = \ln\frac{p}{1-p} = \bm{w}^T\bm{x} + b \end{equation} $$
が得られます。左辺 $\ln[p/(1-p)]$ を対数オッズ(log-odds、ロジット)と呼びます。つまりロジスティック回帰の正体は、
確率そのものではなく、対数オッズが入力の線形関数になるモデル
なのです。シグモイド関数は、この主張を確率の側から書き直したものにすぎません。

なぜ2段の変換が必要なのかが、この3枚でわかります。左の確率 $p$ は $[0,1]$ に閉じ込められており、直線で表そうとすれば必ずはみ出します。中央のオッズ $p/(1-p)$ に移すと上限は取り払われますが、今度は下が $0$ で止まったままで、しかも $p=0.5$ が $1$、$p=0.9$ が $9$ と非対称です。右の対数を取ってようやく、$-\infty$ から $+\infty$ まで自由に動ける量になります。実測では $p=0.5$ が $0$、$p=0.75$ が $+1.099$、$p=0.9$ が $+2.197$ と、$p=0.5$ を中心に対称な軸ができています。
「確率を直線で表したい」という要求に対し、直線が住める土俵まで確率のほうを引っ越させた——それがロジスティック回帰の設計思想です。
決定境界が直線になる理由
対数オッズの見方には、もうひとつ重要な帰結があります。「クラス1と判定する」境界を $p = 0.5$ に置くと、$p=0.5$ は対数オッズがゼロという意味なので、境界は
$$ \begin{equation} \bm{w}^T\bm{x} + b = 0 \end{equation} $$
という一次方程式になります。つまりロジスティック回帰の決定境界は、2次元なら直線、3次元なら平面、一般には超平面です。確率は曲線的に変化するのに、境界そのものは真っ直ぐ——この事実は図で見ると納得しやすくなります。

2次元データに当てはめた結果です。色が確率を表し、太い黒線が $p=0.5$ の決定境界、破線が $p=0.25$ と $p=0.75$ の等高線です。学習された係数は $\bm{w} = (5.94, 4.82)$、$b=0.87$ で、正解率は $0.985$ でした。
3本の線がすべて平行な直線である点に注目してください。確率が変化する方向は $\bm{w}$ の向きに一致し、$\bm{w}$ と直交する方向にはいくら動いても確率が変わりません。また等高線の間隔は $\|\bm{w}\| = 7.65$ で決まります。この値が大きいほど線の間隔が詰まり、境界をまたいだ瞬間に確率が0から1へ切り替わる「硬い」分類器になります。係数の向きが境界の位置を、係数の大きさが判断の鋭さを決めているわけです。
最尤推定によるパラメータ学習
モデルの形が決まったので、次はデータから $\bm{w}, b$ を決めます。使うのは最尤推定、すなわち「手元のデータが最も起こりやすくなるパラメータを選ぶ」という方針です。
各データ点 $(\bm{x}_i, y_i)$ について、$p_i = \sigma(\bm{w}^T\bm{x}_i + b)$ と置くと、その1点が観測される確率は
$$ \begin{equation} p(y_i|\bm{x}_i) = p_i^{y_i}(1-p_i)^{1-y_i} \end{equation} $$
と書けます。この表記は一見トリッキーですが、$y_i=1$ なら指数が $(1, 0)$ になって $p_i$ が残り、$y_i=0$ なら $(0,1)$ で $1-p_i$ が残る、という場合分けを1行にまとめたものです。
各データが独立なら、全体の尤度はこれらの積です。
$$ \begin{equation} L(\bm{w}, b) = \prod_{i=1}^{n} p_i^{y_i}(1 – p_i)^{1-y_i} \end{equation} $$
積のままでは扱いにくいので対数を取ります。対数は単調増加なので、最大化する点は変わりません。
$$ \begin{equation} \ell(\bm{w}, b) = \sum_{i=1}^{n} \left[ y_i \ln p_i + (1 – y_i)\ln(1 – p_i) \right] \end{equation} $$
最後に、最大化を最小化に直すため符号を反転し、データ数で割ります。
$$ \begin{equation} L_{\text{BCE}} = -\frac{1}{n}\sum_{i=1}^{n}\left[y_i\ln p_i + (1-y_i)\ln(1-p_i)\right] \end{equation} $$
これが交差エントロピー損失(binary cross-entropy)です。深層学習で当たり前のように使われるこの損失関数が、「尤度を最大化する」という統計学の原則から機械的に導かれた点に注目してください。天下り的に与えられた式ではありません。

左が1データ点の尤度、右がその対数にマイナスを付けた損失です。右のグラフの形が本質的です。正解が $y=1$ のときに $p=0.5$ と答えれば損失は $0.693$ ですが、$p=0.1$ と外せば $2.303$、$p=0.01$ まで自信を持って間違えると $4.605$ へと跳ね上がります。自信のある誤答ほど、青天井で罰せられるわけです。
この非対称な罰の与え方が、確率の値そのものを正直にする力になります。「とりあえず全部0.5と答える」戦略が損失を減らせないため、モデルは本当に確信がある場合にだけ極端な値を出すようになる——これが、ロジスティック回帰の出力が確率としてよく較正される理由です。
勾配の導出
損失を最小化するため、勾配を計算します。ここでシグモイドの微分 $\sigma'(z) = \sigma(z)(1-\sigma(z))$ が効いてきます。
対数尤度 $\ell$ を $\bm{w}$ で微分します。連鎖律により $\partial\ell/\partial\bm{w} = \sum_i (\partial \ell/\partial p_i)(\partial p_i/\partial z_i)(\partial z_i /\partial \bm{w})$ と分解できるので、順に計算します。
$$ \begin{align} \frac{\partial \ell}{\partial p_i} &= \frac{y_i}{p_i} – \frac{1-y_i}{1-p_i} = \frac{y_i – p_i}{p_i(1-p_i)} \\ \frac{\partial p_i}{\partial z_i} &= p_i(1-p_i) \\ \frac{\partial z_i}{\partial \bm{w}} &= \bm{x}_i \end{align} $$
3つを掛け合わせると、$p_i(1-p_i)$ がきれいに約分されて消えます。
$$ \begin{equation} \frac{\partial \ell}{\partial \bm{w}} = \sum_{i=1}^{n} (y_i – p_i)\bm{x}_i \end{equation} $$
残ったのは驚くほど素直な式です。$(y_i – p_i)$ は予測の誤差そのものであり、誤差の大きさで重み付けした入力の和が勾配になっています。線形回帰の勾配とまったく同じ形であることにも注目してください。シグモイドという非線形性を入れたにもかかわらず、交差エントロピー損失と組み合わせると、微分の段階で非線形性が相殺されるのです。これは偶然ではなく、シグモイドと交差エントロピーが「対」として設計されていることの表れです。
勾配降下法による更新式は次のようになります($\eta$ は学習率)。
$$ \begin{equation} \bm{w} \leftarrow \bm{w} + \eta \sum_{i=1}^{n}(y_i – p_i)\bm{x}_i, \qquad b \leftarrow b + \eta \sum_{i=1}^{n}(y_i – p_i) \end{equation} $$
線形回帰と違い、解析解は存在しません。$p_i$ が $\bm{w}$ に非線形に依存するため、$\partial\ell/\partial\bm{w}=0$ を $\bm{w}$ について解くことができないからです。したがって反復計算が必須になります。
なぜ二乗誤差ではだめなのか
ここで、多くの人が一度は抱く疑問に答えておきます。「シグモイドで確率を出したのだから、線形回帰と同じように二乗誤差 $\sum(y_i – p_i)^2$ を最小化してもいいのでは?」
答えは明確にだめです。理由は損失地形を描くとひと目でわかります。

同じデータ・同じモデルに対し、左が二乗誤差、右が交差エントロピーの損失地形です(明るいほど損失が大きい)。左では、最適点から離れた領域がべったりと平坦な高原になっています。この高原に迷い込んだ勾配降下法は、進むべき方向を見失って停止します。右の交差エントロピーでは、遠く離れた場所にもはっきりした傾斜があり、どこから出発しても谷へ向かって降りていけます。
最適点から遠い領域で勾配の大きさを実測すると、二乗誤差が $1.9\times10^{-6}$、交差エントロピーが $3.20$ でした。約170万倍の差です。二乗誤差は数学的に誤りというわけではありませんが、実用上まったく学習が進みません。
理由は勾配の式にあります。二乗誤差を使うと、微分の際にシグモイドの微分 $p(1-p)$ が約分されずに残ります。
$$ \begin{equation} \frac{\partial}{\partial \bm{w}}\sum_i (y_i-p_i)^2 = -2\sum_i (y_i-p_i)\, p_i(1-p_i)\, \bm{x}_i \end{equation} $$
$p_i$ が $0$ や $1$ に近いとき $p_i(1-p_i) \approx 0$ なので、たとえ $(y_i – p_i)$ が大きく間違っていても勾配はほぼゼロになります。自信満々に間違えているときほど修正が効かないという、最悪の性質です。交差エントロピーではこの項が約分で消えるため、間違いの大きさがそのまま修正量になります。
加えて、二乗誤差とシグモイドの組み合わせは非凸になり得るため、局所解に陥る危険もあります。交差エントロピー損失はパラメータについて凸であることが証明でき、局所解が存在しません。
学習の様子を見る
実際に勾配降下法を走らせてみます。まず学習率の影響です。

原点から出発した3本の軌跡です。学習率 $0.05$ では300回反復しても $w=0.35$ までしか進めず、損失は $0.500$ で止まっています(谷はまだ先です)。学習率 $0.5$ は谷筋を素直に降りて損失 $0.368$ に到達しました。学習率 $3.0$ は行き過ぎては戻る動きを繰り返し、300回後の損失は $1.742$ と出発点より悪化しています。凸関数であっても学習率が大きすぎれば発散する、という一般的な事実がここに出ています。
次に、2次元データで決定境界がどう定まっていくかを見ます。

左の学習曲線は単調に減少しています。損失関数が凸であることの恩恵で、学習率さえ適切なら振動なく谷底へ向かいます。右は各段階での決定境界です。30回時点で損失 $0.073$、係数は $(1.87, 1.16)$。150回で $0.038$、600回で $0.026$、3000回で $0.022$ となり、境界の位置(向き)はほぼ早い段階で決まり、その後は係数の絶対値だけが伸び続けていることが読み取れます。
この「係数が伸び続ける」現象は見逃せません。境界の位置が同じでも $\|\bm{w}\|$ が大きくなると、シグモイドの立ち上がりが急になり、予測確率が0と1に張り付いていきます。損失を下げるために、モデルは判断をどんどん過激にしていくのです。この性質は最後の節で扱う完全分離の問題に直結します。
係数をどう読むか
ロジスティック回帰が実務で好まれる最大の理由は、係数が解釈できることです。ただし「$x$ が1増えると確率が $w$ 増える」ではありません。ここを間違えると結論が変わります。
正しくは対数オッズの世界で考えます。$x$ が1増えると対数オッズが $w$ 増えるので、指数を取れば
$$ \begin{equation} \frac{\text{オッズ}(x+1)}{\text{オッズ}(x)} = e^{w} \end{equation} $$
つまりオッズが $e^w$ 倍になる。この $e^w$ をオッズ比と呼び、医学論文などで報告される標準的な指標です。

左は対数オッズの世界で、係数 $w=1.376$ の直線になっています。勉強時間を1時間増やすとオッズは $e^{1.376} = 3.96$ 倍、2時間なら $15.69$ 倍です。増加分ではなく倍率が一定である点がポイントで、この一定性のおかげで「1時間の勉強はオッズを約4倍にする」と、$x$ の値によらない形で結論を述べられます。
右は同じことを確率の目盛りで見たものです。2時間の地点から1時間増やすと確率は $0.017 \to 0.063$($+0.046$)ですが、5時間の地点では $0.511 \to 0.806$($+0.294$)と6倍以上効き、8時間では $0.985 \to 0.996$($+0.011$)とほとんど動きません。同じ1時間の勉強でも、どこにいるかで効果がまるで違うわけです。確率の増分で語ろうとすると「場合による」としか言えなくなる。だからオッズ比で語るのです。
完全分離 — 最尤推定が壊れるとき
最後に、教科書では省かれがちですが実務では頻繁に遭遇する問題を扱います。2つのクラスが直線で完全に分離できてしまう場合です。

左のようにデータが綺麗に分かれていると、隙間のどこに線を引いても訓練データの正解率は100%になります。境界が一意に決まりません。
さらに悪いことに、前節で見た「係数が伸び続ける」性質がここで暴走します。境界の位置が正しい限り、$\|\bm{w}\|$ を大きくすればするほど予測確率が0と1に近づき、損失は下がり続けるからです。右のグラフが実測で、反復50回で $\|\bm{w}\|=1.81$、500回で $2.67$、5000回で $3.65$、50000回で $4.71$ と、止まる気配がありません。理論上、最尤解は無限遠にあり存在しないのです。
症状としては、係数の標準誤差が異常に大きくなる、あるいはソフトウェアが収束警告を出す形で現れます。実務では、サンプル数に対して説明変数が多いとき、あるいはカテゴリ変数の水準が細かいときに起こりがちです。
処方箋はL2正則化を加えることです。損失に $\lambda\|\bm{w}\|^2$ を足すと、係数を伸ばすことに対価が発生するため、有限の位置で釣り合います。図の緑線が示すとおり、正則化ありでは50回の時点から $\|\bm{w}\| = 1.25$ でぴたりと止まり、反復を1000倍にしても動きません。
この正則化つきロジスティック回帰は、ベイズの立場では係数に正規事前分布を置いたMAP推定に相当します。詳しくはリッジ回帰の記事で扱った対応関係がそのまま適用できます。実際、scikit-learnの LogisticRegression はデフォルトでL2正則化が有効になっています。「正則化なし」がデフォルトでないのは、まさにこの完全分離の問題を避けるためです。
線形回帰との比較
ここまでの内容を整理します。
| 線形回帰 | ロジスティック回帰 | |
|---|---|---|
| 目的変数 | 連続値 | 二値(0/1) |
| 予測するもの | 期待値 $\mathbb{E}[y]$ | 確率 $p(y=1)$ |
| 線形なのは | $y$ そのもの | 対数オッズ $\ln[p/(1-p)]$ |
| 活性化関数 | なし(恒等関数) | シグモイド関数 |
| 損失関数 | 二乗誤差 | 交差エントロピー |
| 導出原理 | 最小二乗法(=正規分布の最尤推定) | ベルヌーイ分布の最尤推定 |
| 解析解 | あり | なし(反復計算が必要) |
| 係数の意味 | $x$ が1増えたときの $y$ の増分 | $x$ が1増えたときのオッズの倍率 $e^w$ |
どちらも一般化線形モデル(GLM)という同じ枠組みの中にあり、目的変数の分布(正規分布かベルヌーイ分布か)と、線形予測子を期待値に結びつける関数(恒等関数かロジット関数か)が違うだけです。この視点に立つと、カウントデータに対するポアソン回帰なども同じ型で理解できます。
まとめ
ロジスティック回帰について、次のことを見てきました。
- 二値分類で確率を出すには、$[0,1]$ をはみ出す線形回帰ではなく、飽和するS字カーブが必要
- モデルの本質は「対数オッズが入力の線形関数」。シグモイドはそれを確率側から書いた形
- 学習はベルヌーイ分布の最尤推定で、そこから交差エントロピー損失が自動的に導かれる
- 勾配は $\sum(y_i-p_i)\bm{x}_i$ という素直な形。シグモイドの微分が約分で消えるため
- 二乗誤差を使うとその約分が起きず、最適点から遠い領域の勾配が交差エントロピーの170万分の1になり学習が止まる
- 係数は確率の増分ではなくオッズ比 $e^w$ として読む
- クラスが完全分離すると最尤解が存在せず係数が発散する。L2正則化が処方箋
ロジスティック回帰は決定境界が直線に限られるため、複雑な形のデータには対応できません。そこから先は、特徴量を非線形に変換する(カーネル法)か、変換自体を学習する(ニューラルネットワーク)かの道に分かれます。どちらへ進むにしても、出力層で起きていることは本記事の内容そのままです。
次のステップとして、以下の記事も参考にしてください。
