別名・略称:Confusion Matrix、 誤分類行列
混同行列は 分類モデルの予測と真値のクロス集計表。 Precision・Recall・F1 など全ての分類指標の元データになります。
混同行列(Confusion Matrix):予測クラス × 真クラスのクロス集計表
| 予測 陽性 | 予測 陰性 | 行合計 | |
|---|---|---|---|
| 実際 陽性 | TP | FN | P = TP+FN |
| 実際 陰性 | FP | TN | N = FP+TN |
| 列合計 | TP+FP | TN+FN | 総数 |
3×3 表になり、 対角に並ぶのが正解、 非対角が誤分類。 「クラス A をクラス B と誤分類」のパターンを発見できる。
SSDSE-B-2026 を使い、 都道府県を「東日本(東北・関東)」「中西部」「九州沖縄」の 3 地域に分類する場面の混同行列を計算します。 単純な「人口の地理勘」モデルが各地域をどう誤分類するかを確認。
| 真\予測 | 東 | 中西 | 九 | 行合計 |
|---|---|---|---|---|
| 東 | 12 | 2 | 0 | 14 |
| 中西 | 1 | 23 | 1 | 25 |
| 九 | 0 | 2 | 6 | 8 |
| 列合計 | 13 | 27 | 7 | 47 |
対角合計 = 12+23+6 = 41 → Accuracy = 41/47 ≈ 0.872。 「東 → 中西」と誤分類された 2 件、 「中西 → 九」1 件などのパターンが見える。
SSDSE-B-2026(47 都道府県・2023 年)の実データを使った最小コード:
# SSDSE-B-2026 で混同行列を可視化
import pandas as pd, numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay, classification_report
import matplotlib.pyplot as plt
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=1, header=0)
df.columns = pd.read_csv('data/raw/SSDSE-B-2026.csv', nrows=0).columns
east = ['北海道','青森県','岩手県','宮城県','秋田県','山形県','福島県','茨城県','栃木県','群馬県','埼玉県','千葉県','東京都','神奈川県']
kyushu = ['福岡県','佐賀県','長崎県','熊本県','大分県','宮崎県','鹿児島県','沖縄県']
df['region'] = df['Prefecture'].apply(lambda p: 0 if p in east else (2 if p in kyushu else 1))
X = df[['A1101', 'F3101', 'A4101']].astype(float).values
X = (X - X.mean(0)) / X.std(0)
y = df['region'].values
model = LogisticRegression(multi_class='multinomial', max_iter=1000).fit(X, y)
y_pred = model.predict(X)
cm = confusion_matrix(y, y_pred)
print('混同行列(行=真, 列=予測):')
print(cm)
print(classification_report(y, y_pred, target_names=['東','中西','九'], digits=3))
# ヒートマップ表示
disp = ConfusionMatrixDisplay(cm, display_labels=['東','中西','九'])
disp.plot(cmap='Blues'); plt.title('Confusion Matrix'); plt.show()
混同行列(Confusion Matrix)の歩みを年表で整理します。 概念の登場、 重要論文、 実装の進化、 産業応用への展開を追うことで、 現在地と未来予測の両方が見えてきます。
こうした経緯を知ることで、 「なぜこの手法/指標が標準になったのか」が腑に落ちます。 単に手順を覚えるより、 背景にある問題意識を理解する方が応用力が伸びます。
「混同行列」は、 学術論文だけでなく 実産業の意思決定で幅広く使われています。 業界別の代表例:
| 業界 | 活用例 | 期待効果 |
|---|---|---|
| IT・Web | 検索結果のランキング、 推薦システム | ユーザー体験向上、 売上 5-10% 改善 |
| 金融 | 信用リスク評価、 不正検知 | 損失削減、 不正取引の早期発見 |
| 医療 | 画像診断補助、 患者リスク層別化 | 診断精度向上、 医師負担軽減 |
| 製造 | 品質検査、 予知保全 | 不良率低下、 ダウンタイム削減 |
| 小売 | 需要予測、 在庫最適化 | 在庫コスト 10-20% 削減 |
| 公的統計 | SSDSE による地域分析 | 政策立案の根拠提供 |
どの業界でも共通するのは「データから意思決定の不確実性を減らす」という目的。 そのために 混同行列 がツールとして選ばれます。
関連手法と比較しながら、 混同行列 の立ち位置を整理します。
| アプローチ | 特徴 | データ要件 | 注意点 |
|---|---|---|---|
| 古典統計 | 強い数学的前提・解釈性高い | サンプル小でも使える | 前提が崩れると無力 |
| 古典 ML | 前提弱め・解釈性中 | 数百〜数万件で実用 | 特徴量設計が必要 |
| 深層学習 | 前提ほぼ無し・解釈性低 | 数万〜数億件で真価 | 計算資源と Data が大量に必要 |
「どれが最強か」ではなく「どの場面でどれが適切か」を判断できることが重要。 トレードオフを意識しましょう。
混同行列の周辺概念をテーマ別ツリーで整理:
(上位概念) ├── (同カテゴリ並列概念) ├── 【混同行列】 ← ここ │ ├── (派生 1) │ ├── (派生 2) │ └── (派生 3) └── (関連手法)
この階層構造を頭に入れておくと、 学習や論文読みで「自分が今どこにいるか」を見失わずに済みます。
「混同行列」を確実にマスターするには、 次の順序で進むのが効率的です:
焦らず、 1 段ずつ確実に。 7 ステップを 1 周すれば、 単に「知っている」から「使える」レベルに到達できます。
「混同行列」を実務で適用するステップを整理します:
この 6 ステップを守れば、 大きな失敗はほぼ防げます。 急いで結論を出す前に、 まず STEP 1 と STEP 3 をしっかり。
背景:47 都道府県を 1 行ずつ含む SSDSE-B-2026 を題材に、 混同行列 を用いた実分析シナリオを示します。 公的統計データなので合成データの危険なく学習できます。
| パターン | 目的 | 本用語の使い方 |
|---|---|---|
| 記述 | 現状把握 | 混同行列 を 47 県全体に適用し平均・分布を見る |
| 対比 | 地域差発見 | 地域グループごとに 混同行列 を計算して比較 |
| 関係 | 変数間関係 | 複数指標で 混同行列 を見て相関や因果を探る |
| 予測 | 他県・将来 | 混同行列 に基づくモデルで予測値を算出 |
| 検証 | 仮説確認 | 事前仮説を 混同行列 の値で検証 |
SSDSE-B は 47 件と少ないため、 機械学習の本格的なモデル評価には不十分ですが、 統計の基本概念学習には理想的なサイズです。
| 項目 | 内容 |
|---|---|
| 日本語名 | 混同行列 |
| 英語名 | Confusion Matrix |
| 別名 | Confusion Matrix、 誤分類行列 |
| 一行サマリ | 予測クラス × 真クラスのクロス集計表 |
| 主な用途 | 予測・分類・分析・評価など、 タスクに応じて使い分け。 |
| Python 実装 | pandas, numpy, scipy, sklearn, PyTorch などを組み合わせて使用。 |
| 典型データ規模 | 数十〜数十万件で実用可。 ただしモデルにより必要量が異なる。 |
| 注意点 | 適用条件の確認、 リーク防止、 不確実性の報告、 結果の解釈と限界。 |
5 問すべて手を動かせば、 本ページの内容は身についています。