ماشین های بردار پشتیبان

svm

 

ماشین های بردار پشتیبان (SVM)، الگوریتم‌­های یادگیری ماشین نظارت شده قدرتمند و در عین حال قابل انعطافی هستند که هم برای طبقه‌­بندی و هم برای رگرسیون استفاده می‌­شوند. اما به طور کلی، آنها در مسائل طبقه­‌بندی استفاده می­‌شوند. در دهه 1960، SVMها برای اولین بار معرفی شدند اما بعداً در سال 1990 اصلاح شدند. SVM ها روش منحصر به فرد خود را در مقایسه با الگوریتم­‌های یادگیری ماشین دارند. اخیراً، آنها به دلیل توانایی در کنترل چندین متغیر پیوسته و دسته­‌بندی شده بسیار محبوب هستند.

یک مدل SVM اساساً نمایانگر کلاسهای مختلف در فضای چند بعدی است. هدف SVM تقسیم مجموعه داده ها به کلاس ها برای یافتن حداکثر حاشیه است.

 

ماشین های بردار پشتیبان

 

برای رسیدن به این هدف، می توان دو مرحله زیر را انجام داد :

اول، SVM به طور تکراری بردارهای جداکننده‌­ای تولید می­‌کند که کلاس‌ها را به بهترین روش تفکیک می‌کند.

سپس، بردارهایی را انتخاب می­کند که کلاس‌ها را به درستی از هم جدا کند.

 
توسعه SVM در پایتون:

برای پیاده سازی SVM در پایتون – ما با وارد کردن کتابخانه­‌های استاندارد به شرح زیر شروع خواهیم کرد

کرنل در پایتون:

در عمل، الگوریتم SVM با هسته پیاده‌­سازی می­‌شود که فضای داده ورودی را به فرم مورد نیاز تبدیل می­کند. SVM از تکنیکی به نام ترفند هسته استفاده می­کند که در آن هسته فضای ورودی را با تعداد ابعاد کم می­‌گیرد و آن را به فضای بعدی بالاتر تبدیل می­‌کند. به عبارت ساده، هسته مسائل غیر قابل تفکیک را با افزودن ابعاد بیشتر به مسائل قابل تفکیک تبدیل می­کند. بنابراین SVM قدرتمندتر، انعطاف پذیر و دقیق تر می­‌شود. موارد زیر برخی از انواع هسته‌های استفاده شده توسط SVM است.

کرنل خطی :

فرمول کرنل خطی به شرح زیر قابل توصیف می‌­باشد:

 

ماشین های بردار پشتیبان

از فرمول بالا میتوان دریافت که، بردار فوق مجموع حاصل ضرب هر جفت مقادیر ورودی است.

 

کرنل چندجمله­‌ای:

این هسته، فضای ورودی منحنی یا غیر خطی را از هم متمایز می‌­کند. در زیر فرمول هسته چند جمله­‌ای آورده شده است.

 

ماشین های بردار پشتیبان

 

در اینجا d درجه چند جمله ای است، که باید به صورت دستی در الگوریتم یادگیری مشخص کنیم.

 

کرنل (RBF):

کرنل RBF که بیشتر در طبقه بندی SVM استفاده می­‌شود، فضای ورودی را در فضایی با ابعاد نامشخص ترسیم می‌­کند. فرمول زیر آن را به صورت ریاضی توضیح می‌­دهد:

 

ماشین های بردار پشتیبان

در اینجا دامنه گاما از 0 تا 1 است. ما باید آن را به صورت دستی در الگوریتم یادگیری مشخص کنیم. مقدار پیش فرض خوب گاما 0.1 است.

همانطور که ما SVM را برای داده های قابل تفکیک خطی پیاده سازی کردیم، می توانیم آن را در پایتون برای داده­‌هایی که به طور خطی قابل تفکیک نیستند، پیاده سازی کنیم. با استفاده از کرنل می توان این کار را انجام داد.

در زیر مثالی برای ایجاد طبقه­‌بندی SVM با استفاده از کرنل وجود دارد. ما از دیتاست Iris از scikit-learn استفاده خواهیم کرد.

ما از پکیج‌­های زیر استفاده خواهیم کرد:

 

ماشین های بردار پشتیبان

 

الان، ما نیاز به خواندن دیتاست داریم:

 

 

از این دیتاست دو ویژگی زیر استخراج می‌­شود:

 

ماشین های بردار پشتیبان

 

سپس، ما مرزهای SVM را برای داده های اصلی به شرح زیر ترسیم می‌کنیم:

 

ماشین های بردار پشتیبان

 

سپس طبقه بندی SVM به صورت زیر ایجاد می­‌شود:

 

ماشین های بردار پشتیبان

 

خروجی:

 

ماشین های بردار پشتیبان

 

برای تغییر کرنل به rbf به شکل زیر باید انجام دهیم:

 

ماشین های بردار پشتیبان

خروجی:

 

ماشین های بردار پشتیبان

 

ما مقدار گاما را “auto” قرار می دهیم اما می توانید مقدار آن را از 0 تا 1 نیز ارائه دهید.

نکات مثبت طبقه بندی SVM:

طبقه بندی SVM دقت بسیار خوبی دارد و با فضایی دارای ابعاد بالا به خوبی کار می کند.

نکات منفی طبقه بندی SVM:

آنها زمان آموزش بالایی دارند از این رو در عمل برای دیتاست‌­های بزرگ مناسب نیستند. عیب دیگر این است که طبقه بندهای SVM با کلاسهای همپوشانی خوب کار نمی‌کنند.

 

تهیه کننده : مهندس محمد طالبی

منبع