← 機械学習テキスト 一覧

🎓 レベル:基礎 | 重要度:A(必須)

📎 前提:学習問題の定式化(仮説・損失・経験リスク)線形回帰(最小二乗法と確率的解釈) | 評価:評価指標(分類)とROC・AUC | 数理:最尤法・モーメント法(推定量の作り方と最尤推定量の漸近論)(統計)・一般化線形モデル(ロジスティック・ポアソン回帰)(統計)

要点(BLUF)

1. なぜ線形回帰をそのまま分類に使えないのか

ラベルが y{0,1}y\in\{0,1\} の二値分類で、線形回帰 y^=xβ\hat y = x^\top\beta をそのまま当てはめると2つの問題が起きます。

欲しいのは「xβx^\top\beta という (,)(-\infty,\infty) の値を、確率 (0,1)(0,1) に変換する関数」です。それが次のシグモイドです。

flowchart LR
    X["特徴 x"] --> Z["線形結合 z = xᵀβ(範囲は −∞〜+∞)"]
    Z --> S["シグモイド σ(z)"]
    S --> P["確率 p = P(y=1 | x)(範囲は 0〜1)"]
    P --> D["p ≥ 0.5 ならクラス1, さもなくばクラス0"]

2. シグモイドと対数オッズの線形性

クラス1の確率を、線形結合 z=xβz=x^\top\beta を**シグモイド関数(ロジスティック関数)**に通して定義します:

p=σ(z)=11+ez,z=xβp = \sigma(z) = \frac{1}{1+e^{-z}},\qquad z = x^\top\beta

シグモイドは z+z\to+\infty11zz\to-\infty00z=0z=00.50.5 を取る S 字曲線です。これで (,)(-\infty,\infty) の入力が必ず (0,1)(0,1) に収まります。

要するに:線形回帰の出力を「確率の蛇口」に通して 0011 に絞っただけです。

このモデルの正体は、対数オッズ(log-odds, ロジット)が xx について線形という点にあります。シグモイドを逆に解くと、

logp1p=xβ\log\frac{p}{1-p} = x^\top\beta

が出ます(導出:p=11+ezp=\frac{1}{1+e^{-z}} より p1p=ez\frac{p}{1-p}=e^{z}、両辺の対数を取ると z=xβz=x^\top\beta)。ここで p1p\frac{p}{1-p}オッズ(起こる確率と起こらない確率の比)です。

要するに:ロジスティック回帰は「確率そのもの」ではなく「対数オッズ」を線形モデルで予測しています。だから係数 βj\beta_j は「xjx_j が1増えると対数オッズが βj\beta_j 増える=オッズが eβje^{\beta_j} 倍になる」と解釈できます。これは統計の一般化線形モデル(ロジスティック・ポアソン回帰)で言う「リンク関数がロジット、誤差分布がベルヌーイの GLM」です。

graph LR
    A["対数オッズ log(p/(1−p))<br>= xᵀβ(線形)"] -->|"シグモイドで変換"| B["確率 p(非線形・S字)"]
    B -->|"ロジットで逆変換"| A

3. 交差エントロピー損失=ベルヌーイ分布の最尤推定(導出)

損失をどう決めるか。ここが核心です。各ラベル yiy_i が確率 pi=σ(xiβ)p_i=\sigma(x_i^\top\beta)ベルヌーイ分布から出ると考えます:

P(yixi)=piyi(1pi)1yiP(y_i \mid x_i) = p_i^{\,y_i}\,(1-p_i)^{1-y_i}

これは「yi=1y_i=1 なら pip_iyi=0y_i=0 なら 1pi1-p_i」をひとつの式に畳んだものです(指数 yiy_i1yi1-y_i のどちらかが必ず1で、もう一方は0になり片方が消える)。

データが独立なら全体の尤度は積になり、対数を取ると和になります(対数尤度):

(β)=i=1n[yilogpi+(1yi)log(1pi)]\ell(\beta) = \sum_{i=1}^{n}\Big[\,y_i\log p_i + (1-y_i)\log(1-p_i)\,\Big]

最尤推定は (β)\ell(\beta)最大化することですが、最適化では最小化に揃えるのが慣習なので、符号を反転した負の対数尤度を損失とします。これが**交差エントロピー損失(バイナリ・クロスエントロピー / ログ損失)**です:

  L(β)=i=1n[yilogpi+(1yi)log(1pi)]  \boxed{\;L(\beta) = -\sum_{i=1}^{n}\Big[\,y_i\log p_i + (1-y_i)\log(1-p_i)\,\Big]\;}

要するに:交差エントロピーは天下りの損失ではなく、「ラベルはベルヌーイ分布に従う」という確率モデルの最尤推定そのものです。線形回帰で「二乗誤差=ガウス誤差の最尤」だったのと完全に同じ筋立てで、誤差分布がガウスからベルヌーイに変わっただけです(→ 線形回帰(最小二乗法と確率的解釈)最尤法・モーメント法(推定量の作り方と最尤推定量の漸近論))。

なぜ二乗誤差ではなく交差エントロピーか。1点だけ理由を挙げると、シグモイド出力に二乗誤差を掛けると損失が非凸になり、勾配も飽和域(σ\sigma が0や1に近い所)で消えて学習が止まります。交差エントロピーなら凸性が保たれ、勾配も後述のきれいな形になります。

