ggplot2を活用した混同行列の可視化方法

データ分析から 混同行列(Confusion Matrix)は、分類モデルのパフォーマンスを評価する際に重要なツールです。 今回は、Rの ggplot2 パッケージを使用して下の図のように混同行列の視覚化方法を説明し、混同行列の各要素を簡単に理解できるように視覚的に表現する方法を紹介します。

혼동행렬 시각화 그림
( ggplot2を活用した混同行列の可視化 )

ggplot2を使った混同行列の可視化

혼동행렬 시각화 개요 그림
( 混同行列の可視化の概要 )

まず、 ggplot2はRで一番よく使われる可視化ライブラリの一つです。 これを使って混同行列を直観的に表現することができます。下記のコードで混同行列をデータフレームの形で生成して、これを ggplot2を使って混同行列を可視化する方法を段階的に説明します。

1.必須ライブラリの読み込み

混同行列を可視化するためには、まず、ggplot2ライブラリをロードする必要があります。 ggplot2はRで様々な可視化をするときに必須で、直感的で洗練されたプロットを作ることができる強力なツールです。

# 必須ライブラリの読み込み
library(ggplot2)

2.混同行列データの生成

混同行列を表すデータを データフレームで生成します。予測値と実際の値を設定し、混同行列の各項目のラベル(TP, FP, FN, TN)を追加します。

# 混乱行列を表すデータフレームを生成します。
confusion_data <- data.frame(
  Predicted = factor(c("Y", "Y", "Y", "N", "N"), levels = c("N", "Y")), # 予測値: NとYレベルを設定 (Nが下)
  Actual = factor(c("Y", "N", "Y", "N"), levels = c("Y", "N")), # 実測値: YとNのレベル設定 (Yが左)
  Label = c("True Positive (TP)", "False Positive (FP)", "False Negative (FN)", "True Negative (TN)")  # 各項目のラベル
)

コード説明:

  • 予測 列はモデルが予測した値です。ここでは Yと Nで構成され、Yは肯定、Nは否定を表します。
  • 実際の 列は実測値であり、予測値と同じように Yと Nを使用します。
  • ラベルは混同行列の各項目に対応するラベルで、TP(真肯定), FP(偽肯定), FN(偽否定), TN(真否定)を表します。

3.ggplot2で混同行列の可視化

では、ggplot2を使って混同行列を可視化してみましょう。 geom_タイル()を使用して各項目をタイル形式で表現し、各タイルにテキストラベル(TP, FP, FN, TN)を追加します。

# ggplot2を使って混同行列を可視化します。
ggplot(confusion_data, aes(x = Actual, y = Predicted)) + # タイル
  geom_tile(fill = "lightblue", color = "black", width = 1, height = 1) + # タイル生成、色と境界線設定
  geom_text(aes(label = Label), size = 5) + #タイルにテキストラベルを追加する。
  labs(title = "Confusion Matrix", subtitle = "Actual (Reference)") + # タイトルと副題追加
  scale_x_discrete(position = "top") + # x軸ラベルを上部に配置する
  theme_minimal() + # 簡潔なテーマの設定
  theme(
    plot.title = element_text(hjust = 0.5, size = 16, face = "bold", margin = margin(b = 10)), # タイトル設定
    plot.subtitle = element_text(hjust = 0.5, size = 12, face = "bold", margin = margin(b = 20)), # サブタイトル設定
    axis.title.x = element_blank(), # x軸タイトルの削除
    axis.title.y = element_text(size = 12, face = "bold", margin = margin(r = 20)), # y軸タイトル設定
    axis.text.x = element_text(size = 12, face = "bold", margin = margin(b = 10)), # x軸ラベル設定
    axis.text.y = element_text(size = 12, face = "bold"), # y軸ラベル設定
    panel.grid = element_blank(), # グリッドを削除します。
    axis.ticks = element_blank(), # 軸目盛りの削除
    plot.margin = margin(t = 50, b = 40) # 余白を設定します。
  )

コード説明:

  • geom_tile(): 混同行列の各項目をタイル形式で描画します。タイルの色は水色、境界線は黒に設定しました。
  • geom_text(): 各タイルの上に混同行列のラベル(TP, FP, FN, TN)を表示します。
  • labs(): タイトルと副題を設定します。副題には「Actual (Reference)」を追加して、実際の値が参照データであることを示します。
  • theme_minimal()背景を白に設定し、不要な要素を削除してグラフを簡潔にします。

4.結果の可視化とグラフスタイルの設定

混同行列を視覚化した結果はポストの冒頭のように表示されます。タイル形式で表示された各項目には トゥルーポジティブ, 偽陽性, 偽陰性, トゥルーネガティブというラベルが追加され、混同行列の意味を簡単に理解することができます。

最終的な全体コード

# 必須ライブラリの読み込み
library(ggplot2)

# 混乱行列を表すデータフレームを生成します。
confusion_data <- data.frame(
  Predicted = factor(c("Y", "Y", "Y", "N", "N"), levels = c("N", "Y")), # 予測値: NとYレベルを設定 (Nが下)
  Actual = factor(c("Y", "N", "Y", "N"), levels = c("Y", "N")), # 実測値: YとNのレベル設定 (Yが上)
  Label = c("True Positive (TP)", "False Positive (FP)", "False Negative (FN)", "True Negative (TN)")  # 各項目のラベル
)

# ggplot2を使って混同行列を可視化します。
ggplot(confusion_data, aes(x = Actual, y = Predicted)) + ggplot(confusion_data, aes(x = Actual, y = Predicted))
  geom_tile(fill = "lightblue", color = "black", width = 1, height = 1) + + geom_tile(fill = "lightblue", color = "black", width = 1, height = 1)
  geom_text(aes(aes(label = Label), size = 5) +
  labs(title = "コンフュージョンマトリクス", subtitle = "実測(参考)") +
  scale_x_discrete(position = "top") +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, size = 16, face = "bold", margin = margin(b = 10))、
    plot.subtitle = element_text(hjust = 0.5, size = 12, face = "bold", margin = margin(b = 20))、
    axis.title.x = element_blank()、
    axis.title.y = element_text(size = 12, face = "bold", margin = margin(r = 20))、
    axis.text.x = element_text(size = 12, face = "bold", margin = margin(b = 10))、
    axis.text.y = element_text(size = 12, face = "bold")、
    panel.grid = element_blank()、
    axis.ticks = element_blank()、
    plot.margin = margin(t = 50, b = 40)
  )

仕上げ

今回の記事では、Rのggplot2を活用して 混同行列 視覚化する方法を学びました。混同行列は分類モデルの性能を評価する重要なツールであり、各項目(TP、FP、FN、TN)の意味を視覚的に表現することで、モデルの精度を簡単に理解することができます。この方法により、混同行列をより直感的に分析することができ、様々なデータに適用してみてください!

混同行列を実際に活用するためにその意味を知るために Rデータ分析の例:Irisデータセットで学ぶ分類と可視化の例 ポストをレビューしてみてください。精度、再現性など、モデルの性能を確認する意味をご理解いただけると思います。

類似の投稿