برنامه نویسی

ماتریس سردرگمی: راهنمای روشن برای درک آن

آیا برای درک ماتریس سردرگمی مشکل دارید؟ تو تنها نیستی. علیرغم نامش، ماتریس سردرگمی می تواند برای بسیاری بسیار گیج کننده باشد. با این حال، ما اینجا هستیم تا آن را برای شما ساده کنیم.

ماتریس سردرگمی چیست؟

ماتریس سردرگمی ابزاری حیاتی در یادگیری ماشینی و آمار است. این به شما کمک می کند عملکرد یک الگوریتم طبقه بندی را ارزیابی کنید. با تقسیم نکات مثبت واقعی، منفی واقعی، مثبت کاذب و منفی کاذب، می توانید تصویر واضحی از عملکرد مدل خود به دست آورید.

چرا ماتریس سردرگمی مهم است؟

  • اندازه‌گیری عملکرد: بینش دقیقی از عملکرد مدل طبقه‌بندی شما ارائه می‌کند.
  • تجزیه و تحلیل خطا: به شناسایی جایی که مدل شما اشتباه می کند کمک می کند و امکان بهبود هدفمند را فراهم می کند.
  • مقایسه مدل: برای مقایسه مدل های مختلف برای انتخاب بهترین آنها ضروری است.

چرا به آن ماتریس “Confusion” می گویند؟

زیرا نشان می دهد که مدل در کجای پیش بینی های خود “گیج” می شود.

چگونه یک ماتریس سردرگمی را تفسیر کنیم؟

  • مثبت واقعی (TP): رویدادهای مثبت به درستی به عنوان مثبت طبقه بندی می شوند.
  • منفی واقعی (TN): رویدادهای منفی به درستی به عنوان منفی طبقه بندی می شوند.
  • مثبت کاذب (FP): (خطای نوع 1) مقادیر منفی به اشتباه به عنوان مثبت طبقه بندی می شوند.
  • منفی کاذب (FN): (خطای نوع 2) مقادیر مثبت به اشتباه به عنوان منفی طبقه بندی می شوند. هرچه جلوتر می رویم، اینها را واضح تر بحث می کنیم.

عملکرد مدل طبقه بندی با استفاده از یک ماتریس سردرگمی ارزیابی می شود. من مطمئن هستم که بسیاری از ما چندین بار این مفهوم را تجربه کرده ایم و هنوز آن را گیج کننده می دانیم. و متوجه شد که چرا آن را ماتریس سردرگمی نامگذاری کرده اند.

در یادگیری نظارت شده، اگر متغیر هدف مقوله ای باشد، مدل طبقه بندی باید داده های آزمون داده شده را به دسته های مربوطه طبقه بندی کند. کارایی داده های طبقه بندی شده برای دسته های مربوطه با استفاده از یک ماتریس سردرگمی بررسی می شود. برای سادگی، اجازه دهید طبقه بندی باینری را در نظر بگیریم.

نتایج مدل طبقه بندی را می توان به چهار نوع دسته بندی کرد:

به عنوان مثال: فکر می کنید که پیتزافروشی جدید را دوست خواهید داشت،
و شما انجام می دهید!

Eg2: یک بیمار بیماری قلبی دارد و مدل نیز همین را پیش‌بینی می‌کند.

به عنوان مثال: شما فکر می کنید که از آن فیلم جدید لذت نخواهید برد، و نه.

به عنوان مثال: یک بیمار بیماری قلبی ندارد و مدل پیش بینی می کند که حال بیمار خوب است.

به عنوان مثال: شما فکر می کنید که بستنی با طعم عجیب عالی خواهد بود، اما این یک فاجعه است.

به عنوان مثال: یک بیمار بیماری قلبی ندارد اما مدل پیش بینی می کند که بیمار بیماری قلبی دارد.

  • منفی کاذب (FN) : (خطای نوع 2)

مشاهدات منفی پیش بینی نادرست (خطای نوع II).

  • مواردی که مدل به اشتباه کلاس منفی را پیش بینی می کند (خطای نوع II).

به عنوان مثال: شما از آن کتاب خسته کننده که به نظر می رسد صرف نظر می کنید، فقط بعداً متوجه می شوید که شگفت انگیز است.

به عنوان مثال: یک بیمار بیماری قلبی دارد اما مدل پیش بینی می کند که بیمار بیماری قلبی ندارد.

توضیحات تصویر

ساخت ماتریس سردرگمی

در اینجا چند مرحله برای نوشتن ماتریس سردرگمی وجود دارد: بیایید دو کاراکتر XY را در نظر بگیریم که X می تواند True یا False باشد و Y می تواند مقدار مثبت یا منفی را بگیرد.

مرحله 1: ماتریس سردرگمی را برای کاراکتر Y پر کنید. این ماتریس فقط بر اساس مقدار پیش بینی شده است، اگر پیش بینی درست باشد، مثبت است در غیر این صورت منفی است.

توضیحات تصویر

گام 2: نویسه اول X را پر کنید. اگر هر دو از یک دسته هستند، واقعی را با پیش بینی شده مقایسه کنید، بگویید Actual is True و Predicted is True fill T (یعنی True) و در غیر این صورت F (یعنی نادرست) را پر کنید.

توضیحات تصویر

