統計学 学習ノート

統計検定の4級から1級まで、出題範囲の順に記事と練習問題で学ぶ

準1級-28 応用統計の手法

判別分析

  • フィッシャーの線形判別
  • 2次判別
  • SVM
  • 正準判別
  • ROC
  • AUC
  • 混同行列

はじめに

「このメール、迷惑メールかどうか、どうやって見分けているの?」

受信箱を開くと、怪しいメールだけが別のフォルダに仕分けられていますよね。健康診断でも、検査の値から「異常なし」と「要再検査」に振り分けられます。どちらも、答えが分かっている過去のデータを手本にして、新しい1件をどの群に入れるかを決めています。

実は、ここには2つの問題が隠れています。1つは「境界線をどう引くか」です。もう1つは「その線がどのくらい当たっているかを、どう測るか」です。100件中95件が正解でも、よい仕分けとは限りません。

そこで登場するのが、今回の主役 判別分析(discriminant analysis) です。判別分析とは、所属の群が分かっているデータから判別の規則を作り、新しいデータがどの群に入るかを予測する方法です。

前回の記事では、主成分分析で、データ全体の散らばりが最も大きい向きを探しました。判別分析では、群のラベルを使い、群どうしが最もよく分かれる向きを探します。今回の記事では、線の引き方としてフィッシャーの線形判別、2次判別、正準判別、SVMを学び、評価の道具として混同行列、ROC、AUCについて解説します。

フィッシャーの線形判別:群が最も離れて見える向き

はじめに、判別分析の基本であるフィッシャーの線形判別について解説します。

影絵を思い浮かべてください。2種類の人形の群れに、ある向きから光を当てて、壁に影を映します。光の向きが悪いと、2つの群れの影は重なります。向きがよいと、影はきれいに2つに分かれます。フィッシャーの線形判別 は、この「最もよく分かれる影の向き」を探す方法です。

変数をまとめて xx とし、係数 aa で1つの得点 z=a⊤xz = a^\top x を作ります。これが影の位置です。よい向きとは、群の平均どうしは遠く、各群の中のばらつきは小さい向きです。そこで、次の比を最大にします。

J(a)={a⊤(xˉ1−xˉ2)}2a⊤S aJ(a) = \frac{\{a^\top (\bar{x}_1 - \bar{x}_2)\}^2}{a^\top S\, a}

xˉ1,xˉ2\bar{x}_1, \bar{x}_2 は各群の平均ベクトル、SS は2群をプールした分散共分散行列です。言葉で言うと、「群の間の距離の2乗 ÷ 群の中のばらつき」です。分散分析の FF 比と同じ考え方ですね。

導出の要点は微分です。d=xˉ1−xˉ2d = \bar{x}_1 - \bar{x}_2 と置いて J(a)J(a) を aa で微分し、0と置くと Sa∝dS a \propto d が出ます。したがって、最適な向きは次のとおりです。

a=S−1(xˉ1−xˉ2)a = S^{-1}(\bar{x}_1 - \bar{x}_2)

判別の規則は、2群の平均の中点で切る形になります。

z=a⊤x ≥ a⊤xˉ1+xˉ22  なら群1、それ以外は群2z = a^\top x \ \ge\ a^\top\frac{\bar{x}_1 + \bar{x}_2}{2} \ \text{ なら群1、それ以外は群2}

ここがポイントです。単に平均の差 dd の向きではなく、S−1S^{-1} をかけた向きになります。変数どうしの相関を取り除いた向きを見ているのです。

例題:線形判別の係数と判別

品種Aと品種Bのみかんを、甘さ x1x_1 と大きさ x2x_2 の点数で見分けます。品種Aの平均は (6,4)(6, 4)、品種Bの平均は (3,3)(3, 3)、プールした分散共分散行列は次のとおりです。

S=(2112)S = \begin{pmatrix} 2 & 1 \\ 1 & 2 \end{pmatrix}

