الگوریتم بیز گوسی (Gaussian Naive Bayes) برای ویژگی هایی (متغیرهای مستقلی) با مقدارهای پیوسته که توزیع نرمال (Normal Distribution) یا توزیع گوسی (Gaussian Distribution) را دنبال می کنند، به کار می رود. ولی اگر متغیرهای مسئله (یا همان ویژگی ها) از گونه گسسته (Discrete) باشند، باید کدام الگوریتم را به کار ببریم.

متغیری که پیوسته نباشد، گسسته یا ناپیوسته است. این گونه از متغیرها نمی‌ توانند هر ارزشی را داشته باشند، بلکه تنها می تواند شماره ها یا ارزش هایی را که مشخص کننده یک وجه مشخص و معین از یک مقیاس هستند را به خود اختصاص دهند. منبع برای نمونه قد انسان و درجه حرارت هر دو متغیرهای پیوسته هستند، زیرا می توانند هر ارزشی مانند قدهای ۱۷۰.۶۴۳ یا ۱۷۰ یا ۱۷۱.۲۳۲ را داشته باشیم.

برای نمونه شمارِ (تعداد) بازیکنان یک تیم فوتبال می تواند یکی از مقدارهای یک تا یازده باشد و تیم فوتبالی نداریم که شمار بازیکنان آن ۷.۵ نفر باشد. بنابراین شمار بازیکنان تیم های ورزشی یک متغیر گسسته است. همچنین شمار واژه های یک نوشته نیز یک متغیر گسسته است زیرا برای نمونه شمار واژه the در یک نوشته انگلیسی برابر با ۱۰ یا ۱۰۰ یا ۴۲۲ بار است و نمی تواند ۱۰۰.۵ بار باشد.

توزیع چند جمله ای

الگوریتم MultinomialNB از کتابخانه Scikit-Learn برای طبقه بندی مجموعه داده هایی کاربرد دارد که ویژگی های آنها گسسته هستند. در اینجا شمار (تعداد یا Count) هر واژه، همان ویژگی هایی هستند که برای طبقه بندی به کار می روند. توزیع چند جمله‌ای (Multinomial Distribution) تعمیم توزیع دوجمله‌ای است. در واقع در این توزیع به ازای n آزمایش تصادفی و مستقل، k نتیجه هرکدام با احتمال بروز مشخص ثابت، بروز می‌کنند.

توزیع دو جمله‌ای به ما کمک می‌کند که احتمال هر یک از پیشامد‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌های دودویی را بدست بیاوریم. برای نمونه با به کارگیری آن می‌توانیم احتمال گرفتن 6 شیر از میان 10 پرتاب را بدست آوریم. سکه انداختن یک پیشامد دودویی (Binary) است چون که تنها ۲ تا پیشامد ممکن دارد: شیر یا خط. توزیع چند جمله‌ای در شرایطی به ما کمک می‌کند که بیش از دو پیشامد داشته باشیم. برای نمونه گمان کنید که دو شطرنج باز چندین بار با هم بازی کرده باشند و مشخص شده باشد که احتمال برد نفر نخست 0.4، احتمال برد نفر دوم 0.35 و احتمال برابری هر دو 0.25 باشد. توزیع چند جمله ای به ما کمک می‌کند که به سؤال “اگر این دو نفر 12 دور با هم بازی کنند احتمال 7 برد نفر اول، 2 برد نفر دوم و 3 تساوی چقدر است”

الگوریتم بیز Multinomial

این یکی دیگر از الگوریتم های بیز است که برای متغیرهای گسسته به کار می رود. از این الگوریتم می توانیم برای طبقه بندی متن ها (Text Classification) کمک بگیریم. بنابراین الگویتم بیز Multinomial را می توانیم با پردازش زبان طبیعی (Natural Language Processing) به کار ببریم.

