آموزش Naïve Bayes در یادگیری ماشین با پایتون

3 سال پیش

آموزش Naïve Bayes در یادگیری ماشین با پایتون

 

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش Naïve Bayes در یادگیری ماشین با پایتون خواهیم پرداخت.

پیشنهاد ویژه : پکیج آموزش پایتون مختص بازار کار

مقدمه ای بر الگوریتم Naïve Bayes در یادگیری ماشین با پایتون

الگوریتم های Naïve Bayes یک تکنیک طبقه بندی مبتنی بر استفاده از قضیه Bayes با یک فرض قوی است که همه پیش بینی کنندگان از یکدیگر مستقل هستند. به عبارت ساده، فرض این است که وجود یک ویژگی در یک کلاس مستقل از وجود هر ویژگی دیگری در همان کلاس است. به عنوان مثال ، اگر تلفن دارای صفحه لمسی، امکانات اینترنت، دوربین خوب و غیره باشد ، ممکن است هوشمند تلقی شود. اگرچه همه این ویژگی ها به یکدیگر وابسته هستند ، اما به طور مستقل به احتمال تلفن هوشمند بودن تلفن کمک می کنند.

در طبقه بندی Bayes، هدف اصلی یافتن احتمالات خلفی است ، یعنی احتمال داشتن برچسب با توجه به برخی از ویژگی های مشاهده شده ، 𝑃 (𝐿 |). با کمک قضیه بیز ، می توانیم این را به صورت کمی به صورت زیر بیان کنیم –

P(L|features)=P(L)P(features|L)P(features)

در اینجا ، 𝑃 (𝐿 | 𝑓𝑒𝑎𝑡𝑢𝑟𝑒𝑠) احتمال خلفی کلاس است.

𝑃 (𝐿) احتمال قبلی کلاس است.

𝑃 (𝑓𝑒𝑎𝑡𝑢𝑟𝑒𝑠 | 𝐿) احتمالی است که احتمال کلاس پیش بینی شده است.

𝑃 (𝑓𝑒𝑎𝑡𝑢𝑟𝑒𝑠) احتمال قبلی پیش بینی کننده است.

مدل ساخت با استفاده از Naïve Bayes در پایتون

کتابخانه پایتون، Scikit learn مفیدترین کتابخانه ای است که به ما کمک می کند تا یک مدل Naïve Bayes در پایتون بسازیم. ما سه نوع زیر از مدل Naïve Bayes تحت کتابخانه Scikit یادگیری پایتون داریم –

گاوسین Naïve Bayes

این ساده ترین طبقه بندی کننده Naïve Bayes است که این فرض را دارد که داده های هر برچسب از یک توزیع ساده گاوسی گرفته شده است.

Naïve Bayes چند بیتی 

یکی دیگر از طبقه بندی های مفید Naïve Bayes چند بیتی Naïve Bayes است که فرض می شود ویژگی ها از یک توزیع چند جمله ای ساده گرفته شده است. چنین نوع بیزهای ساده لوح برای ویژگی هایی که نشان دهنده تعداد گسسته است مناسب ترین است.

Bernoulli Naïve Bayes

یک مدل مهم دیگر Bernoulli Naïve Bayes است که در آن ویژگی ها باینری (۰ و ۱) فرض می شود. طبقه بندی متن با مدل ‘bag of words’ می تواند کاربردی از Bernoulli Naïve Bayes باشد.

مثال

بسته به مجموعه داده های خود ، می توانیم هر یک از مدلهای Naïve Bayes که در بالا توضیح داده شد را انتخاب کنیم. در اینجا ، ما مدل Gaussian Naïve Bayes را در پایتون اجرا می کنیم –

ما با واردات مورد نیاز به شرح زیر شروع خواهیم کرد –

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()

 

اکنون ، با استفاده از تابع () Scikit ،make_blobs را یادگیری، می توانیم لکه های نقاط را با توزیع گوسین به شرح زیر تولید کنیم –

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],
   [۱٫   , ۰٫   ],
   [۰٫۹۸۷, ۰٫۰۱۳],
   [۱٫   , ۰٫   ],
   [۱٫   , ۰٫   ],
   [۱٫   , ۰٫   ],
   [۱٫   , ۰٫   ],
   [۱٫   , ۰٫   ],
   [۰٫   , ۱٫   ],
   [۰٫۹۸۶, ۰٫۰۱۴]]
)

 

