باران سیل سپور
باران سیل سپور
خواندن ۳ دقیقه·۴ سال پیش

معرفی اجمالی الگوریتم SVM یا Support Vector Machine

توجه: این مقاله با گذشت زمان کامل تر خواهد شد.

با سلام

در این پست میخوام خیلی خلاصه و سریع ایده اصلی الگوریتم SVM را که یکی از مهمترین و پرکاربردترین الگوریتم های یادگیری ماشین هست را توضیح بدم و طبق معمول روش من این هست که یه منبع خوب پیدا و اون رو ترجمه کنم. چون اصولا اعتقاد دارم که در این زمینه ها ما هر چی بلدیم از دیگران هست. پس بهتره امانت دار خوبی باشیم و از منابع خوب استفاده کنیم نه اینکه نظرات دیگران را به زبان خودمون بنویسیم و به اسم خودمون تموم کنیم.

لینک منبع در انتهای مقاله موجود است.

الگوریتم Support Vector Machine یا SVM یک الکوریتم یادگیری ماشین با ناظر است که هم در کارهای Classification و هم در Regression کاربرد دارد.

این الگوریتم به دنبال پیدا کردن یک hyperplane است که به بهترین صورت دیتاست را به دو کلاس تقسیم می نماید. مانند شکل زیر:

SVM
SVM

بردارهای حمایتی یا Support Vector ها

بردارهای حمایتی، نزدیکترین نقاط داده ای به Hyperplane هستند، نقاطی که اگر از دیتاست حذف شوند محل hyperplane تغییر می یابد. بنابراین این نقاط را می توان به عنوان نقاط مهم و حیاطی دیتاست در نظر گرفت.

یک Hyperplane چیست؟

به صورت ساده می توان گفت که در یک وظیفه Classification دو بعدی (که فقط دو feature دارد، مانند شکل بالا)، یک hyperplane خطی است که دیتاست را به دو مجموعه مجزا تقسیم می نماید. اگر فضای مساله سه بعدی باشد (سه feature یا ویژگی داشته باشد)، یک hyperplane سطحی دو بعدی است که دیتا ست را به دو مجموعه تقسیم می نماید. به صورت کلی می توان گفت که ابعاد یک hyperplane همیشه یک واحد کمتر از تعداد ویژگی هاست.

چطور hyperplane درست را بیابیم؟

یا به زبان خلاصه چگونه یک دیتاست را به دو مجموعه مجزا تقسیم نماییم؟ فاصله بین hyperplane و نزدیکترین نقاط داده ای از هر مجموعه ای margin نامیده می شود. هدف svm این است که hyperplane با بیشترین margin ممکن بین hyperplane و هر نقطه داده ای دیتاست آموزشی را بیابد. شکل زیر margin را نمایش می دهد:

margin
margin

زمانیکه hyperplane واضحی وجود ندارد؟

معمولا دیتاست ها به سادگی دیتاست بالا نیستند و نمی توان به سادگی آن ها را به دو مجموعه مجزا تقسیم کرد. مانند شکل زیر:

زمانیکه hyperplane شفافی وجود ندارد؟
زمانیکه hyperplane شفافی وجود ندارد؟

در حالاتی مانند شکل بالا لازم است تا از فضای دو بعدی فراتر رویم. تصور کنید که نقاط بالا روی صفحه ای قرار دارند و ناگهان این صفحه بالا برده می شود. در این صورت می توان از یک صفحه دو بعدی برای جدا کردن نقاط بهره جست. به این کار Kerneling گفته می شود. مانند شکل زیر:

Kerneling
Kerneling


مزیت ها

  • دقت بالایی دارد.
  • روی دیتاست های کوچک تمیز به خوبی کار می کند.

معایب

  • برای دیتاست های بزرگ مناسب نیست زیرا زمان آموزش الگوریتم بالاست.
  • برای دیتاست های نویزی با همپوشانی کلاس ها کارایی خوبی ندارد.


منبع

https://www.kdnuggets.com/2016/07/support-vector-machines-simple-explanation.html<br/>



svm
سلام. من باران هستم دانشجوی دکترای رشته مهندسی نرم افزار و بسیار علاقمند به مباحث علم داده، یادگیری ماشین، یادگیری عمیق و پردازش زبان طبیعی
شاید از این پست‌ها خوشتان بیاید