準1級-28 応用統計の手法
判別分析
- フィッシャーの線形判別
- 2次判別
- SVM
- 正準判別
- ROC
- AUC
- 混同行列
はじめに
「このメール、迷惑メールかどうか、どうやって見分けているの?」
受信箱を開くと、怪しいメールだけが別のフォルダに仕分けられていますよね。健康診断でも、検査の値から「異常なし」と「要再検査」に振り分けられます。どちらも、答えが分かっている過去のデータを手本にして、新しい1件をどの群に入れるかを決めています。
実は、ここには2つの問題が隠れています。1つは「境界線をどう引くか」です。もう1つは「その線がどのくらい当たっているかを、どう測るか」です。100件中95件が正解でも、よい仕分けとは限りません。
そこで登場するのが、今回の主役 判別分析(discriminant analysis) です。判別分析とは、所属の群が分かっているデータから判別の規則を作り、新しいデータがどの群に入るかを予測する方法です。
前回の記事では、主成分分析で、データ全体の散らばりが最も大きい向きを探しました。判別分析では、群のラベルを使い、群どうしが最もよく分かれる向きを探します。今回の記事では、線の引き方としてフィッシャーの線形判別、2次判別、正準判別、SVMを学び、評価の道具として混同行列、ROC、AUCについて解説します。
フィッシャーの線形判別:群が最も離れて見える向き
はじめに、判別分析の基本であるフィッシャーの線形判別について解説します。
影絵を思い浮かべてください。2種類の人形の群れに、ある向きから光を当てて、壁に影を映します。光の向きが悪いと、2つの群れの影は重なります。向きがよいと、影はきれいに2つに分かれます。フィッシャーの線形判別 は、この「最もよく分かれる影の向き」を探す方法です。
変数をまとめて とし、係数 で1つの得点 を作ります。これが影の位置です。よい向きとは、群の平均どうしは遠く、各群の中のばらつきは小さい向きです。そこで、次の比を最大にします。
は各群の平均ベクトル、 は2群をプールした分散共分散行列です。言葉で言うと、「群の間の距離の2乗 ÷ 群の中のばらつき」です。分散分析の 比と同じ考え方ですね。
導出の要点は微分です。 と置いて を で微分し、0と置くと が出ます。したがって、最適な向きは次のとおりです。
判別の規則は、2群の平均の中点で切る形になります。
ここがポイントです。単に平均の差 の向きではなく、 をかけた向きになります。変数どうしの相関を取り除いた向きを見ているのです。
例題:線形判別の係数と判別
品種Aと品種Bのみかんを、甘さ と大きさ の点数で見分けます。品種Aの平均は 、品種Bの平均は 、プールした分散共分散行列は次のとおりです。
点数が のみかんは、どちらの品種と判別されるでしょうか?
【解き方】
- 逆行列を求める:
- 向きを求める: なので、
- 切り目を求める: 中点は で、
- 得点を求める:
答えは、7 > 6.33 なので品種Aです。
の係数が負になった点に注目してください。品種Aのほうが大きいのに、大きさの点はマイナスに効きます。甘いみかんは大きい傾向があるので、「甘さの割に小さい」ことのほうが品種Aらしさを表すからです。
次に、この方法の理論的な裏づけです。2群が分散共分散行列の等しい多変量正規分布に従うとき、事後確率の大きいほうに判別する規則(ベイズ判別)を計算すると、 の1次式になります。
は各群の事前確率です。 なら最後の項が消えて、フィッシャーの規則と一致します。事前確率に差があれば、切り目だけが の分だけ動きます。
群の離れ具合を測る物差しが、マハラノビス距離 です。
ばらつきと相関を考えに入れた距離で、2群の事前確率が等しいとき、誤判別の確率は になります。例題では なので で、誤判別の確率は です。
試験のポイント:線形判別の向きは です。逆行列をかけ忘れて平均の差をそのまま使うのが、よくある間違いです。
以上が、フィッシャーの線形判別についての解説です。
2次判別:群ごとに散らばりが違うとき
次に、群ごとの散らばりが違うときの2次判別について説明します。
線形判別は、どの群も同じ形の楕円に広がっていると仮定しました。でも、現実はそうとは限りません。例えば、健康な人の検査値は狭い範囲に集まり、病気の人の検査値は広く散らばることがあります。このとき、境界は直線ではなく曲線になります。
各群が に従うとして、事後確率の対数を比べます。2次判別 では、次の得点が最大の群に判別します。
3つの項の意味は、次のとおりです。
【2次判別の得点の中身】
- : 散らばりの大きい群への減点
- : 群 までのマハラノビス距離の2乗の半分の減点
- : もともと多い群への加点
の2次式の項が群ごとに違うので、境界は曲線になります。 がすべて等しければ2次の項は打ち消し合い、線形判別に戻ります。
例題:1変数の2次判別
群Aは 、群Bは に従い、事前確率は等しいとします。群Aと判別される の範囲を求めましょう。
【解き方】
- 得点を書く: 、
- と置いて8倍し、整理する:
- 解の公式で解く:
答えは です。この区間の外では、群Bと判別されます。
ここで に注目してください。平均からの差で見ると、群Aまでは3、群Bまでは5で、群Aのほうが近いです。それでも群Bと判別されます。群Bは散らばりが大きいので、遠い値が出やすいからです。線形判別ではこの判断はできません。境界が1つの点になるので、 が小さいほど必ず群Aになります。
線形と2次のどちらを使うかは、「柔軟さ」と「推定の安定」の綱引きです。変数が 個のとき、線形判別では分散共分散行列の要素を全体で 個推定します。2次判別では、これを群の数だけ推定します。例えば の3群なら、55個と165個です。標本が小さいと2次判別は推定が不安定になり、かえって新しいデータの精度が落ちることがあります。
補足(ここは読み飛ばしてOK): 正規分布を仮定せず、群の確率を の式で直接モデル化する方法もあります。質的回帰の記事で学んだロジスティック回帰は、その代表です。境界は線形判別と同じく直線になります。
以上が、2次判別についての説明です。
正準判別とSVM:3群以上、そして余白の最大化
続いて、線形判別を広げる2つの方法について解説します。
1. 正準判別
3群以上を一度に見たいときは、影の向きが1本では足りません。そこで、正準判別 を使います。正準判別分析とも呼びます。
群の数を とします。群の平均のばらつきを表す行列を 、群内の分散共分散行列を として、次の比を最大にする向きを探します。
これは、主成分分析と同じ固有値問題です。主成分分析が全体の散らばりの固有ベクトルを見たのに対して、正準判別は の固有ベクトルを見ます。固有値 は「その軸の上での、群間 ÷ 群内のばらつき」です。得られる軸を 正準変量 と呼び、大きい固有値から順に使います。
軸の数は、 個までです。 個の群の平均は、 次元の空間に収まるからです。例えば、点が2つなら直線に、3つなら平面に乗りますよね。2群なら軸は1本で、フィッシャーの線形判別と同じものになります。
具体的に見てみましょう。各群の人数が等しい3群の平均が 、、 で、 が単位行列だとします。全体の平均は で、平均の偏差から を作ると、次の行列になります。
固有値は2と2/3です。第1正準変量は の向きで、全体の 2 ÷ (2 + 2/3) = 75% を説明します。第2正準変量は の向きで、残りの25%です。
2. SVM
SVM(サポートベクターマシン) は、確率モデルを仮定せず、境界線の「余白」を最大にする方法です。
道路を作る場面を想像してください。両側に2つの町の家が並んでいます。家にぶつからないように、できるだけ幅の広い道を通します。道の真ん中の線が判別の境界で、道の幅が マージン です。
群のラベルを とし、境界を とします。道の両端を と決めると、道の幅は です。したがって、幅を最大にする問題は、次のように書けます。
道の端に接している点を サポートベクトル と呼びます。境界を決めるのは、この点だけです。道から遠い家を動かしても、道は変わりません。全員の平均を使う線形判別との大きな違いです。
例えば、+1の群が 、、 で、−1の群が 、、 だとします。解は 、 です。
【この例の確かめ】
- と は で、道の端にある
- と は で、道の端にある
- は3、 は −2 で、道の外にある
- 道の幅は
サポートベクトルは4点です。 と の距離も で、確かに道の幅と合います。
現実のデータは、きれいに分かれません。そこで、はみ出しの量 を認め、罰金をつけます。これが ソフトマージン です。
が大きいほど、はみ出しに厳しくなります。さらに、データを高い次元へ写して直線で分ける カーネル法 を使うと、元の空間では曲がった境界を作れます。代表はガウスカーネル です。
試験のポイント:SVMの境界を決めるのはサポートベクトルだけです。 やカーネルの母数は、クロスバリデーションで決めます。
以上が、正準判別とSVMについての解説です。
混同行列・ROC・AUC:判別の成績をつける
最後に、判別の結果を評価する方法を見ていきましょう。
1. 混同行列
混同行列(confusion matrix) は、本当の群と判別結果を組み合わせたクロス表です。ここでは、病気の発見を例に「陽性 = 見つけたい群」とします。
| 判別:陽性 | 判別:陰性 | |
|---|---|---|
| 本当は陽性 | TP(真陽性) | FN(偽陰性) |
| 本当は陰性 | FP(偽陽性) | TN(真陰性) |
FPは検定の第一種の過誤に、FNは第二種の過誤にあたります。火災報知器で言えば、FPは料理の煙で鳴る誤報で、FNは火事なのに鳴らない見逃しです。この表から、次の指標を作ります。
【混同行列から作る指標】
- 正解率:
- 感度(再現率、真陽性率): 。本当の陽性のうち、見つけられた割合
- 特異度(真陰性率): 。本当の陰性のうち、陰性と言えた割合
- 適合率: 。陽性と判別したうち、本当に陽性の割合
- F値: 適合率と感度の調和平均
例題:混同行列の読み取り
1,000人の検査で、次の結果が出ました。各指標を求めましょう。
| 判別:陽性 | 判別:陰性 | |
|---|---|---|
| 本当は陽性 | 40 | 10 |
| 本当は陰性 | 30 | 920 |
【解き方】
- 正解率: (40 + 920) ÷ 1,000 = 0.96
- 感度: 40 ÷ 50 = 0.80
- 特異度: 920 ÷ 950 ≈ 0.968
- 適合率: 40 ÷ 70 ≈ 0.571
- 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には、便利な別の見方があります。
言葉で言うと、陽性と陰性を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を求めましょう。
【解き方】
- 組は 5 × 5 = 25 通り
- 陽性の人ごとに、勝てる陰性の人を数える: 0.9, 0.8, 0.7 は5人、0.55 は4人、0.4 は3人
- 合計: 5 + 5 + 5 + 4 + 3 = 22
- 割り算: 22 ÷ 25 = 0.88
答えは0.88です。例えば切り目を0.55とすると、感度は 4 ÷ 5 = 0.8、偽陽性率は 1 ÷ 5 = 0.2 で、これがROC曲線の上の1点です。
試験のポイント:判別の成績は、学習に使ったデータで測ると甘くなります。別のデータで測るか、クロスバリデーションを使います。
以上が、判別結果の評価についての解説です。
細かい計算を忘れてしまっても問題ありません。ここでは、「線形判別は をかけた向き、評価は正解率だけで決めない」という点だけ押さえておきましょう。
今回のまとめ
それでは、今回の内容を振り返ります。
今回は、群のラベルを手本にして境界を引く判別分析と、その成績のつけ方について紹介しました。線の引き方にはいくつもの流儀がありますが、どれも「群がよく分かれる向きや境界を探す」という点は同じです。そして、よい線かどうかは、1つの数ではなく、どの間違いをどれだけ犯すかで判断します。
今回のポイントを振り返りましょう。
振り返り
- フィッシャーの線形判別は影絵の向き探し。最適な向きは で、等分散の正規分布のベイズ判別と一致する。
- 2次判別は群ごとの散らばりの違いを使う。境界は曲線になるが、推定する母数が増える。
- 正準判別は の固有値問題で、軸の数は 個まで。
- SVMは道の幅を最大にする方法で、境界を決めるのはサポートベクトルだけ。
- 成績は混同行列で見る。群が偏っているとき正解率はあてにならず、ROC曲線とAUCで切り目によらない良さを測る。
キーワードのおさらい
- フィッシャーの線形判別: 群間の差 ÷ 群内のばらつきを最大にする向きで判別する方法
- 2次判別: 群ごとに違う分散共分散行列を使い、2次式の境界で判別する方法
- 正準判別: 3群以上で、群がよく分かれる軸を固有値問題で順に求める方法
- SVM: マージンを最大にする境界を求める方法
- 混同行列: 本当の群と判別結果のクロス表
- ROC: 切り目を動かして偽陽性率と感度の関係を描いた曲線
- AUC: ROC曲線の下の面積。陽性の得点が陰性の得点を上回る確率
さて、今回は「答えのラベル」がある場面でした。でも、顧客のタイプのように、そもそも何種類あるのかすら分からないこともあります。ラベルがないとき、データはどう分ければよいのでしょうか?
次回は、似たものどうしをまとめる「クラスター分析」について紹介します。
それでは、次の記事へ進んでいきましょう。