پیش از این گفتیم که از الگوریتم بیز می توانیم برای آنالیز احساسات (Sentences Analysis) به کار ببریم. در شکل زیر یک مجموعه پنج داده ای داریم که آنها را بر اساس دسته ورزشی (Sport) و ناورزشی (Not Sport) دسته بندی کنیم. در اینجا به دنبال مدلی بر پایه احتمال (قضیه بیز ساده و احتمال شرطی) هستیم تا بتوانیم یک احساسات تازه مربوط به کدام یکی از دو طبقه است.

انگیزه این است که یک طبقه بند بیز ساده (Naive Bayes Classifier) ساخته شود که به ما بگوید جمله A very close game به کدام دسته تعلق دارد. الگوریتم بیز بر پایه احتمال است و از این رو به دنبال محاسبه هر دو احتمال هستیم، احتمال اینکه آیا جمله A very close game متعلق به دسته Sport هست یا احتمال اینکه متعلق به دسته Not Sport هست. سپس بزرگترین احتمال بدست آمده، برآیند (نتیجه) خواهد بود.

بنابراین با توجه به آنچه که گفته شد به دنبال محاسبه احتمال ورشی بودن به شرط اینکه جمله ورودی A very close game باشد. معادله زیر، معادله بیز برای این احتمال شرطی را نشان می دهد. ما به دنبال محاسبه دو احتمال هستیم، آیا جمله متعلق به دسته Sport یا متعلق به دسته Not Sport هست، بنابراین در دومین شکل زیر، می توانیم از مخرج معادله بیز صرف نظر کنیم.