اکنون زمان بررسی عملکرد طبقه بندی با استفاده از تعداد TP، FN، FP و TN است.

معیارهای ارزیابی

در نظر بگیرید که نه مقدار واقعی مثبت و نه مقدار منفی وجود دارد که تعداد کمی از آنها به اشتباه توسط مدل طبقه بندی شده اند.

معیارهای کلیدی به دست آمده از ماتریس سردرگمی:

  • دقت: (TP + TN) / (TP + TN + FP + FN)
  • دقت: TP / (TP + FP)
  • فراخوانی: TP / (TP + FN)
  • امتیاز F1: 2 * (دقت * فراخوان) / (دقت + فراخوان)

توضیحات تصویر

فراخوان / نرخ مثبت واقعی (TPR) / حساسیت: در بین رویدادهای واقعی واقعی به ما می گوید که چه تعداد به درستی درست پیش بینی شده اند.

Recall = TP / (TP + FN)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیحات تصویر

دقت، درستی: از بین همه رویدادهایی که به عنوان مثبت پیش بینی می شود، چند مورد در واقع مثبت هستند؟

Precision = TP / (TP + FP)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیحات تصویر

دقت: از بین همه رویدادها نشان می دهد که چه تعداد به درستی پیش بینی شده اند.

Accuracy = ( TP + TN) /(TP + TN + FP + FN )
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

دقت به رویدادهای مثبت و منفی اهمیت یکسانی می دهد، بنابراین زمانی که مجموعه داده های متعادلی داریم از آن استفاده کنید. در غیر این صورت، اکثریت ممکن است طبقه اقلیت را تعصب کنند.

هر چه مقدار Recall، Precision و Accuracy بیشتر باشد، مدل بهتر است.

نرخ طبقه بندی اشتباه (نرخ خطا): چه تعداد به اشتباه در تعداد کل مقادیر طبقه بندی شده اند.

Error Rate = (FP + FN) / (TP + TN + FP + FN)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نرخ مثبت کاذب (FPR)/ویژگی: تعداد مقادیری که به اشتباه به عنوان مثبت طبقه‌بندی می‌شوند در مقابل تعداد کل مقادیر منفی واقعی.

FPR = FP / (FP + TN)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

امتیاز F: این احتمال وجود دارد که دقت کم باشد در حالی که فراخوانی زیاد است یا برعکس، در این سناریو برای ارزیابی مدل باید هم فراخوانی و هم دقت را در نظر بگیریم. از این رو F Score به وجود می آید.

F score = ( 1 + β ^2)* (Precision)* (Recall)/((Precision * β ^2) + Recall)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

فاکتور β وزن یادآوری و دقت را فراهم می کند.

  • β = 1: یادآوری و دقت متعادل هستند
  • β <1: ارزیابی دقیق گرا
  • β > 1: ارزیابی یادآوری محور

وقتی β = 1 به آن امتیاز F1 می گوییم:

F1 score = 2 * Recall * Precision /(Recall + Precision)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هر چه امتیاز F1 بالاتر باشد مدل بهتر است.

پیاده سازی ماتریس سردرگمی

import numpy
from sklearn import metrics
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score, precision_score,
recall_score, f1_score

actual = [1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0]
predicted = [1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0]

confusion_matrix = metrics.confusion_matrix(actual, predicted)

# Finding precision and recall

accuracy = accuracy_score(actual, predicted)
print("Accuracy :", accuracy)

precision = precision_score(actual, predicted)
print("Precision :", precision)

recall = recall_score(actual, predicted)
print("Recall :", recall)

F1= f1_score(actual, predicted)
print("F1 Score:", F1)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیحات تصویر

import seaborn as sns
import matplotlib.pyplot as plt
sns.heatmap(confusion_matrix,
annot=True,
fmt="g",
xticklabels=['0', '1'],
yticklabels=['0', '1'])
plt.ylabel('Actual',fontsize=13)
plt.xlabel('Predicted',fontsize=13)
plt.title('Confusion Matrix',fontsize=17)
plt.show()
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیحات تصویر

مبادله بین Recall و Precision:

در سناریوهای بلادرنگ، جایی که مثبت کاذب نسبت به منفی کاذب اشکالی ندارد، Recall را انتخاب می کنیم. به عنوان مثال: تشخیص سرطان، اگر بیمار مبتلا به سرطان باشد اما منفی تشخیص داده شود، زندگی بیمار در خطر است.

جایی که اشکالی ندارد که منفی کاذب داشته باشیم اما مثبت کاذب نباشیم، از Precision استفاده می کنیم. به عنوان مثال: غیبت برای مجازات یک جنایتکار بهتر از مجازات یک فرد بی گناه است.

نتیجه

درک ماتریس سردرگمی برای هر کسی که با مدل های طبقه بندی کار می کند ضروری است. با ابهام زدایی از مؤلفه ها و کاربردهای آن، امیدواریم آن را کمتر گیج کننده و در جعبه ابزار تجزیه و تحلیل داده های شما مفیدتر کنیم.

پینوشت:

امیدوارم از مقاله لذت برده باشید و در مورد نحوه ساخت ماتریس سردرگمی و ماتریس ارزیابی مانند Recall، Precision، F score و Accuracy اطلاعاتی کسب کرده باشید. لطفا پیشنهادات یا سوالات خود را در قسمت نظرات مطرح کنید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا