آموزش رایگان صفر تا صد یادگیری ماشین (Machine Learning) به زبان ساده
-
خوش آمدید به یادگیری ماشین!
-
میانگین، میانه و مد در یادگیری ماشین
-
انحراف معیار (Standard Deviation) در یادگیری ماشین
-
صدک (Percentile) در یادگیری ماشین
-
توزیع دادهها در یادگیری ماشین
-
توزیع نرمال دادهها در یادگیری ماشین
-
نمودار پراکندگی (Scatter Plot) در یادگیری ماشین
-
رگرسیون خطی در یادگیری ماشینی
-
رگرسیون چندجملهای در یادگیری ماشین
-
رگرسیون چندگانه در یادگیری ماشین
-
روش Train/Test در یادگیری ماشین
-
درخت تصمیمگیری در یادگیری ماشین
-
ماتریس سردرگمی (Confusion Matrix) در یادگیری ماشین
-
خوشهبندی سلسلهمراتبی (Hierarchical Clustering) در یادگیری ماشین
-
رگرسیون لجستیک در یادگیری ماشین
-
Grid Search در یادگیری ماشین
-
پردازش دادههای دستهای (Categorical Data) در یادگیری ماشین
-
خوشهبندی K-Means در یادگیری ماشین
-
یادگیری Bootstrap Aggregation (Bagging) در یادگیری ماشین
-
کراس والیدیشن (Cross Validation) در یادگیری ماشین
-
منحنی AUC - ROC در یادگیری ماشین
-
الگوریتم K-Nearest Neighbors (KNN) در یادگیری ماشین
درخت تصمیمگیری در یادگیری ماشین
درخت تصمیمگیری (Decision Tree) یکی از روشهای محبوب در یادگیری ماشین است که به کمک آن میتوان تصمیمات منطقی را بر اساس تجربیات قبلی گرفت. این روش مثل یک نمودار شاخهای کار میکند و در آن، هر سؤال یا شرط به یک شاخه جدید منتهی میشود.
📌 فهرست مطالب
📌 ماتریس سردرگمی چیست؟
ماتریس سردرگمی یک جدول است که نشان میدهد مدل در پیشبینیهای خود کجا اشتباه کرده است.
🔹 ردیفهای جدول: نشاندهندهی مقدار واقعی (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 به ما کمک میکنند عملکرد مدل را بهتر بسنجیم.
🔹 در نهایت، میتوان با استفاده از این معیارها، مدل را بهینه کرد و دقت آن را افزایش داد. 🚀