点数が (5,4)(5, 4) のみかんは、どちらの品種と判別されるでしょうか?

【解き方】

  1. 逆行列を求める: S−1=13(2−1−12)S^{-1} = \dfrac{1}{3}\begin{pmatrix} 2 & -1 \\ -1 & 2 \end{pmatrix}
  2. 向きを求める: d=(3,1)⊤d = (3, 1)^\top なので、a=S−1d=(5/3, −1/3)⊤a = S^{-1} d = (5/3,\ -1/3)^\top
  3. 切り目を求める: 中点は (4.5,3.5)(4.5, 3.5) で、a⊤(4.5,3.5)⊤=7.5−7/6≈6.33a^\top(4.5, 3.5)^\top = 7.5 - 7/6 \approx 6.33
  4. 得点を求める: z=53×5−13×4=7z = \frac{5}{3} \times 5 - \frac{1}{3} \times 4 = 7

答えは、7 > 6.33 なので品種Aです。

x2x_2 の係数が負になった点に注目してください。品種Aのほうが大きいのに、大きさの点はマイナスに効きます。甘いみかんは大きい傾向があるので、「甘さの割に小さい」ことのほうが品種Aらしさを表すからです。

次に、この方法の理論的な裏づけです。2群が分散共分散行列の等しい多変量正規分布に従うとき、事後確率の大きいほうに判別する規則(ベイズ判別)を計算すると、xx の1次式になります。

log⁡π1f1(x)π2f2(x)=(μ1−μ2)⊤Σ−1(x−μ1+μ22)+log⁡π1π2\log\frac{\pi_1 f_1(x)}{\pi_2 f_2(x)} = (\mu_1 - \mu_2)^\top \Sigma^{-1}\left(x - \frac{\mu_1 + \mu_2}{2}\right) + \log\frac{\pi_1}{\pi_2}

π1,π2\pi_1, \pi_2 は各群の事前確率です。π1=π2\pi_1 = \pi_2 なら最後の項が消えて、フィッシャーの規則と一致します。事前確率に差があれば、切り目だけが log⁡(π1/π2)\log(\pi_1/\pi_2) の分だけ動きます。

群の離れ具合を測る物差しが、マハラノビス距離 です。

Δ2=(μ1−μ2)⊤Σ−1(μ1−μ2)\Delta^2 = (\mu_1 - \mu_2)^\top \Sigma^{-1} (\mu_1 - \mu_2)

ばらつきと相関を考えに入れた距離で、2群の事前確率が等しいとき、誤判別の確率は Φ(−Δ/2)\Phi(-\Delta/2) になります。例題では Δ2=d⊤a=14/3\Delta^2 = d^\top a = 14/3 なので Δ≈2.16\Delta \approx 2.16 で、誤判別の確率は Φ(−1.08)≈0.14\Phi(-1.08) \approx 0.14 です。

試験のポイント:線形判別の向きは S−1(xˉ1−xˉ2)S^{-1}(\bar{x}_1 - \bar{x}_2) です。逆行列をかけ忘れて平均の差をそのまま使うのが、よくある間違いです。

以上が、フィッシャーの線形判別についての解説です。

2次判別:群ごとに散らばりが違うとき

次に、群ごとの散らばりが違うときの2次判別について説明します。

線形判別は、どの群も同じ形の楕円に広がっていると仮定しました。でも、現実はそうとは限りません。例えば、健康な人の検査値は狭い範囲に集まり、病気の人の検査値は広く散らばることがあります。このとき、境界は直線ではなく曲線になります。

各群が N(μk,Σk)N(\mu_k, \Sigma_k) に従うとして、事後確率の対数を比べます。2次判別 では、次の得点が最大の群に判別します。

gk(x)=−12log⁡∣Σk∣−12(x−μk)⊤Σk−1(x−μk)+log⁡πkg_k(x) = -\frac{1}{2}\log|\Sigma_k| - \frac{1}{2}(x - \mu_k)^\top \Sigma_k^{-1}(x - \mu_k) + \log\pi_k