جوانب مثبت منفی Naïve Bayes

جوانب مثبت

موارد زیر برخی از مزایای استفاده از طبقه بندی Naïve Bayes است –

  • اجرای طبقه بندی Naïve Bayes آسان و سریع است.
  • همسانتر از مدلهای افتراقی مانند رگرسیون لجستیک خواهد بود.
  • به اطلاعات آموزشی کمتری نیاز دارد.
  • ماهیت آن بسیار مقیاس پذیر است ، یا با تعداد پیش بینی ها و نقاط داده به صورت خطی مقیاس می شوند.
  • این می تواند پیش بینی های احتمالی را انجام دهد و می تواند داده های مداوم و همچنین گسسته را مدیریت کند.
  • الگوریتم طبقه بندی Naïve Bayes می تواند برای مشکلات طبقه بندی باینری و همچنین چند طبقه استفاده شود.

جوانب منفی

موارد زیر برخی از موارد منفی استفاده از طبقه بندی کننده Naïve Bayes است –

  • یکی از مهمترین نکات منفی در طبقه بندی Naïve Bayes استقلال قوی ویژگی آن است زیرا در زندگی واقعی داشتن مجموعه ای از ویژگی ها کاملاً مستقل از یکدیگر تقریباً غیرممکن است.
  • مسئله دیگر در طبقه بندی Naïve Bayes “فرکانس صفر” آن است که به این معنی است که اگر یک متغیر طبقه بندی دارای یک دسته باشد اما در مجموعه داده های آموزش مشاهده نشود ، پس مدل Naïve Bayes به آن احتمال صفر می دهد و قادر به ایجاد یک پیش بینی.

کاربردهای طبقه بندی Naïve Bayes

موارد زیر برخی از کاربردهای معمول طبقه بندی Naïve Bayes است –

  • پیش بینی زمان واقعی – به دلیل سهولت اجرا و محاسبه سریع ، می توان از آن برای پیش بینی در زمان واقعی استفاده کرد.
  • پیش بینی چند کلاسه – از الگوریتم طبقه بندی Naïve Bayes می توان برای پیش بینی احتمال خلفی چندین کلاس متغیر هدف استفاده کرد.
  • طبقه بندی متن – با توجه به ویژگی پیش بینی چند طبقه ، الگوریتم های طبقه بندی Naïve Bayes به خوبی برای طبقه بندی متن مناسب هستند. به همین دلیل از آن برای حل مشکلاتی مانند فیلتر هرزنامه و تجزیه و تحلیل احساسات نیز استفاده می شود.
  • سیستم پیشنهادی – همراه با الگوریتم هایی مانند فیلتر کردن مشارکتی ، Naïve Bayes یک سیستم پیشنهادی ایجاد می کند که می تواند برای فیلتر کردن اطلاعات غیبی و پیش بینی آب و هوایی که کاربر منبع داده شده را دوست دارد یا نه ، مورد استفاده قرار گیرد.

منبع.

 

لیست جلسات قبل آموزش یادگیری ماشین با پایتون 

  1. آموزش یادگیری ماشین با پایتون
  2.  مبانی یادگیری ماشین با پایتون  
  3. آموزش اکوسیستم یادگیری ماشین با پایتون 
  4. آموزش متدها در یادگیری ماشین با پایتون 
  5. آموزش بارگیری داده ها برای پروژه های یادگیری ماشین
  6. آموزش درک داده ها با آمار در یادگیری ماشین
  7. آموزش آماده سازی داده ها در یادگیری ماشین با پایتون 
  8. آموزش انتخاب ویژگی داده ها در یادگیری ماشین با پایتون
  9. آموزش طبقه بندی در یادگیری ماشین با پایتون
  10. آموزش رگرسیون لجستیک در یادگیری ماشین با پایتون
  11. آموزش ماشین بردار پشتیبان در یادگیری ماشین با پایتون
  12. آموزش درخت تصمیم در یادگیری ماشین با پایتون
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه