مشخصات مقاله
-
693
-
0.0
-
8265
-
0
-
0
دسته بند بیز ساده (Naive Bayes Classifiers)
دسته بندی بیز ساده (Naive Bayes Classifiers)
مقدمه ای بر الگوریتم Naïve Bayes :
الگوریتم Naïve Bayes یک روش طبقه بندی است که مبتنی بر اعمال قضیه Bayes به همراه این فرض قوی است که همه پیش بینی کننده ها نسبت به هم مستقل هستند. به بیان ساده تر، فرض است که وجود یک خصیصه در یک کلاس، مستقل از وجود هر خصیصه دیگر در همان کلاس است. برای مثال، اگر یک تلفن دارای صفحه لمسی، امکانات اینترنت، دوربین خوب و غیره باشد، ممکن است به عنوان تلفن هوشمند در نظر گرفته شود. اگرچه تمامی این خصیصه ها به یکدیگر وابسته هستند، اما به طور مستقل در احتمال هوشمند شدن تلفن نقش دارند.
در طبقه بندی Bayesian ، هدف اصلی پیدا کردن احتمالات پسین(posterior) است، مانند احتمال یک برچسب با توجه به برخی ویژگی های مشاهده شده، 𝑃(𝐿 | 𝑓𝑒𝑎𝑡𝑢𝑟𝑒𝑠) . با کمک قضیه Bayes ، می توان آن را در قالب کمی به صورت زیر بیان کرد.
در اینجا، (𝐿 | 𝑓𝑒𝑎𝑡𝑢𝑟𝑒𝑠) احتمال پسین(posterior) کلاس است.
(𝐿) احتمال مقدم (prior) کلاس است.
(𝑓𝑒𝑎𝑡𝑢𝑟𝑒𝑠|𝐿) ، احتمالی است که احتمال کلاس پیش بینی کننده ارائه شده است.
(𝑓𝑒𝑎𝑡𝑢𝑟𝑒𝑠) ، احتمال مقدم پیش بینی کننده است.
ساخت مدل با استفاده از Naïve Bayes در پایتون:
کتابخانه Scikit learn پایتون مفید ترین کتابخانه برای ساخت یک مدل Naïve Bayes در پایتون است. سه نوع مدل Naïve Bayes تحت کتابخانه Scikit learn پایتون وجود دارد که در ادامه معرفی می شوند.
دسته بند بیز ساده گاوسی (Gaussian Naive Bayes)
: این ساده ترین طبقه بندی کننده Naïve Bayes است با این فرض که داده هر برچسب از یک توزیع ساده گوسی گرفته شده است.
دسته بند بیز ساده چندجملهای (Multinomial Naive Bayes)
دیگر طبقه بندی کننده مفید Naïve Bayes ، Naïve Bayes چند جمله ای است که در آن فرض می شود ویژگی ها از یک توزیع ساده چندجمله ای گرفته شده اند. چنین Naïve Bayes برای ویژگی هایی که ارائه دهنده اعداد گسسته هستند، مناسب تر است.
دسته بند بیز ساده برنولی (Bernoulli Naive Bayes)
مدل مهم دیگر، Naïve Bayes برنولی است که در آن فرض می شود ویژگی ها دودویی باشند (صفر و یک). طبقه بندی متن، با مدل ‘bag of words’ ، می تواند یک برنامه کاربردی از Naïve Bayes برنولی باشد.
مثال:
بر اساس مجموعه داده خود، می توانیم هر یک از مدل های Naïve Bayes که در بالا توضیح داده شد را انتخاب کنیم. در اینجا، مدل Naïve Bayes گوسی را در پایتون پیاده سازی می کنیم. با واردات(imports) مورد نیاز به صورت زیر شروع می کنیم.
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
حال، با استفاده از تابع make_blobs() از Scikit learn، می توانیم به صورت زیر نقاط توزیع را با توزیع گوسی تولید کنیم.
from sklearn.datasets import make_blobs
X, y = make_blobs(300, 2, centers = 2, random_state = 2, cluster_std = 1.5)
plt.scatter(X[:, 0], X[:, 1], c = y, s = 50, cmap = 'summer');
سپس، برای استفاده از مدلGaussianNB ، باید شی آن را به صورت زیر وارد کنیم و بسازیم.
from sklearn.naive_bayes import GaussianNB
model_GBN = GaussianNB()
model_GNB.fit(X, y);
حال، باید پیش بینی کنیم. این کار را پس از تولید برخی داده جدید به صورت زیر اینجام می دهیم.
rng = np.random.RandomState(0)
Xnew = [-6, -14] + [14, 18] * rng.rand(2000, 2)
ynew = model_GNB.predict(Xnew)
سپس، برای پیدا کردن مرز های داده جدید، آن را ترسیم می کنیم.
plt.scatter(X[:, 0], X[:, 1], c = y, s = 50, cmap = 'summer')
lim = plt.axis()
plt.scatter(Xnew[:, 0], Xnew[:, 1], c = ynew, s = 20, cmap = 'summer', alpha = 0.1)
plt.axis(lim);
حال، با کمک کد زیر، می توانیم احتمالات پسین اولین و دومین برچسب را پیدا کنیم.
yprob = model_GNB.predict_proba(Xnew)
yprob[-10:].round(3)
خروجی:
array([[0.998, 0.002],
[1. , 0. ],
[0.987, 0.013],
[1. , 0. ],
[1. , 0. ],
[1. , 0. ],
[1. , 0. ],
[1. , 0. ],
[0. , 1. ],
[0.986, 0.014]])
مزایا و معایب:
نقاط مثبت:
موارد زیر برخی از مزایای استفاده از طبقه بندی کننده Naïve Bayes است :
طبقه بندی Naïve Bayes، برای پیاده سازی ساده و سریع است. سریع تر از مدل های متمایز کننده مانند رگرسیون لجستیک همگرا می شود. به داده آموزشی کمتری نیاز دارد. ماهیت آن بسیار مقیاس پذیر است، یا بر اساس تعداد پیش بینی کننده ها و نقاط داده به صورت خطی مقیاس می شود. می تواند پیش بینی های احتمالی داشته باشد و داده پیوسته را به خوبی داده قطعی اداره می کند. الگوریتم طبقه بندی Naïve Bayes ، می تواند برای مسائل طبقه بندی دودویی به خوبی مسائل طبقه بندی چند کلاسی استفاده شود.
نقاط منفی :
موارد زیر برخی از معایب استفاده از طبقه بندی کننده Naïve Bayes است: ی
یکی از مهمترین ایرادات طبقه بندی کننده Naïve Bayes استقلال قوی ویژگی های آن است، زیرا در زندگی واقعی تقریبا غیر ممکن است که یک مجموعه از ویژگی هایی داشت که کاملا مستقل از یکدیگر باشند. مسئله ای دیگر درباره طبقه بندی Naïve Bayes ، فرکانس صفر (zero frequency) آن است، به این معنا که اگر یک متغیر قطعی یک طبقه داشته باشد اما در مجموعه داده آموزشی مشاهده نشده باشد، مدل Naïve Bayes یک احتمال صفر را به آن اختصاص می دهد و آن دیگر قادر به تولید پیش بینی نخواهد بود.
برنامه های کاربردی طبقه بندی Naïve Bayes :
موارد زیر برخی از برنامه های کاربردی طبقه بندی Naïve Bayes است:
پیش بینی آنی (Real-time prediction)
با توجه به پیاده سازی ساده و محاسبات سریع آن، می توان از آن برای پیش بینی های آنی استفاده کرد.
پیش بینی چند کلاسی (Multi-class prediction)
از الگوریتم طبقه بندی Naïve Bayes می توان برای پیش بینی احتمال خلفی کلاس های متعدد متغیر هدف استفاده کرد.
طبقه بندی متن (Text classification)
با توجه به ویژگی پیش بینی چند کلاسی، الگوریتم های طبقه بندی Naïve Bayes بسیار مناسب طبقه بندی متن هستند. به همین دلیل از آنها برای حل مسائلی مانند spam-filtering و تحلیل احساسات استفاده می شود.
سیستم پیشنهاد (Recommendation system)
علاوه بر الگوریتم هایی مانند فیلتر کردن مشارکتی (collaborative filtering)،Naïve Bayes یک سیستم پیشنهادی ایجاد می کند که می توان از آن برای فیلتر کردن اطلاعات غیر قابل دیدن، و پیش بینی اینکه آیا یک کاربر منبع داده شده را دوست دارد یا خیر، استفاده کرد.