# 混同行列と評価指標についてわかりやすく解説！Pythonでの実装も！

> 当サイト【スタビジ】の本記事では、混同行列について解説してきます。混同行列は分類問題で用いられており、Accuracyに限らないモデルの性能を評価することができます。今回は混同行列の定義を解説しつつ、これらの関係性について分かりやすく解説していきます！

- URL: https://toukei-lab.com/confusion_matrix
- 公開: 2023.05.06 / 更新: 2025.02.06
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
当サイト【スタビジ】の本記事では、混同行列について解説してきます。混同行列は分類問題で用いられており、Accuracyに限らないモデルの性能を評価することができます。今回は混同行列の定義を解説しつつ、これらの関係性について分かりやすく解説していきます！
:::

こんにちは！

データサイエンティストのウマたん([@statistics1012](https://twitter.com/statistics1012?lang=ja))です！

今回は混同行列について解説していきます。混同行列とは<mark>2値分類問題や多値分類問題で用いられる行列</mark>であり、混同行列から様々な評価指標を計算することができるため、分類問題には必須な要素です。

そもそも分類問題でもAccuracy（精度）のみで評価してはいけないのか？と思う方もいるでしょう。場合によりますが、<mark>Accuracyのみだとモデルの評価を間違った方向にしてしまう可能性があります</mark>。この問題についても解説していきます！

この記事では、そんな混同行列の定義と評価指標について解説していきながらPythonで実装していきます！

:::point
**・混同行列の定義について解説！**\
**・評価指標**__の性質について解説！__\
**・Pythonで混同行列を見てみよう！**
:::

## 混同行列について解説！

![stories Data-pana](/wp-content/uploads/2021/01/Data-pana-e1615808087658-1024x875.png)

それでは早速、混同行列と評価指標について一気に解説していきます！

まず<mark>混同行列とは「元の教師ラベルと予測結果の2つを表した行列」</mark>と定義されています。

教師ラベルは元から**サンプル**についているラベル（正常・異常）を指します．そして予測結果はデータから**推定**されたラベル（正常・異常）を指します．したがって混同行列は2×2の行列を示していることが分かりますね！

![混同行列](/wp-content/uploads/2023/04/129-1024x576.jpg)

:::talk{who="robotan" side="left"}
これでPositive、Negativeそれぞれで予測して正解したもの、予測して間違えたものの数が分かるんだね！
:::

:::talk{who="umatan" side="right"}
その通り！これらの値を使って評価指標を説明していくよ！
:::

## 評価指標について解説！

![Data Trends](/wp-content/uploads/2020/12/Data-Trends-amico-min-e1615808046774-1024x913.png)

次に評価指標を解説していきます！混同行列における評価指標は大まかに4つあると考えてください。

### 1. Accuracy（精度）

Accuracy（精度）とは<mark>「全データのうち、どれだけ予測が合っていたか」</mark>を示しています！一般的に用いられている指標としてはこちらが挙げられますね！

$Accuracy = \frac{TP+FN}{TP+TN+FN+FP}$

### 2. Recall（再現率）

Recall（再現率）は<mark>「Positiveな実データのうち、どれだけPositiveと予測できたか」</mark>を示しています！「どれだけPositiveな実データを「再現」してるか」と覚えると良いでしょう！

$Recall = \frac{TP}{TP+FN}$

### 3. Precision（適合率）

Precision（適合率）は<mark>「Positiveと予測できたデータのうち、実際にPositiveなデータはどれだけあるか」</mark>を示しています！「Positiveと予測したデータがどれだけPositiveなデータと適合しているか」と覚えると良いでしょう！

$Precision = \frac{TP}{TP+FP}$

### 4. F値

F値とは<mark>「Recallとprecisionの調和平均」</mark>を示しています！RecallとPrecisionはトレードオフの関係性にあります。つまりRecallが上がるとPrecisionは下がり、逆も然りです！したがってRecallとPrecisionを偏らせないで評価したい場合はF値を使います！

$F-measure = \frac{2×Presicion×Recall}{Precision+Recall}$

評価指標に関しては以下の記事でも詳しく解説していますのでチェックしてみてください！

<https://toukei-lab.com/evaluation>

## そもそも何故、混同行列が必要なのか？

![quiz](/wp-content/uploads/2021/01/Exams-amico-min-e1618234275813-1024x955.png)

:::talk{who="robotan" side="left"}
そもそも「どれだけ正解を出しているか」といったAccuracyだけで評価していいものじゃないの？
:::

:::talk{who="umatan" side="right"}
実はAccuracyだけでは、モデルの性能を評価していない可能性があるんだ。この問題について見ていこう！
:::

例えば犬10匹と猫100匹を分類する問題を考えてみましょう！データを収集し、モデルに学習させたところ、次のようになったと考えます。<mark>犬は10匹猫と予測されましたが、猫は100匹猫と予測できました！</mark>

![混同行列　例題](/wp-content/uploads/2023/04/130-1024x576.jpg)

さて、この予測モデルをAccuracyで評価してみましょう！

$Accuracy = \frac{0+100}{0+100+0+10}=0.90…$

素晴らしい予測精度が出ました！予測精度が約90%なので、このモデルはきっと良いモデルです…とはならないのです。

このモデルは猫の予測には役に立つでしょうが、犬の予測には全く役に立たないことが分かりますね．何故なら<mark>犬をきちんと予測した数は0</mark>なのですから！

実際に犬を正解とした場合のRecallとPrecisionを計算すると、TP=0なのでどちらも0になります！<mark>これはデータが偏っていることを示していること</mark>が考えられますね！

このようにPositive, Negativeの数が偏っている場合にAccracyで評価してしまうと、間違った方向に結論付ける危険性があります！したがって問題に適した評価指標を使うことが重要です！

また<mark>「犬を犬と予測した数」を５になったとしましょう</mark>！そうするとRecall、Precisionは$Recall = 5/(5+5)=0.5, Precision=5/(5+0)=5$となり、犬に対する予測精度がある程度改善されていることが確認できました！

## 混同行列をPythonで実装！

![stories pc](/wp-content/uploads/2021/01/All-the-data-bro-e1613475965440-1024x789.png)

それでは実際に**混同行列と評価指標をPythonで実装**しましょう！

混同行列はsklearn.metricsのconfusion_matrix関数、各評価指標はsklearn.metricsから実装できます！このときヒートマップを使って混同行列を表すと見やすいと思います！

```python
import numpy as np
import seaborn as sns
from sklearn.metrics import confusion_matrix, accuracy_score, recall_score, precision_score,f1_score

y_true = [0,0,0,0,0,
         0,1,0,1,0,
         1,0,1,0,1,
         1,1,1,1,1]

y_pred = [0, 1, 0, 1, 0,
          1, 1, 1, 1, 1,
          0, 1, 0, 1, 0,
          1, 0, 1, 0, 1]

cm = confusion_matrix(y_true,y_pred)
sns.heatmap(cm)
print("Accuracy:",accuracy_score(y_true,y_pred))
print("Recall:",recall_score(y_true,y_pred))
print("Presicion:",precision_score(y_true,y_pred))
print("F-measure:",f1_score(y_true,y_pred))
```

![混同行列　Python](/wp-content/uploads/2023/04/66c19942ab4ba346fdb64ccc04cde373-1.jpg)

:::talk{who="umatan" side="right"}
今回の結果はあまりよくないモデルであることを示しているね…、でもPositive、Negative両方とも半分くらいは予測が当たっていることが分かるね！
:::

## 混同行列と評価指標　まとめ

![Happy](/wp-content/uploads/2020/08/Celebration-amico-min-e1618926172675-1024x932.png)

ここまでご覧いただきありがとうございました！

本記事では<mark>混同行列と分類問題の評価指標</mark>についてまとめました！

分類問題では混同行列に基づいて[ROC曲線・AUC](/roc_auc)といった指標を用いることがあります。この指標もモデルを評価するうえで非常に重要な概念となりますので、ぜひスタビジで学びましょう！

このようなデータサイエンスの力を身に付けるためにはスタビジの記事やスクールを活用すると良いでしょう。

そして僕の経験を詰め込んだデータサイエンス特化のスクール[「スタアカ（スタビジアカデミー）」](https://toukei-lab.com/achademy/)を運営していますので，興味のある方はぜひチェックしてみてください！

### AIデータサイエンス特化スクール「スタアカ」

![スタアカ（スタビジアカデミー）のトップページ](/wp-content/uploads/2026/10/achademy-top.jpg)

<table class="table">
<tbody>
<tr>
<th>【価格】</th>
<td>ライトプラン：1,280円/月（全コースが受講し放題）<br>
プレミアムプラン：129,800円（通常149,800円・買い切り）</td>
</tr>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
<tr>
<th>【サポート体制】</th>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
</tr>
<tr>
<th>【受講形式】</th>
<td>オンライン形式</td>
</tr>
<tr>
<th>【学習範囲】</th>
<td>統計学・機械学習・ディープラーニングを網羅的に学ぶ<br>
生成AI（LLM・RAG・プロンプトエンジニアリング）を学ぶ<br>
SQLとPythonを組み合わせて実データを使った様々なワークを行う<br>
実践的なビジネスフレームワークを学ぶ<br>
マーケティングの実行プラン策定</td>
</tr>
</tbody>
</table>

データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「[スタアカ](https://toukei-lab.com/achademy/)」！！

当メディアが運営するスクールです。

月額1,280円のライトプランで、統計学から機械学習・生成AIまで全コースが受講し放題です！

<mark>プレミアムプランでは、24時間以内の質問対応と現役データサイエンティストとの1on1（30分×4回）を実施します！</mark>

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください！

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

<mark>そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解などもあわせて学べるボリューム満点のコース</mark>になっています！

Pythonが初めての人でも学べるようなカリキュラムにしておりますので是非チェックしてみてください！

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったりする盛りだくさんの内容になってます！

:::box
**・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析**\
**・世界最大手小売企業のウォルマートの実データを用いた需要予測**\
**・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定**\
**・生成AIのAPIを使ってチャットボットやAIエージェントを作る**
:::

::button[スタアカの受講はこちら]{href="https://toukei-lab.com/achademy/" note="＼今すぐ試す／"}

データサイエンスに関する記事はこちら！

<https://toukei-lab.com/statistics-freshman>

<https://toukei-lab.com/datascience-book>

データサイエンスを勉強できるスクールやサイトは、ぜひこちらを参考にしてみてください！

<https://toukei-lab.com/datascientist-school>