ماشین بردار پشتیبان ( SVM ) – بخش اول : نظریه

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

مقاله مرتبط :

مقدمه

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

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

نمودار کلاسه بندی
تصویر الف : یک خط بکشید که دایره های سیاه و مربع های آبی را از هم جدا می کند.

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

نمودار کلاسه بندی خط جدا کننده
تصویر ب : خط برش، نمونه را به دو کلاس تقسیم می کند.

۱- موضوع را کمی پیچیده تر کنیم …

بسیار خب. حال در نظر بگیرید که اگر داده ها را در تصویر زیر مشاهده کنیم چه؟ واضح است که هیچ خطی وجود ندارد که بتواند این دو کلاس را در صفحه x – y جدا کند. پس چکار کنیم؟ ما تبدیلاتی را اعمال می کنیم و یک بعد دیگر را اضافه می کنیم و آن را محور z می نامیم. فرض کنید که مقدار نقاط روی صفحه z  برابر با w = x² + y² باشد. در این صورت می توانیم آن را به عنوان فاصله نقطه از مبدا z قرار دهیم. حال اگر نمودار را در محور z رسم کنیم، یک جدا سازی واضح قابل مشاهده است ومی توان یک خط رسم کرد.

نمودار کلاسه بندی پیچیده
می توانید یک خط جداگانه در این صفحه بکشید؟
نمودار کلاسه بندی پیچیده کرنل
نمودار محور zy. یک خط جدا کننده را می توان در اینجا رسم کرد.

وقتی این خط را به صفحه اصلی تبدیل می کنیم، به صورت مرز دایره ای نشان داده شده در تصویر زیر تبدیل می شود. این تبدیلات، کرنل ( Kernels ) نامیده می شوند.

نمودار کلاسه بندی دایره جدا کننده
تبدیل به صفحه x – y، خط به دایره تبدیل می شود.

خوشبختانه لازم نیست هر بار برای مجموعه داده های خود این تبدیل و استخراج را حدس بزنید. پیاده سازی  SVM در کتابخانه sklearn آن را درون خود دارد.

۲- موضوع را کمی بیشتر پیچیده تر کنیم …

اگر نمودار داده ها همپوشانی داشته باشد چه؟ یا اگر بعضی از نقاط سیاه در میان نقاط آبی بودند چطور؟ کدام یک از خطوط ۱ یا ۲ را باید رسم کرد؟

نمودار کلاسه بندی ماشین بردار پشتیبانی
در این مورد چی?
نمودار ماشین بردار پشتیبانی کلاسه بندی
تصویر ۱
نمودار ماشین بردار پشتیبانی کلاسه بندی 2
تصویر ۲

فکر می کنید کدام یک؟ خب، هر دو جواب صحیح هستند. اولی، برخی نقاط دور افتاده را تحمل می کند. مورد دوم سعی دارد با تقسیم بندی کامل به تلورانس ۰ دست یابد.

اما این یک معامله است. در دنیای واقعی، یافتن کلاس کامل برای میلیون ها مجموعه داده آموزشی زمان زیادی را می طلبد. همانطور که در کد نویسی خواهید دید.

این پارامتر تنظیم ( Regularization ) نامیده می شود. در بخش بعدی دو پارامتر تنظیم کننده و گاما ( Gamma ) را تعریف می کنیم. این ها پارامتر های بهبود  SVM می باشند. با تغییر آن ها می توان به کلاسه بندی  غیر خطی قابل ملاحضه ای با دقت بیشتر در زمان معقول دست یافت. در تمرین کد نویسی (بخش دوم از این مطلب) خواهیم دید که چگونه می توانیم دقت  SVM را با تنظیم این پارامتر ها افزایش دهیم.

یک پارامتر دیگر کرنل است. کرنل تعریف می کند که آیا می خواهیم خطی از جدا سازی خطی داشته باشیم. این موضوع در بخش بعدی بررسی شده  است.

۳- پارامترهای تنظیم: کرنل ، تنظیم ، گاما و حاشیه ( Margin )

کرنل

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

برای کرنل خطی معادله پیش بینی برای یک ورودی جدید با استفاده از ضرب داخلی بین ورودی (x) و هر بردار پشتیبان (xi) به صورت زیر محاسبه می شود:

f(x) = B(0) + sum(ai * (x،xi))

این یک معادله است که شامل محاسبه ضرب داخلی یک بردار ورودی جدید (x) با همه بردارهای پشتیبان در داده های آموزشی می شود. ضرایب b0 و ai (برای هر ورودی) باید از داده های آموزشی توسط الگوریتم یادگیری بدست آید.

کرنل چند جمله ای می تواند به صورت زیر نوشته شود.

K(x،xi) = 1 + sum(x * xi)^d

و کرنل نمایی به صورت زیر می باشد.

K(x،xi) = exp(-gamma * sum((x — xi²))

کرنل های چند جمله ای و نمایی خط جدا ساز را در بعد های بالا تر محاسبه می کنند. به این عمل ترفند کرنل ( Kernel Trick ) گفته می شود.

تنظیم

پارامتر تنظیم (اغلب به عنوان پارامتر c درکتابخانه sklearn ” پایتون ” نامیده می شود) بهینه سازی  SVM نشان می دهد که چقدر می خواهید از داده های کلاسه بندی نشده در هر نمونه آموزش اجتناب کنید.

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

تصاویر زیر (مانند تصویر ۱ و تصویر 2  دربخش ۲) مثال هایی از دو پارامتر تنظیم متفاوت هستند. تصویر سمت چپ کلاسه بندی های اشتباهی به علت مقدار تنظیم کم تر دارد. مقدار بالاتر تنظیم منجر به نتایجی مشابه شکل سمت راست می شود.

ماشین بردار پشتیبانی با تنظیم پایین
مقدار تنظیم پایین
ماشین بردار پشتیبانی با تنظیم بالا
مقدار تنظیم بالا

گاما

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

ماشین بردار پشتیبانی با گاما زیاد
گاما بالا
ماشین بردار پشتیبانی با گاما پایین
گاما پایین

حاشیه

و بالاخره به آخرین ویژگی کلاسه بند SVM می رسیم. روش SVM در اصل برای رسیدن به یک حاشیه خوب تلاش می کند.

حاشیه، میزان فاصله خط جدا کننده از نزدیک ترین نقاط است.

حاشیه خوب جایی است که این جدا برای هر دو گروه بزرگ تر باشد. تصویر زیر به مثالی از حاشیه خوب و بد را نشان می دهد. حاشیه خوب به نقاطی اجازه می دهد که بدون اینکه به کلاس دیگر وارد شوند در کلاس های خود جای بگیرند.

ماشین بردار پشتیبانی با حاشیه خوب
ماشین بردار پشتیبانی با حاشیه بد

در بخش بعدی این فصل، ما با پارامترهای تنظیم و اجرای یک پروژه کوچک برای کلاسه بند  SVM (که به عنوان SVC شناخته می شود) آشنا می شویم و نتایج را با کلاسه بند بیز ساده مقایسه می کنیم.

نتیجه گیری

امیدواریم این مطلب در درک کارکرد کلاسه بند SVM مفید بوده باشد. نظرات، باز خورد و پیشنهادات خود را در بخش نظرات بنویسید. اگر این پست را دوست داشتید، آن را با دوستانتان به اشتراک بگذارید.

بیشتر بخوانیم :

منبع Medium

همچنین ببینید

فناوری تشخیص چهره و کاربردهای آن، تاریخچه تکنولوژی تشخیص چهره

فناوری تشخیص چهره و کاربردهای آن + تاریخچه

فناوری تشخیص چهره یک فناوری بیومتریک است که با استفاده از تجزیه و تحلیل الگوهایی …

6 نظر

  1. خیلی عالی و اموزنده بود
    با تشکر فراوان از شما

  2. متشکرم.
    توضیحات خوبی داده اید.

  3. با تشکر خیلی ساده و خوب توضیح دادید . متشکرم

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *