طبقهبندی دودویی
طبقهبندی دودویی(باینری)[ویرایش]
طبقهبندی دودویی(باینری) (به انگلیسی: Binary classification) در یادگیری ماشین، یک الگوریتم یادگیری نظارتشده است که به مشاهدات جدید را در یکی از دو گروه ممکن دستهبندی میکند. معمولاً این دو گروه را با اعداد 0 و 1 برای دو گروه نمایش میدهند.
در جدول زیر به مثالهایی از کاربرد طبقهبندی دودویی در زمینههای مختلف اشاره شده است.
گروه 1 | گروه 0 | مشاهده | کاربرد |
---|---|---|---|
بیمار | سالم | بیمار | تشخیص پزشکی |
اسپم | غیر اسپم | ایمیل | تحلیل پست الکترونیکی |
تقلبی | غیر تقلبی | تراکنش | تحلیل داده های مالی |
خریداری میکند. | خریداری نمیکند. | بازدیدکننده وبسایت | بازاریابی |
تصویر آن موجود را شامل میشود. | تصویر آن موجود را شامل نمیشود. | تصویر | تشخیص یک موجود خاص در تصاویر |
در طبقهبندی دودویی این دو گروه مختلف اغلب نامتقارن هستند. به عبارت دیگر ممکن است بخش بزرگی از نمونههای موجود که قصد طبقهبندی آنها را داریم متعلق به یک گروه باشند و نمونههای مربوط به گروه دیگر از تعداد کمتری برخوردار باشند. بعلاوه در چنین مسائلی عموماً به جای دقت کلی، کمینه کردن خطاهای دیگری برای هر یک از گروهها مورد علاقه است.
به عنوان مثال در آزمایش پزشکی مربوط به تشخیص سرطان هدف طبقهبندی دو گروه از نمونههای سرطانی و غیرسرطانی است. در حالی که معمولاً تعداد نمونههای سرطانی موجود در یک مجموعه داده در مقایسه با تعداد نمونههای غیرسرطانی بسیار کمتر است. اگر نمونههای سرطانی به عنوان گروه 1 و نمونههای غیرسرطانی به عنوان گروه 0 در نظر گرفتهشوند، بدیهی است آنچه از اهمیت بیشتری در این مسئله برخوردار است تشخیص درست نمونههای سرطانی در گروه مربوط به خودش (گروه 1) است، یعنی همان گروهی که نمونههای آن از تعداد کمتری در مجموعه داده برخوردار بود.
طبقهبندی دودویی آماری[ویرایش]
طبقهبندی آماری یک مسئله در حوزه یادگیری ماشین است و از روشهای یادگیری نظارتشده محسوب میشود. در این روش، دستهبندیها پیشتعریف شدهاند و از آن برای دستهبندی مشاهدات جدید به گروههای تعریف شده استفاده میشود.
زمانی که تنها دو گروه مختلف وجود دارد، این مسئله به عنوان طبقهبندی دودویی آماری شناخته میشود.
برخی از روشهای معمول برای طبقهبندی دودویی عبارتند از:
هر یک از روشهای طبقهبندی در دامنهای خاص عملکرد بهتری دارد که بر اساس تعداد مشاهدات، بعد فضای ویژگیها و عوامل دیگر مرتبط با مسئلهی موجود تعیین میگردد. به عنوان مثال، جنگلهای تصادفی نسبت به ماشینهای بردار پشتیبان در طبقهبندی ابر نقاط سهبعدی عملکرد بهتری دارند.
شیوهی ارزیابی طبقهبندیکنندههای دودویی[ویرایش]
اگر در مثال پیشبینی نتیجهی تشخیص سرطان، یک مدل طبقهبندیکنندهی دودویی نمونههای سرطانی را به درستی به عنوان "بیمار" شناسایی کند، این حالت به عنوان مثبت صادق[persian-alpha ۱] شناخته میشود. همچنین، اگر مدل، نمونه غیرسرطانی را به عنوان "سالم" تشخیص دهد، این حالت به عنوان منفی صادق[persian-alpha ۲] شناخته میشود. با این حال، ممکن است مدل گروه مربوط به برخی از نمونهها را به طور نادرست تشخیص دهد. در صورتی که یک نمونهی سرطانی به عنوان سالم تشخیص داده شود، این خطا به عنوان منفی کاذب[persian-alpha ۳] شناخته میشود. به طور مشابه، اگر نمونهی غیرسرطانی به عنوان سرطانی تشخیص داده شود، این خطا به عنوان مثبت کاذب[persian-alpha ۴] شناخته میشود.
به منظور ارزیابی یک مدل طبقهبندی دودویی، معیارهای گوناگونی از جمله صحت و دقت، حساسیت و ویژگی، دقت و بازیابی، امتیاز اف ۱ و ... میتواند مورد استفاده قرار بگیرد که در محاسبهی آنها از چهار خطای ذکر شده استفاده میگردد.
در جدول زیر شیوهی محاسبهی معیارهای مختلف نمایش داده شده است.الگو:نمودار آزمون و تشخیص با توجه به مسئلهی موجود معیار مناسب برای ارزیابی مدل طبقهبندیکنندهی دودویی انتخاب میشود.
پیادهسازی (پایتون)[ویرایش]
با استفاده از کتابخانههای Sickit-Learn، Pandas و NumPy در زبان برنامهنویسی پایتون میتوان یکی از مدلهای طبقهبندی دودویی را به صورت زیر پیادهسازی کرد.
در این قطعه کد ابتدا 1000 نمونه دادهی جدید متعلق به دو گروه تولید شده و بخشی از داده به عنوان دادهی آموزش و بر بخشی از آن به عنوان دادهی آزمون در نظر گرفتهشده است. سپس آموزش یک مدل رگرسیون لجستیک بر روی دادههای آموزش انجام شده است. در پایان با طبقهبندی دادههای آزمون و سنجش عملکرد مدل روی آنها، مدل ارزیابی شده است.
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, confusion_matrix
import numpy as np
import matplotlib.pyplot as plt
# ساخت دادههای جدید
X, y = make_classification(n_samples= 1000, n_features=2, n_informative=2, n_redundant=0, random_state=42)
# تقسیم دادهها به دو قسمت آموزش و آزمون
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# آموزش مدل
clf = LogisticRegression()
clf.fit(X_train, y_train)
# ارزیابی مدل بر روی دادههای آزمون
y_pred = clf.predict(X_test)
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))
# مصورسازی دادهها و خط جدا کننده
plt.scatter(X[:, 0], X[:, 1], c=y)
w = clf.coef_[0]
a = -w[0] / w[1]
xx = np.linspace(-5, 5)
yy = a * xx - clf.intercept_[0] / w[1]
plt.plot(xx, yy)
plt.show()
برای نمایش عملکرد مدل روی دادهی تولید شده از ماتریس درهمریختگی استفاده شده است. بعلاوه پس از طبقهبندی مصورسازی دادههای هر دو گروه با استفاده از رنگهای متمایز و خط جداکننده انجام شده است.
خروجی قطعه کد مربوط به طبقهبندی دودویی[ویرایش]
[[89 12]
[12 87]]
precision recall f1-score support
0 0.88 0.88 0.88 101
1 0.88 0.88 0.88 99
accuracy 0.88 200
macro avg 0.88 0.88 0.88 200
weighted avg 0.88 0.88 0.88 200
یادداشتها[ویرایش]
منابع[ویرایش]
- Zhang & Zakhor, Richard & Avideh (2014). "Automatic Identification of Window Regions on Indoor Point Clouds Using LiDAR and Cameras". VIP Lab Publications CiteSeerX 10.1.1.649.303
- Y. Lu and C. Rasmussen (2012). "Simplified markov random fields for efficient semantic labeling of 3D point clouds" (PDF). IROS.
- https://en.wikipedia.org/w/index.php?title=Binary_classification
- https://www.learndatasci.com/glossary/binary-classification
- حساسیت و ویژگی
This article "طبقهبندی دودویی" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:طبقهبندی دودویی. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.
This page exists already on Wikipedia. |