4. 勾配降下で解く(解析解がない理由と勾配の形)

線形回帰は正規方程式 β^=(XX)1Xy\hat\beta=(X^\top X)^{-1}X^\top y で一発で解けました。ロジスティック回帰はそうはいきません。損失 L(β)L(\beta)β\beta で微分して0と置いても、pi=σ(xiβ)p_i=\sigma(x_i^\top\beta)β\beta について非線形なため、β\beta について閉じた形に解けない(解析解が存在しない)のです。そこで勾配降下法で反復的に最小化します。

勾配を計算すると、驚くほどきれいな形になります。シグモイドの微分 σ(z)=σ(z)(1σ(z))\sigma'(z)=\sigma(z)(1-\sigma(z)) を使って連鎖律を回すと、

βL=i=1n(piyi)xi=X(py)\nabla_\beta L = \sum_{i=1}^{n}\big(p_i - y_i\big)\,x_i = X^\top(p - y)

になります(pp は各 pip_i を並べたベクトル)。

要するに:勾配は「予測確率と正解ラベルの差(残差) ×\times 特徴量」の和です。これは線形回帰の勾配 X(y^y)X^\top(\hat y - y)まったく同じ形で、シグモイドの非線形さも対数も指数も消えています。これは交差エントロピーとシグモイドの相性が良い証拠です。

更新式は学習率 η\eta を使って

ββηX(py)\beta \leftarrow \beta - \eta\,X^\top(p - y)

を収束するまで繰り返すだけです(→ 最適化の詳細は勾配降下のノートで)。

flowchart TB
    A["βを初期化"] --> B["各点の確率 p = σ(Xβ) を計算"]
    B --> C["勾配 ∇L = Xᵀ(p − y) を計算"]
    C --> D["β ← β − η·∇L で更新"]
    D --> E{"収束したか?"}
    E -->|"No"| B
    E -->|"Yes"| F["学習終了"]

損失 L(β)L(\beta)β\beta について(ヘッセ行列 Xdiag(pi(1pi))XX^\top \mathrm{diag}(p_i(1-p_i)) X が半正定値)なので、局所最適に捕まる心配はなく、勾配降下は唯一の大域最小に向かいます。実務ではより速い準ニュートン法(L-BFGS)やニュートン法(IRLS)も使われます。

5. 決定境界が線形になる

予測クラスは「p0.5p\ge 0.5 ならクラス1」で決めます。σ(z)=0.5\sigma(z)=0.5 となるのは z=0z=0 のとき、つまり境界は

xβ=0x^\top\beta = 0

という方程式で表されます。これは xx について**線形(超平面)**です。

要するに:ロジスティック回帰の決定境界は必ず直線(2次元)/平面(高次元)になります。確率の出力は S 字に曲がっていても、クラスの切れ目はまっすぐです。だから本質的に線形分離可能に近いデータ向きで、複雑な境界が要るなら特徴量を非線形変換する(多項式特徴・基底関数 → 多項式回帰と基底関数)か、別の手法(判別分析(LDA・QDA) の QDA、SVM のカーネル等)に移ります。正則化(正則化(Ridge・Lasso・Elastic Net))を入れて過学習を抑えるのも回帰と同じ要領です。

6. 多クラスへの拡張:ソフトマックス回帰

クラスが3つ以上 {1,,K}\{1,\dots,K\} あるときは、クラスごとに重み βk\beta_k を持たせ、ソフトマックス関数で確率に変換します:

P(y=kx)=exβkj=1KexβjP(y=k\mid x) = \frac{e^{\,x^\top\beta_k}}{\sum_{j=1}^{K} e^{\,x^\top\beta_j}}

ソフトマックスは「各クラスのスコア xβkx^\top\beta_k を指数で正にしてから、合計が1になるよう正規化する」操作で、シグモイドの多クラス版です(K=2K=2 にすると2クラスのシグモイドに一致します)。

損失はカテゴリカル交差エントロピー(正解クラスの対数確率の負和)で、勾配はやはり

βkL=i(P(y=kxi)1[yi=k])xi\nabla_{\beta_k} L = \sum_i \big(P(y=k\mid x_i) - \mathbb{1}[y_i=k]\big)\,x_i

という「予測確率 - 正解(ワンホット)」の形になります。

要するに:二値のシグモイド+ベルヌーイ最尤を、多値のソフトマックス+カテゴリカル分布の最尤に置き換えただけで、構造は同一です。この「最後の層がソフトマックス+交差エントロピー」という形は、そのままニューラルネットワークの分類出力層に受け継がれます。

⚠️ よくある誤解

対応するシミュレーション

simulations/logistic_regression.py:2クラスデータにロジスティック回帰を当て、(1) シグモイド関数が線形スコア z=wx+bz=w\cdot x+b0011 の確率に押し込む様子、(2) 確率の地図(ヒートマップ)と決定境界(確率0.5の線)を可視化します。境界の近くほど確率が0.5に近く確信度が低いこと、出力が確率なのでしきい値を動かせること(評価指標(分類)とROC・AUC)が見て取れます。

シグモイド・確率・決定境界

関連ノート