ماشين بردار پشتيبان

نخستین بار که من نام " Support Vector Machine" را شنیدم ، احساس کردم دستور العمل این مفهوم مانند اسم آن ، پیچیده و چیزی ورای درک و فهم من خواهد بود .خوشبختانه ، تعداد کمی از ویدئو کنفرانس های دانشگاهی را دیدم و پی بردم که این ابزار ،چه قدر ساده و در عین حال کارآمدتر از چیزی که فکر می کردم بوده است .
در این مقاله در مورد نحوه ی عملکرد این ماشین ها صحبت خواهیم کرد. این مقاله مناسب خوانندگانی ست که اطلاعات زیادی در مورد این الگوریتم ندارند و در عین حال کنجکاو هستند که تکنیک جدیدی را فرا گیرند .
در مقاله ذیل به جزئیات این تکنیک و همچنین به آنالیز مواردی خواهیم پرداخت که در آن ها ، برخی از تکنیک ها از برخی دیگر قدرت مندتر عمل می کنند .
 
آنالیز دسته بندی چیست؟
 
بیایید برای درک این مفاهیم مثالی را بزنیم. جمعیتی داریم که 50 % آن مرد و 50 % آن زن هستند. با استفاده از بخشی از این جمعیت می خواهید دسته ای از قوانین و ضوابط را خلق کنید که راهنمای ما در طبقه بندی باقی جمعیت باشد . قصد داریم با استفاده از این الگوریتم رباتی بسازیم که تشخیص دهد یک فرد زن است یا مرد.
این ، نمونه ای از مساله ی آنالیز دسته بندی ست. با به کارگیری دسته ای از قواعد و قوانین،سعی خواهیم کرد  جمعیت را به 2 بخش ممکن طبقه بندی کنیم. بیایید برای سادگی فرض کنیم که 2 فاکتور و مشخصه ای که تفاوت ها را رقم می زند ، قد و بلندی موی افراد باشد. نمودار پراکندگی نمونه ذکر شده در ذیل آمده است.
 svm1
دایره های آبی در نمودار نشان دهنده ی زنان و مربع های سبز نشان دهنده ی مردان هستند. چند نکته مورد انتظار از این نمودار : 
1- مردان در جمعیت ما میانگین قدی بیشتری دارند.
2- زنان در جمعیت ما موهای بلندتری دارند.
اگر فردی را ببینیم با قد 180 سانتی متر و طول موی 4 سانتی متر ، بهترین حدس ما این خواهد بود که این فرد را در گروه مردان دسته بندی کنیم.
 
Support vector و SVM چیست؟
Support Vectors حقیقتا هماهنگ کردن و تناسب مشاهدات فردی ست. برای مثال (45,150) Support Vector یست که مربوط به یک زن است.  Support Vector Machine حد و مرزی ست که به بهترین شکل مردان را از زنان جدا می کند. در این مورد ، دو دسته به خوبی از یکدیگر جدا بودند، از این رو پیدا کردن SVM آسان تر است.
چگونه   SVMرا برای این مورد پیدا کنیم؟ 
حد و مرزهای محتمل زیادی برای طبقه بندی مساله ای که اشاره شد وجود دارد. در زیر 3 حد و مرز محتمل آمده است
 svm2
چگونه تصمیم بگیریم که کدام یک از این حدود ، بهترین گزینه برای شرح این مساله است؟
ساده ترین راه برای تفسیر تابع هدف در SVM، پیدا کردن حداقل فاصله مرز از نزدیک ترین Support Vector(بردار پشتیبان) ( که می تواند متعلق به هر دسته ای باشد) است. برای مثال نزدیک ترین مرز به دایره های آبی ، نارنجی ست. و نزدیک ترین دایره ی آبی 2 واحد با مرز نارنجی فاصله دارد . زمانی که این فواصل را برای همه ی حدود داشته باشیم ، به راحتی مرزی که بیشترین فاصله را از نزدیک ترین بردار پشتیبانی دارد انتخاب می کنیم.
از بین 3 مرز نشان داده شده ، مرز سیاه را می بینیم که دورترین فاصله را از نزدیک ترین بردار پشتیبان دارد (15 واحد)
 
اگر نتوانیم مرز واضحی پیدا کنیم که 2 دسته را از هم متمایز کند چه؟
کار ما برای پیدا کردن SVM در زمینه ی کسب و کار و تجارت به نسبت آسان تر خواهد بود.اگر توزیع و پراکندگی چیزی شبیه شکل زیر باشد  :
 svm3
 
در مواردی از این قبیل، خط صاف و مستقیمی که بتوان در صفحه به عنوان یک  SVM به کار گرفت مشاهده نمی کنیم. در این موارد ،نیاز داریم که بردارها را در صفحه ای با ابعاد بزرگتر ترسیم کنیم تا از یکدیگر جدا شوند.
همچنین مواردی زمانی که شروع به تدوین و پی ریزی دستورالعمل  SVM می کنیم پوشش داده خواهند شد. در حال حاضر شما می توانید نتیجه ی چنین تبدیلاتی را در نوع  SVM زیر تصور کنید .
 
 svm4
 
هر کدام از مربع های سبز در پراکندگی اصلی در مقیاس تبدیل شده نگاشته شدند. و مقیاس جدید به وضوح دسته ها را جدا کرد. تعداد بسیاری از الگوریتم ها برای اعمال این تغییرات پیشبینی شده است که تعدادی از آن ها در این مقاله مورد بحث و بررسی قرار خواهد گرفت.
 
SVM ها آلگوریتم های طبقه بندی بسیار قدرتمندی هستند. هنگامی که در مقابل Random forest و دیگر ابزار یادگیری ماشین استفاده می شوند ، ابعاد بسیار گسترده ای از مدل ها را ارائه می دهند . از این رو برای مواردی که قدرت پیش بینی بسیار بالا مورد نیاز است بسیار با اهمیت هستند.با این که تجسم بعضی الگوریتم ها به واسطه ی پیچیدگی فرمول آن ها کمی سخت است، الگوریتم های SVM برای حل و رفع برخی مسائل  مانند تشخیص دارو و پيش بيني واکنشهاي دارويي بسیار مفید هستند .
در مطالب بعدی در مورد کاربرد SVM در پروسه کشف دارو بیشتر صحبت خواهیم کرد.