3つの項の意味は、次のとおりです。

【2次判別の得点の中身】

  1. −12log⁡∣Σk∣-\frac{1}{2}\log|\Sigma_k|: 散らばりの大きい群への減点
  2. −12(x−μk)⊤Σk−1(x−μk)-\frac{1}{2}(x - \mu_k)^\top\Sigma_k^{-1}(x - \mu_k): 群 kk までのマハラノビス距離の2乗の半分の減点
  3. log⁡πk\log\pi_k: もともと多い群への加点

xx の2次式の項が群ごとに違うので、境界は曲線になります。Σk\Sigma_k がすべて等しければ2次の項は打ち消し合い、線形判別に戻ります。

例題:1変数の2次判別

群Aは N(0,1)N(0, 1)、群Bは N(2,4)N(2, 4) に従い、事前確率は等しいとします。群Aと判別される xx の範囲を求めましょう。

【解き方】

  1. 得点を書く: gA=−x22g_A = -\dfrac{x^2}{2}、gB=−12log⁡4−(x−2)28g_B = -\dfrac{1}{2}\log 4 - \dfrac{(x-2)^2}{8}
  2. gA=gBg_A = g_B と置いて8倍し、整理する: 3x2+4x−(4+4log⁡4)=03x^2 + 4x - (4 + 4\log 4) = 0
  3. 解の公式で解く: x≈−2.57, 1.24x \approx -2.57,\ 1.24

答えは −2.57<x<1.24-2.57 < x < 1.24 です。この区間の外では、群Bと判別されます。

ここで x=−3x = -3 に注目してください。平均からの差で見ると、群Aまでは3、群Bまでは5で、群Aのほうが近いです。それでも群Bと判別されます。群Bは散らばりが大きいので、遠い値が出やすいからです。線形判別ではこの判断はできません。境界が1つの点になるので、xx が小さいほど必ず群Aになります。

線形と2次のどちらを使うかは、「柔軟さ」と「推定の安定」の綱引きです。変数が pp 個のとき、線形判別では分散共分散行列の要素を全体で p(p+1)/2p(p+1)/2 個推定します。2次判別では、これを群の数だけ推定します。例えば p=10p = 10 の3群なら、55個と165個です。標本が小さいと2次判別は推定が不安定になり、かえって新しいデータの精度が落ちることがあります。

補足(ここは読み飛ばしてOK): 正規分布を仮定せず、群の確率を xx の式で直接モデル化する方法もあります。質的回帰の記事で学んだロジスティック回帰は、その代表です。境界は線形判別と同じく直線になります。

以上が、2次判別についての説明です。

正準判別とSVM:3群以上、そして余白の最大化

続いて、線形判別を広げる2つの方法について解説します。

1. 正準判別

3群以上を一度に見たいときは、影の向きが1本では足りません。そこで、正準判別 を使います。正準判別分析とも呼びます。

群の数を gg とします。群の平均のばらつきを表す行列を BB、群内の分散共分散行列を WW として、次の比を最大にする向きを探します。

a⊤B aa⊤Wa⟹W−1B a=λa\frac{a^\top B\, a}{a^\top W a} \quad\Longrightarrow\quad W^{-1} B\, a = \lambda a

これは、主成分分析と同じ固有値問題です。主成分分析が全体の散らばりの固有ベクトルを見たのに対して、正準判別は W−1BW^{-1}B の固有ベクトルを見ます。固有値 λ\lambda は「その軸の上での、群間 ÷ 群内のばらつき」です。得られる軸を 正準変量 と呼び、大きい固有値から順に使います。

軸の数は、min⁡(g−1, p)\min(g-1,\ p) 個までです。gg 個の群の平均は、g−1g-1 次元の空間に収まるからです。例えば、点が2つなら直線に、3つなら平面に乗りますよね。2群なら軸は1本で、フィッシャーの線形判別と同じものになります。