اگر شکل توزیع نرمال برای الگوریتم گوسی را به یاد داشته باشید، از آن برای محاسبه Likelehood کمک می گرفتیم. بنابراین در اینجا و با توجه به مسئله طبقه بندی ورزشی و نا ورزشی، برای نمونه باید احتمال (P(a very close game | Sport هستم که در صورت معادله در احتمال ورزشی بودن داده ها یا (P(Sport ضرب شده است.

احتمال (P(a very close game | Sport به این مفهوم است که احتمال بودن جمله a very close game به شرط Sport بودن طبقه است، بنابراین در مجموعه داده باید به دنبال شمارِ (تعداد) جمله هایی a very close game بگردیم که طبقه آنها Sport باشد و این کار انجام شد نیست زیرا این جمله در مجموعه داده نیست. بنابراین احتمال (P(a very close game | Sport برابر با صفر می شود.

پیش از این گفتیم که ویژگی الگوریتم بیز ساده این است که هر کدام از ویژگی ها مستقل از دیگری هستند و می توانیم احتمال بودن هر یک از آنها را مستقل از دیگری بدست آوریم. در مسئله پردازش زبان طبیعی و پردازش احساسات، هر یک از واژگان یکی از ویژگی ها هستند و از این رو بر پایه شکل زیر، می توانیم احتمال هر یک از واژگان درون جمله a very close game را جداگانه بدست بیاوریم و سپس در دومین معادله شکل زیر احتمال های شرطی (به شرط ورزشی بودن) هر یک را در هم ضرب کنیم که برآیند آن احتمال جمله a very close game به شرط ورزشی بودن دسته است.

در مجموعه داده بالا، واژه close در طبقه Sport نیست و از این رو (P(lose | Sports برابر صفر شده و بنابراین بر پایه معادله بالا برآیند احتمال (P(a very close game | Sports نیز که ضرب احتمال شرطی هر یک از واژگان هست نیز صفر می شود. در واقع این ایراد برای این است که احتمال های بر پایه تکرار برابر با صفر می شود و باید راه حلی برای آن پیدا کنیم.

مفهوم Additive Smoothing

در مفاهیم آمار Additive Smoothing یا Laplace Smoothing تکنیکی برای هموار سازی داده های رسته ای (Smooth Categorical Data) است. با داشتن مشاهده (X=(X1, X2, …Xd از یک توزیع چند جمله ای با N بار آزمایش (Trials)، نسخه هموار شده داده ها، برآوردگر زیر زیر را می دهد که در آن 𝛼>0 پارامتر هموار سازی است و اگر 𝛼=0 باشد به معنی بدون هموار سازی است.

𝛼 پارامتر هموار سازی است که اصطلاحا آن را Pseudocount می نامند و اگر بیشتر از صفر باشد، ویژگی هایی را که در نمونه های یادگیری (Training Data) موجود نیستند را حساب می کند و در محاسبات از احتمال صفر جلوگیری می کند. در معادله بالا 𝞱 یا احتمال (P(Xi|y است که برابر است با احتمال اینکه ویژگی i در یک نمونه متعلق به کلاس y پدیدار شده باشد.

Nyi تعداد مرتبه هایی است که ویژگی i در نمونه ای از کلاس y ظاهر شده است و Ny (در مخرج) تعداد همه ویژگی ها برای کلاس y را نشان می دهد. n نیز تعداد واژه های ممکن درون هر طبقه است. برای درک بهتر دوباره به سراغ مسئله تشخیص اسپم بودن یا نبودن یک ایمیل می رویم. بنابراین دو کلاس Ham و Spam داریم. برای سادگی، گمان کنید احتمال های (P(Har برابر با (P(Spam و برابر با %50 یا 1/2 باشند. اکنون یک ایمیل داریم که دربرگیرنده n واژه w هستند و با توجه به احتمال های هر یک از این واژه، و بر پایه شکل زیر، احتمال Spam بودن %10 و نبودن %90 است.

اکنون ایمیل تازه ای به n+1 واژه داریم، یعنی یک واژه Wn+1 داریم که پیش از این نبوده است، بنابراین بر پایه نخستین معادله شکل زیر، احتمال های شرطی اسپم بودن یا نبودن به شرط Wn+1 برابر با صفر هستند، بنابراین احتمال های شرطی که در معادله های دوم و سوم زیر آمده اند، نیز صفر خواهند شد. توجه کنید که ما به دنبال دومین و سومین معادله های زیر هستیم و سپس بزرگترین احتمال، برآیند (نتیجه) است که آیا ایمیل اسپم هست یا نه؟

اکنون دوباره به مجموعه داده جمله هایی در این نوشته بر می گردیم که می خواهم در دو طبقه Sport و Not Sport دسته بندی شوند. گفتیم که واژه Close در مجموعه داده نیست، و از این رو (P(a very close game | Sport برابر با صفر است، زیرا (P(close | Sport برابر با صفر است و اکنون می خواهیم با Additive Smoothing، این احتمال را از بدست آوریم. با توجه به معادله Additive Smoothing، در بَند (خط) زیر شماره صفر در صورت کسر، برابر با تعداد دفعاتی است که واژه (یا ویژگی) close در نمونه هایی از کلاس Sport پدیدار شده است که قاعدتا برابر با صفر است. شماره یک همان پارامتر 𝜶=1 است.

شکل زیر احتمال هر یک از واژه ها به شرط هر یکی از دو دسته Sport و Not Sport را نشان می دهد که در دومین سطر احتمال واژه Close با توجه به معادله Additive Smoothing برای هر دو دسته Sport و Not Sport بدست آمده است. در پایان با توجه به هر یک از ستون های زیر می توانیم احتمال های (P(a very close game | Sports و (P(a very close game | Not Sports را بدست آوریم.

زمانی که بخواهیم الگوریتم بیز ساده چند جمله ای (Multinomial Naive Bayes) را برای طبقه بندی متن ها به کار ببریم، این مهم است که کدام ویژگی های متن را می خواهیم استخراج کنیم. گفتیم که در طبقه بندی متن ها، ویژگی ها همان واژه های درون متن هستند. در نوشته پیش رو درباره پیاده سازی الگوریتم MultinomialNB در کتابخانه Scikit-Learn گفته ایم.