ماشین بردار پشتیبان
ماشین بردار پشتیبان (SVM) یکی از خفنترین و پیچیدهترین الگوریتمهای یادگیری ماشین هست. پس، در این جلسه از دوره آموزش یادگیری ماشین رایگان با یک هیولا سروکار داریم! هم کار من در آموزش SVM مشکل هست و هم شما که قرار هست آن را یاد بگیرید! 😅 ولی میتونیم ، با قدرت بزن بریم…
ماشین بردار پشتیبان چیست؟
ماشین بردار پشتیبان یک مدل باناظر در یادگیری ماشین هست که کار طبقه بندی و رگرسیون را انجام میدهد. این مدل در سال 1964 توسط آقای Vladimir Vapnik برای کار طبقه بندی پیشنهاد شد! سال 1946! در طول این سالها بهبود و توسعههای فراوانی داشته و کم کم به شکل امروزی درآمده است. ماشین بردار پشتیبان معادل عبارت Support Vector Machine هست که البته معمولا با نام SVM شناخته میشود.

بیایید نگاهی دقیقتر به نام این الگوریتم داشته باشیم؛ کلمه Machine به همان ماشین در یادگیری ماشین اشاره دارد. پس خیلی مهم نیست! 😅 اما عبارت Support Vector (بردار پشتیبان) بسیار کلیدی است. برای اینکه معنی بردار پشتیبان را متوجه شوید، لازم هست درباره نحوه کار کردن SVM به شما توضیح دهم. در بخش بعدی از پست ماشین بردار پشتیبان، بررسی میکنیم که SVM چگونه کار میکند.
SVM چگونه کار میکند؟
سازوکار الگوریتم SVM را در متن زیر آوردم:
تعیین حاشیه با حداکثر پهنا برمبنای بردارهای پشتیبان منوط به طبقه بندی صحیح دادهها
احتمالا درک این جمله برایتان مشکل هست. در ادامه، میخواهم کلمه به کلمه عبارت بالا را برای شما تفسیر کنم. زیربخشهای پایین را به دقت بخوانید. میخواهم بدون هرگونه فرمولی، مفهوم SVM را عمیقا برای شما جا بیندازم.
تعیین حاشیه یا Margin در SVM
تعیین حاشیه یعنی طبقه بندی دادهها بهگونهای که یک حاشیه امن (Margin) بین دو کلاس وجود داشته باشد. در شکل زیر، مشاهده میکنید که در حاشیه (ناحیه سیاه) هیچ دادهای از دو کلاس وجود ندارد. شبیه این هست که دو کشور بر سر قلمروهای خود اختلاف دارند و به همین دلیل یک ناحیه ممنوعه را مشخص کردهاند.

حداکثر پهنا
اصلا SVM (ماشین بردار پشتیبان) را یک لحظه کنار بگذاریم. منطقا ما دوست داریم که حداکثر پهنا را در مارجین داشته باشیم. چرا؟ چون دو کلاس بیشتر و بیشتر از همدیگر جدا شوند. در دو شکل زیر، قاعدتا ما شکل سمت راست را بیشتر دوست داریم. چون حاشیه بین دو کلاس بیشتر از سمت چپی هست. بنابراین، مهم هست مرز به شکلی تعیین شود که حداکثر فاصله ایجاد شود.

تعیین حاشیه برمبنای بردارهای پشتیبان
به مرز بالا و پایین حاشیه دقت کنید (خطچینهای سبز رنگ). یکسری داده دور طلایی روی مرز بالا و پایین قرار گرفتهاند. به اینها بردارهای پشتیبان گفته میشود. در SVM به دنبال یافتن این بردارهای پشتیبان هستیم. برمبنای همین بردارهای پشتیبان هست که مدل SVM تصمیم گیری میکند. اینکه این بردارهای پشتیبان چگونه بدست میآیند، بحث بسیار مفصل و ریاضی-محوری هست. اما فعلا در همین حد که گفتم کافی هست.

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

اما، اگر با یادگیری ماشین آشنا باشید، احتمالا اینجا یک سوال یا انتقاد دارید! آن هم اینکه، مگر همه جا دادههای ما اینقدر از همدیگر فاصله دارند. مثلا، اگر دو کلاس ما به شکل زیر بودند، چه کنیم؟!

الگوریتم SVM (ماشین بردار پشتیبان) برای چنین شرایطی هم جواب دارد! با حاشیه نرم یا Soft Margin چنین شرایطی را مدیریت میکند. درادامه درمورد حاشیه نرم بیشتر توضیح میدهم.
حاشیه نرم یا Soft Margin در SVM
در SVM(ماشین بردار پشتیبان) دو نوع حاشیه داریم: حاشیه نرم یا Soft Margin و حاشیه سخت یا Hard Margin. اگرچه هردو برای شما اصطلاحاتی جدید هست، اما خوشبختانه شما حاشیه سخت را در بالا دیدید. اینکه، حاشیه را به حدی بزرگ کنیم که هیچ دادهای داخل حاشیه قرار نداشته باشد. گاهی اوقات، به خاطر نزدیک بودن کلاسها بههم، ساختن یک حاشیه بزرگ و بدون حضور داده کاری مشکل و شاید هم غیرممکن باشد. به همین خاطر، به سراغ حاشیه نرم میرویم. میگوییم، حالا که نمیتوانیم حاشیه بزرگ بدون حضور داده داشته باشیم، کمتر سخت بگیریم. اجازه میدهیم کمی از دادهها داخل حاشیه حضور داشته باشند، اما حاشیه ما بزرگتر شود!

درواقع، خوب هست که پهنای حاشیه و حجم داده در حاشیه را روی دو کفه ترازو بگذارید. یک Trade-off هست! گاهی اوقات میصرفد که کمی از دادهها داخل حاشیه باشند ولی حاشیه بزرگ شود.

ممکن هست، سوالی برای شما پیش بیاید! اینکه دادهها داخل حاشیه باشند و حاشیه ما بزرگ شود، چه ارزشی دارد؟ اصلا اگر داده تست داخل حاشیه بیفتد، به کدام کلاس تعلق دارد؟ ببینید، زمانی که میخواهیم با SVM روی داده تست تصمیم گیری کنیم، حاشیه را فراموش میکنیم! صرفا توجه خود را روی همان مرز تصمیم گیری (همان مرز وسط حاشیه) معطوف میکنیم! اگر داده ما بالای مرز باشد، کلاس آبی و اگر پایین مرز باشد، کلاس قرمز هست! بنابراین، اگر کمی از دادهها داخل حاشیه هم قرار بگیرند، اشکالی ندارد. مشکل بزرگی پیش نمیآید.
ریاضیات پشت SVM (ماشین بردار پشتیبان) بسیار زیاد هست! من چیزی از ریاضیات نگفتم و سعی کردم قضیه را مفهومی برای شما جا بیندازم. فکر میکنم، دیدن یک مثال کدنویسی با سایکیت لرن و تحلیل نتایج مدل بسیار کمک کننده باشد. بریم سراغ کدنویسی…
ادامه دارد…
دیدگاهتان را بنویسید