具体的に見てみましょう。各群の人数が等しい3群の平均が (0,0)(0, 0)、(2,0)(2, 0)、(1,3)(1, 3) で、WW が単位行列だとします。全体の平均は (1,1)(1, 1) で、平均の偏差から BB を作ると、次の行列になります。

B=13∑k=13(xˉk−xˉ)(xˉk−xˉ)⊤=(2/3002)B = \frac{1}{3}\sum_{k=1}^{3} (\bar{x}_k - \bar{x})(\bar{x}_k - \bar{x})^\top = \begin{pmatrix} 2/3 & 0 \\ 0 & 2 \end{pmatrix}

固有値は2と2/3です。第1正準変量は x2x_2 の向きで、全体の 2 ÷ (2 + 2/3) = 75% を説明します。第2正準変量は x1x_1 の向きで、残りの25%です。

2. SVM

SVM(サポートベクターマシン) は、確率モデルを仮定せず、境界線の「余白」を最大にする方法です。

道路を作る場面を想像してください。両側に2つの町の家が並んでいます。家にぶつからないように、できるだけ幅の広い道を通します。道の真ん中の線が判別の境界で、道の幅が マージン です。

群のラベルを yi=±1y_i = \pm 1 とし、境界を w⊤x+b=0w^\top x + b = 0 とします。道の両端を w⊤x+b=±1w^\top x + b = \pm 1 と決めると、道の幅は 2/∥w∥2/\|w\| です。したがって、幅を最大にする問題は、次のように書けます。

min⁡w, b 12∥w∥2ただしyi(w⊤xi+b)≥1(i=1,…,n)\min_{w,\, b}\ \frac{1}{2}\|w\|^2 \quad \text{ただし} \quad y_i(w^\top x_i + b) \ge 1 \quad (i = 1, \dots, n)

道の端に接している点を サポートベクトル と呼びます。境界を決めるのは、この点だけです。道から遠い家を動かしても、道は変わりません。全員の平均を使う線形判別との大きな違いです。

例えば、+1の群が (3,3)(3, 3)、(4,2)(4, 2)、(5,5)(5, 5) で、−1の群が (1,1)(1, 1)、(0,2)(0, 2)、(0,0)(0, 0) だとします。解は w=(1/2,1/2)⊤w = (1/2, 1/2)^\top、b=−2b = -2 です。

【この例の確かめ】

  • (3,3)(3, 3) と (4,2)(4, 2) は w⊤x+b=1w^\top x + b = 1 で、道の端にある
  • (1,1)(1, 1) と (0,2)(0, 2) は w⊤x+b=−1w^\top x + b = -1 で、道の端にある
  • (5,5)(5, 5) は3、(0,0)(0, 0) は −2 で、道の外にある
  • 道の幅は 2/∥w∥=2÷(2/2)=22≈2.832/\|w\| = 2 \div (\sqrt{2}/2) = 2\sqrt{2} \approx 2.83

サポートベクトルは4点です。(1,1)(1, 1) と (3,3)(3, 3) の距離も 222\sqrt{2} で、確かに道の幅と合います。

現実のデータは、きれいに分かれません。そこで、はみ出しの量 ξi≥0\xi_i \ge 0 を認め、罰金をつけます。これが ソフトマージン です。

min⁡w, b, ξ 12∥w∥2+C∑i=1nξiただしyi(w⊤xi+b)≥1−ξi\min_{w,\, b,\, \xi}\ \frac{1}{2}\|w\|^2 + C\sum_{i=1}^{n}\xi_i \quad \text{ただし} \quad y_i(w^\top x_i + b) \ge 1 - \xi_i

CC が大きいほど、はみ出しに厳しくなります。さらに、データを高い次元へ写して直線で分ける カーネル法 を使うと、元の空間では曲がった境界を作れます。代表はガウスカーネル K(x,x′)=exp⁡(−γ∥x−x′∥2)K(x, x') = \exp(-\gamma\|x - x'\|^2) です。

