Processing math: 100%
بازگشت به دوره

آموزش رایگان صفر تا صد یادگیری ماشین (Machine Learning) به زبان ساده

0% تکمیل‌شده
0/0 مرحله

درخت تصمیم‌گیری (Decision Tree) یکی از روش‌های محبوب در یادگیری ماشین است که به کمک آن می‌توان تصمیمات منطقی را بر اساس تجربیات قبلی گرفت. این روش مثل یک نمودار شاخه‌ای کار می‌کند و در آن، هر سؤال یا شرط به یک شاخه جدید منتهی می‌شود.

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

📌 فهرست مطالب

  1. ماتریس سردرگمی چیست؟
  2. چگونه ماتریس سردرگمی بسازیم؟
  3. تحلیل خروجی ماتریس سردرگمی
  4. معیارهای ارزیابی مدل
  5. مثال عملی در پایتون

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

ماتریس سردرگمی یک جدول است که نشان می‌دهد مدل در پیش‌بینی‌های خود کجا اشتباه کرده است.

🔹 ردیف‌های جدول: نشان‌دهنده‌ی مقدار واقعی (Actual Values) هستند.
🔹 ستون‌های جدول: نشان‌دهنده‌ی مقدار پیش‌بینی‌شده (Predicted Values) هستند.

📌 چرا از ماتریس سردرگمی استفاده کنیم؟
گاهی ممکن است مدل دقت بالایی داشته باشد، اما در پیش‌بینی برخی کلاس‌های خاص دچار خطا شود. این جدول به ما کمک می‌کند بفهمیم مدل ما کجا اشتباه کرده است.

📌 چگونه ماتریس سردرگمی بسازیم؟

یکی از روش‌های رایج برای ایجاد ماتریس سردرگمی استفاده از رگرسیون لجستیک (Logistic Regression) است. اما در اینجا، برای سادگی، داده‌های تصادفی را با کمک NumPy تولید می‌کنیم.

📌 گام اول: وارد کردن کتابخانه‌های لازم

ابتدا باید کتابخانه‌های موردنیاز را در پایتون ایمپورت کنیم:

import numpy
from sklearn import metrics
import matplotlib.pyplot as plt

📌 گام دوم: تولید داده‌های تصادفی

برای شبیه‌سازی داده‌های واقعی، دو آرایه تولید می‌کنیم که یکی مقدار واقعی (actual) و دیگری مقدار پیش‌بینی‌شده (predicted) است:

actual = numpy.random.binomial(1, 0.9, size=1000)
predicted = numpy.random.binomial(1, 0.9, size=1000)

📌 گام سوم: ایجاد ماتریس سردرگمی

حالا با استفاده از metrics.confusion_matrix() ماتریس را می‌سازیم:

confusion_matrix = metrics.confusion_matrix(actual, predicted)

📌 گام چهارم: نمایش گرافیکی ماتریس

برای نمایش بهتر، از ConfusionMatrixDisplay کمک می‌گیریم:

cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix=confusion_matrix, display_labels=[0, 1])
cm_display.plot()
plt.show()

نتیجه: یک نمودار تصویری از ماتریس سردرگمی که به ما نشان می‌دهد مدل در کجاها دچار خطا شده است.

📌 تحلیل خروجی ماتریس سردرگمی

ماتریس سردرگمی به چهار بخش تقسیم می‌شود:

ماتریس درهم‌ریختگی
واقعی \ پیش‌بینی‌شدهمنفی (0)مثبت (1)
منفی (0)TN (True Negative) ✅FP (False Positive) ❌
مثبت (1)FN (False Negative) ❌TP (True Positive) ✅

📌 توضیحات:

🔹 True Positive (TP): پیش‌بینی درست برای کلاس مثبت
🔹 True Negative (TN): پیش‌بینی درست برای کلاس منفی
🔹 False Positive (FP): پیش‌بینی اشتباه برای کلاس مثبت (خطای نوع اول)
🔹 False Negative (FN): پیش‌بینی اشتباه برای کلاس منفی (خطای نوع دوم)

📌 معیارهای ارزیابی مدل

پس از ساخت ماتریس سردرگمی، می‌توانیم معیارهای مهمی برای ارزیابی مدل محاسبه کنیم.

📌 1. دقت (Accuracy)

🔹 فرمول:


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

🔹 محاسبه در پایتون:

accuracy = metrics.accuracy_score(actual, predicted)

📌 2. دقت مثبت (Precision)

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


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

🔹 محاسبه در پایتون:

precision = metrics.precision_score(actual, predicted)

📌 3. حساسیت (Recall یا Sensitivity)

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


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

🔹 محاسبه در پایتون:

recall = metrics.recall_score(actual, predicted)

📌 4. ویژگی (Specificity)

🔹 مدل چقدر در تشخیص موارد منفی خوب عمل کرده است؟
🔹 فرمول:


Specificity = \frac{TN}{TN + FP}

🔹 محاسبه در پایتون:

specificity = metrics.recall_score(actual, predicted, pos_label=0)

📌 5. امتیاز F1 (F1 Score)

🔹 میانگین هارمونیک Precision و Recall است.
🔹 فرمول:


F1 = \frac{2 \times Precision \times Recall}{Precision + Recall}

🔹 محاسبه در پایتون:

f1_score = metrics.f1_score(actual, predicted)

📌 مثال کامل در پایتون

در اینجا تمامی محاسبات را در یک مثال قرار داده‌ایم:

import numpy
import matplotlib.pyplot as plt
from sklearn import metrics

# تولید داده‌های تصادفی
actual = numpy.random.binomial(1, 0.9, size=1000)
predicted = numpy.random.binomial(1, 0.9, size=1000)

# ایجاد ماتریس سردرگمی
confusion_matrix = metrics.confusion_matrix(actual, predicted)
cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix=confusion_matrix, display_labels=[0, 1])

# نمایش ماتریس
cm_display.plot()
plt.show()

# محاسبه معیارها
accuracy = metrics.accuracy_score(actual, predicted)
precision = metrics.precision_score(actual, predicted)
recall = metrics.recall_score(actual, predicted)
specificity = metrics.recall_score(actual, predicted, pos_label=0)
f1_score = metrics.f1_score(actual, predicted)

# نمایش نتایج
print({
    "Accuracy": accuracy,
    "Precision": precision,
    "Recall": recall,
    "Specificity": specificity,
    "F1 Score": f1_score
})

نتیجه: محاسبه تمامی معیارهای مهم برای ارزیابی مدل دسته‌بندی.


📌 جمع‌بندی

🔹 ماتریس سردرگمی ابزاری عالی برای تحلیل عملکرد مدل‌های یادگیری ماشین است.
🔹 معیارهایی مثل دقت (Accuracy)، حساسیت (Recall)، دقت مثبت (Precision) و امتیاز F1 به ما کمک می‌کنند عملکرد مدل را بهتر بسنجیم.
🔹 در نهایت، می‌توان با استفاده از این معیارها، مدل را بهینه کرد و دقت آن را افزایش داد. 🚀