ماشین بردار پشتیبان | الگوریتم SVM و کاربردها و ابزارهای پیاده سازی

  • جمعه ۳۱ شهریور ۱۳۹۶
  • بازدید ۹,۲۴۸ نفر

تصویر support-vector-machine-svm_230 ماشین بردار پشتیبان | الگوریتم SVM و کاربردها و ابزارهای پیاده سازی

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

الگوریتم SVM یا ماشین بردار پشتیبان (Support vector machine) یکی از الگوریتم ها در حوزه دسته بندی داده ها است که در این مقاله سعی داریم توضیحات و جزئیات کامل این الگوریتم دسته بندی را توضیح دهیم. در ادامه کاربردها و ابزارات پیاده سازی ماشین بردار پشتیبان را به همراه مقاله ای کامل در این زمینه به صورت PDF جهت دانلود قرار داده ایم.

ماشین بردار پشتیبان (SVM)

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

کاربردهای ماشین بردار پشتیبان (SVM)

در این بخش مروری خواهیم داشته به کاربردهای تشخیص الگو با استفاده از SVM. با توجه به هدف کاربردها در هفت دسته کاربرد مختلف برای SVM دسته بندی شده است که در اینجا به آنها اشاره می کنیم. تعدادی از کاربردها که در دسته بندی خاصی گنجانده نشده است در گروه سایر کاربردها، ذکر شده اند.

1- تشخیص و شناسایی چهره

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

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

2- تشخیص و شناسایی اشیاء

هدف از تشخیص یا شناسایی اشیا یافتن و تعقیب افراد در حال حرکت و یا بررسی ترافیک برای کاربردهای کنترل ترافیک می باشد. شناسایی اشیا 3 بعدی نیز یکی از این زمینه ها می باشد. COIL یک پایگاه داده معروف می باشد که شامل 1222 تصویر از 122 شیء و از 12 زاویه دید مختلف می باشد. این پایگاه داده در بسیاری از کاربردهای تحقیقاتی در این زمینه مورد استفاده قرار گرفته است. Roobaert تشخیص اشیاء 3 بعدی را توسط SVM انجام داد و توانایی SVM را در این شناسایی از زاویه های مختلف، بررسی کرد. M.Pontil و A.Verri با آمیختن تصاویر پایگاه دادهی COIL با نویز و شیفت دادن تصاویر، کارائی بالایی را نتیجه گرفتند.

3- تشخیص دست نوشته و ارقام

در میان کاربردهای مختلفی که بر پایه SVM انجام شده است، تشخیص ارقام دستنویس توسط SVM از تمامی الگوریتم های یادگیری دیگر، کارائی بالاتری داشته است. مشکل عمده در مسئله تشخیص دست نوشته، وجود الگوهای مختلف و متنوع نوشتاری بسیار زیاد می باشد. مدلهای Elastic که برپایه مشاهدات محلی و  برنامه نویسی پویا شکل گرفته اند مانند HMM ، برای تحلیل این تنوع کارا و مناسب هستند. Choisy برای ترکیب این توانایی محلی با ویژگی های سراسری، از NSPH-HMM برای مشاهدات محلی و نرمالسازی و از SVM برای مشاهدات سراسری بر روی خروجی نرمال شده توسط NSPH-HMM ، استفاده نمود. کارهای مختلفی در این زمینه انجام شده است که در مجموع برتری این روش را به سایر روش ها در شناسایی دست نوشته ها نشان میدهد.

4- تشخیص صحبت و گوینده

در مسئله تشخیص صحبت و یا شناسایی گوینده، دو روش بسیار محبوب Discriminative Classifier ها و Generative Model Clasifier ها می باشند. روش های که از  Discriminative Classifier ها استفاده می کنند، شامل درخت های تصمیم گیری، شبکه های عصبی و SVM می باشند. معروفترین روش Generative Model Clasifier شامل مدل Hidden Markov(HMM) و مدل ترکیبی Gaussian (GMM) می باشد. Bengio و Wan از SVM برای شناسایی گوینده با پایگاه داده های مختلف، استفاده نمودند. آنها بر روی داده های وابسته به متن و غیر وابسته به متن کار کرده و روش SVM را با آستانه گذاری کلاسیک برای تصمیم گیری در رد یا پذیرش تایید گوینده، جایگزین نمودند.  استفاده های گوناگونی از SVM در این زمینه نیز صورت گرفته است.

5- بازیابی تصاویر و اطلاعات

Content-based image retrival نتیجه زمنیه تحقیقات مهمی در زمینه کتابخانه های دیجیتال و پایگاه داده های چندرسانه ای می باشد. Guo معیاری جدیدی را تحت عنوان فاصله از مرز، را برای بازیابی بافت تصاویر ابداع نمود که در آن مرز بین دسته ها توسط SVM بدست آمده است. برای بازیابی تصاویر مرتبط بیشتر با تصویر ورودی، طبقه بندی کننده SVM برای جدا کردن تصاویر به دو دسته مرتبط و غیرمرتبط، استفاده شده است. Drucker،Tian و Zhang روش اتوماتیکی را با استفاده از SVM برای بازیابی تصاویر ابداع نمودند که در آن وزن ها با فاصله از ابر صفحه تعیین می شوند و داده ها به دو دسته داده های مثبت و منفی تقسیم می شوند.

6- پیش بینی

هدف اصلی در بسیاری از روش های پیشگویی غیرخطی، پیش بینی نقطه بعدی در یک سری زمانی می باشد. Tay و Cao روش C-ascending SVM را با کاهش C ارائه دادند. این ایده بر این فرض استوار است که بهتر است که وزن بیشتری را به داده های اخیر بدهیم تا به داده های دورتر. نتایج آنها نشان داد که روش  C-ascending SVM کارائی بالاتری را نسبت به SVM استاندارد در پیشگویی سریه ای زمانی اقتصادی، ارائه میدهد. Fan روش SVM را بر مسئله یش بینی مشکلات شرکت ها با توجه به وضعیت اقصادی آنها، منطبق نمود. برای این مسئله انتخاب متغیرهای ورودی (شاخصهای اقتصادی)، روی کارائی سیستم تاثیرگذار می باشد. در مقاله ارائه شده، پیشنهاد داده که از داده های مناسب استفاده شود که فاصله بین دسته های بیشترین مقدار و فاصله بین داده های مشابه را کمترین مقدار قرار می دهند.

7- سایر کاربردها

کاربردهای بسیار زیاد دیگری برای SVM در زمینه تشخیص الگو وجود دارد. بعنوان مثال Yang از SVM برای دسته بندی بصری بر اساس جنسیت، با استفاده از تصاویر کوچک (12*12) و با کیفیت پایین استفاده نمود. او برای این کار از پایگاه دادهی FERET استفاده نمود و از 1111 تصویر استفاده نمود. پس از تعلیم نشان داده شد که کارائی این روش در مقابل روش های قبلی مانند FLD،RBF و … بسیار بالاتر می باشد. Gutta از SVM برای دسته بندی حالات چهره بروی پایگاه داده FERET استفاده نمود و به 100% دقت رسید. Yao پنج دسته اثر انگشت را فرض نمود و از SVM برای این دسته بندی استفاده نمود و کارائی خوبی را نتیجه گرفت. علاوه بر کاربردهای ذکر شده، بسیاری از کاربردهای دیگر مانند خلاصه کردن داده ها، شناسایی هدف و… وجود دارد که SVM به خوبی از عهده آنها برمی آید. در کاربرد خلاصه سازی داده ها، زیرمجموعه ای کوچک از پایگاه دادهای بزرگ انتخاب می شود و دقت تفکیک کننده که بر روی این داده های کاهش یافته عمل میکند، با نتیجه آموزش روی تمام داده ها، مقایسه می شود.

ابزارهای پیاده سازی ماشین بردار پشتیبان (SVM)

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

1- MATLAB

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

2- LIBSVM

بسته دیگری که برای کار با SVM ارائه شده است LIBSVM می باشد که به صورت مجموعه ای از توابع کتابخانه ای توسط Chih-Chung Chang and Chih-Jen Lin ارائه شده است.

مجموعه LIBSVM  دارای امکانات فراوانی برای استفاده از SVM می باشد که برخی از آنها در زیر آمده اند:
  • برای کاربردهای کلاسه بندی،رگرسیون و تخمین توزیع شده قابل استفاده می باشد
  • از دسته بندی چند کلاسه پشتیبانی می نماید
  • حمایت از تخمین احتمالاتی
  • از توابع هسته گوناگون استفاده می نماید، ضمن آنکه ماتریس هسته در آنها از قبل محاسبه شده است
  • سورس آن به دو زبان C++ و Java موجود می باشد
  • در زبانها و محیط های مختلف قابل استفاده می باشد

3- svm-struct-matlab

svm-struct-matlab عنوان بسته است که توسط Andrea Vedaldi برای استفاده ساده تر و کارآمدتر از SVM در نرم افزار MATLAB به صورت مجموعه ای از توابع پیاده سازی شده است که در MATLAB قابل فراخوانی و استفاده می باشد.

 

مطالب مرتبط
بررسی چالش های داده کاوی
ثبت نظر
ریفریش کنید!
نظرات کاربران (۷ مورد)
  1. تصویر آواتار کاربر 0
    faeze شنبه , 9 دی

    سلام تولباکس ماشین بردار پشتیبان (libsvm) رو از کجا باید دانلود کنم؟

  2. تصویر آواتار کاربر 0
    saeed دوشنبه , 3 اردیبهشت

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

  3. تصویر آواتار کاربر 0
    یلدا دوشنبه , 10 اردیبهشت

    سلام لطفا نحوه نصب و کار با libsvm را آموزش بدید. ممنون

  4. تصویر آواتار کاربر 0
    محسن اکبری یکشنبه , 13 آبان

    با تشکر از شما مطالب آموزنده ای بود

  5. تصویر آواتار کاربر 0
    مصطفی پنجشنبه , 15 خرداد

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

  6. تصویر آواتار کاربر 0
    میلاد یکشنبه , 25 خرداد

    سلام.b در معادله شامل چی میشه؟