試験のポイント:SVMの境界を決めるのはサポートベクトルだけです。CC やカーネルの母数は、クロスバリデーションで決めます。

以上が、正準判別とSVMについての解説です。

混同行列・ROC・AUC:判別の成績をつける

最後に、判別の結果を評価する方法を見ていきましょう。

1. 混同行列

混同行列(confusion matrix) は、本当の群と判別結果を組み合わせたクロス表です。ここでは、病気の発見を例に「陽性 = 見つけたい群」とします。

判別:陽性判別:陰性
本当は陽性TP(真陽性)FN(偽陰性)
本当は陰性FP(偽陽性)TN(真陰性)

FPは検定の第一種の過誤に、FNは第二種の過誤にあたります。火災報知器で言えば、FPは料理の煙で鳴る誤報で、FNは火事なのに鳴らない見逃しです。この表から、次の指標を作ります。

【混同行列から作る指標】

  1. 正解率: (TP+TN)÷全体(TP + TN) \div \text{全体}
  2. 感度(再現率、真陽性率): TP÷(TP+FN)TP \div (TP + FN)。本当の陽性のうち、見つけられた割合
  3. 特異度(真陰性率): TN÷(TN+FP)TN \div (TN + FP)。本当の陰性のうち、陰性と言えた割合
  4. 適合率: TP÷(TP+FP)TP \div (TP + FP)。陽性と判別したうち、本当に陽性の割合
  5. F値: 適合率と感度の調和平均

例題:混同行列の読み取り

1,000人の検査で、次の結果が出ました。各指標を求めましょう。

判別:陽性判別:陰性
本当は陽性4010
本当は陰性30920

【解き方】

  1. 正解率: (40 + 920) ÷ 1,000 = 0.96
  2. 感度: 40 ÷ 50 = 0.80
  3. 特異度: 920 ÷ 950 ≈ 0.968
  4. 適合率: 40 ÷ 70 ≈ 0.571
  5. F値: 2 × 0.571 × 0.80 ÷ (0.571 + 0.80) ≈ 0.667

ここがポイントです。正解率0.96は立派に見えます。でも、全員を「陰性」と判別するだけでも、正解率は 950 ÷ 1,000 = 0.95 になります。群の大きさが偏っているとき、正解率はあてになりません。冒頭で「95件正解でも、よいとは限らない」と言ったのは、このことです。

2. ROC曲線とAUC

判別の得点が出るモデルでは、切り目を動かすと、感度と特異度が入れ替わるように変わります。切り目を下げると見逃しは減りますが、誤報が増えます。シーソーのような関係です。

そこで、切り目を動かしながら、横軸に偽陽性率(1 − 特異度)、縦軸に感度をとって点を結びます。これが ROC曲線 です。ROCは receiver operating characteristic(受信者動作特性)の略です。

AUC(area under the curve) は、ROC曲線の下の面積です。

【AUCの読み方】

  • 1: 完全に分けられる
  • 0.5: でたらめ(ROC曲線が対角線になる)
  • 0.5より上で1に近いほど、切り目によらず判別がよい

AUCには、便利な別の見方があります。

AUC=P(陽性の人の得点>陰性の人の得点)\text{AUC} = P(\text{陽性の人の得点} > \text{陰性の人の得点})

言葉で言うと、陽性と陰性を1人ずつランダムに選んだとき、陽性の人の得点が高い確率です。同点は1/2と数えます。ノンパラメトリック法の記事で学んだ、ウィルコクソンの順位和検定と同じ数え方です。

例題:AUCを求める

陽性5人の得点が 0.9, 0.8, 0.7, 0.55, 0.4、陰性5人の得点が 0.6, 0.5, 0.35, 0.3, 0.1 でした。AUCを求めましょう。

【解き方】

  1. 組は 5 × 5 = 25 通り
  2. 陽性の人ごとに、勝てる陰性の人を数える: 0.9, 0.8, 0.7 は5人、0.55 は4人、0.4 は3人
  3. 合計: 5 + 5 + 5 + 4 + 3 = 22
  4. 割り算: 22 ÷ 25 = 0.88

答えは0.88です。例えば切り目を0.55とすると、感度は 4 ÷ 5 = 0.8、偽陽性率は 1 ÷ 5 = 0.2 で、これがROC曲線の上の1点です。

試験のポイント:判別の成績は、学習に使ったデータで測ると甘くなります。別のデータで測るか、クロスバリデーションを使います。

以上が、判別結果の評価についての解説です。

細かい計算を忘れてしまっても問題ありません。ここでは、「線形判別は S−1S^{-1} をかけた向き、評価は正解率だけで決めない」という点だけ押さえておきましょう。

今回のまとめ

それでは、今回の内容を振り返ります。

今回は、群のラベルを手本にして境界を引く判別分析と、その成績のつけ方について紹介しました。線の引き方にはいくつもの流儀がありますが、どれも「群がよく分かれる向きや境界を探す」という点は同じです。そして、よい線かどうかは、1つの数ではなく、どの間違いをどれだけ犯すかで判断します。

今回のポイントを振り返りましょう。

振り返り

  • フィッシャーの線形判別は影絵の向き探し。最適な向きは S−1(xˉ1−xˉ2)S^{-1}(\bar{x}_1 - \bar{x}_2) で、等分散の正規分布のベイズ判別と一致する。
  • 2次判別は群ごとの散らばりの違いを使う。境界は曲線になるが、推定する母数が増える。
  • 正準判別は W−1BW^{-1}B の固有値問題で、軸の数は min⁡(g−1,p)\min(g-1, p) 個まで。
  • SVMは道の幅を最大にする方法で、境界を決めるのはサポートベクトルだけ。
  • 成績は混同行列で見る。群が偏っているとき正解率はあてにならず、ROC曲線とAUCで切り目によらない良さを測る。

キーワードのおさらい

  • フィッシャーの線形判別: 群間の差 ÷ 群内のばらつきを最大にする向きで判別する方法
  • 2次判別: 群ごとに違う分散共分散行列を使い、2次式の境界で判別する方法
  • 正準判別: 3群以上で、群がよく分かれる軸を固有値問題で順に求める方法
  • SVM: マージンを最大にする境界を求める方法
  • 混同行列: 本当の群と判別結果のクロス表
  • ROC: 切り目を動かして偽陽性率と感度の関係を描いた曲線
  • AUC: ROC曲線の下の面積。陽性の得点が陰性の得点を上回る確率

さて、今回は「答えのラベル」がある場面でした。でも、顧客のタイプのように、そもそも何種類あるのかすら分からないこともあります。ラベルがないとき、データはどう分ければよいのでしょうか?

次回は、似たものどうしをまとめる「クラスター分析」について紹介します。

それでは、次の記事へ進んでいきましょう。

練習問題5問開いて挑戦する
問1. 2群の平均の差が d=(2,4)⊤d = (2, 4)^\top、プールした分散共分散行列が S=(1004)S = \begin{pmatrix} 1 & 0 \\ 0 & 4 \end{pmatrix} のとき、フィッシャーの線形判別の向きとして正しいものはどれか。
問2. ある判別の結果は、TP = 30、FN = 20、FP = 10、TN = 140 であった。感度として正しいものはどれか。
問3. 陽性3人の得点が 0.9, 0.6, 0.4、陰性2人の得点が 0.7, 0.3 であった。AUCに最も近いものはどれか。
問4. 線形判別と2次判別の説明として、最も適切なものはどれか。
問5. SVMの解が w=(3,4)⊤w = (3, 4)^\top であった。道の幅にあたるマージン 2/∥w∥2/\|w\| の値として、正しいものはどれか。