این تمرین به اندازه ۲ تمرین امتیاز خواهد داشت
انجام این تمرین جهت آشنائی بیشتر با ماشین بردار پشتیبان و شبکه عصبی میباشد. برای انجام این تمرین می توانید از برنامه Matlab و یا هر برنامه مناسب دیگری استفاده نمائید. ( نظیر برنامه svmlight موجود در آدرس http://svmlight.joachims.org )

۱- مواردی برای تحقیق
الف) در مورد روشهای Multiclass SVM تحقیق کرده و با استفاده از مقالات و مراجع معتبر گزارشی در مورد آن بنویسید.
ب) با مطالعه کتب و مقالات مناسب توضیح دهید زمانی که مقدار یک ویژگی در بعضی از نمونه های داده ها وجود نداشته باشد برای آموزش شبکه عصبی چه استراتژی را می توان دنبال کرد.

۲- این تمرین شما را به خواندن کتاب بسیار عالی و علمی بیشاپ ترغیب میکند:
الف) تمرین شماره ۲ و ۱۰ از فصل ششم کتاب بیشاپ را حل کنید.
ب) تمرین شماره ۱ و ۲۸ از فصل پنجم کتاب بیشاپ را حل کنید.

۳- یک مجموعه داده دو کلاسی مناسب به انتخاب خود از مجموعه دادگان UCI دانلود کنید.

۱-۳) استفاده از SVM برای دسته بندی داده:
برای اینکار با استفاده از مجموعه داده فوق ، سه نوع SVM را مورد بررسی قرار دهید:
۱- Polynomial
۲- Radial basis function
۳- Neural nerwork
توجه داشته باشید که برای هر کرنل ۳عدد SVM مختلف خواهید داشت.
نکته ۱- داده ها را به سه دسته آموزشی، ارزیابی(برای تنظیم پارامتر ها به کار می رود) و تست تقسیم کنید.
نکته ۲- در یک روش تنظیم پارامتر که تعدادی پارامتر مختلف را ارزیابی می کند پارامتری را انتخاب کنید که بر روی داده های ارزیابی نتیجه بهتری دارد
سوالات
الف) برای تنظیم پارامتر های Radial Basis Function روش های زیر را آزمایش کنید و پس از نتیجه گیری در مورد بهترین روش از آن برای تنظیم پارامتر های مربوط به کرنل های Polynomial و Neural Network نیز استفاده کنید.
۱) فضا را به صورت یک مشبک(grid) جستجو نمایید.
۲) تعداد ۲۰ نقطه را به صورت تصادفی در فضا قرار دهید.
۳) از یک روش دلخواه استفاده کنید(برای مثال یک روش بهینه سازی نظیر pso).
ب) خطای سه نوع SVM را با هم مقایسه نمائید. خطای داده آموزشی و داده تست را نیز بررسی نمائید.
ج) تعداد بردارهای پشتیبان هر دو روش را مشخص کنید.
د) با تغییر اندازه داده آموزشی تاثیر آنرا در نتیجه بررسی و گزارش کنید.
ه) در صورت مشاهده overfitting آنرا گزارش کنید.
۲-۳) استفاده از شبکه عصبی
این تمرین به منظور آشنایی با شبکه های عصبی برای حل مسئله فوق است.
برای حل این تمرین از شبکه های عصبی موجود در جعبه ابزار نرم افزار Matlab استفاده نمایید.

نکات مورد توجه :
۱- در آزمایش ها داده ها به سه دسته آموزشی، تست و ارزیابی(مورد استفاده روش early stopping پیاده سازی شده در MATLAB) تقسیم می شوند. برای غیر فعال کردن روش early stopping لازم است هیچ داده ای را به بخش ارزیابی اختصاص ندهید.
۲- حداکثر تعداد اپوک را ۱۰۰۰ در نظر بگیرید.
۳- دقت بر اساس درصدی از داده های تست که توسط شبکه عصبی به درستی طبقه بندی می شوندتعیین میگردد.
۴- برای آشنایی بیشتر با شبکه های عصبی پیاده سازی شده در نرم افزار Matlab به http://www.image.ece.ntua.gr/courses_static/nn/matlab/nnet.pdf مراجعه نمایید.

الف) یک شبکه عصبی با دو لایه محاسباتی را در نظر بگیرید. تعداد گره های لایه میانی را ۲، ۴، ۱۰، ۲۰، ۳۵ و ۵۰ عدد قرار دهید. دقت شبکه و زمان آموزش را به صورت نموداری از تعداد گره ها رسم کنید و نمودار را تحلیل نمایید.
ب) تعداد لایه های میانی شبکه را افزایش دهید(تعداد گره های هر لایه را ثابت در نظر بگیرید). تاثیر افزایش تعداد لایه ها را بررسی کنید.
ج) تعداد گره های لایه میانی یک شبکه عصبی دو لایه را ۵۰ عدد در نظر بگیرید و سپس تاثیر پارامتر max_fail مربوط به روش early stopping را بررسی کنید. همچنین یک بار این روش را غیر فعال کرده و شبکه را آموزش دهید. تحلیل خود را از آزمایش های انجام شده ارائه دهید.
د) الگوریتم مورد استفاده برای آموزش شبکه عصبی را traingd در نظر گرفته و سپس تاثیر ممنتم و نرخ یادگیری را در دقت شبکه مورد بررسی قرار دهید.
ه) الگوریتم های trainscg(scaled conjugate gradient)، trainoss(one step scant)، traingd(gradient descend) و trainlm(levenberg-marquardt) را برای حل مسئله این تمرین مورد استفاده قرار داده و کارایی آن ها را با یکدیگر مقایسه نمایید.
ز) باتوجه به آزمایش های انجام شده معماری یک شبکه عصبی مناسب برای حل مسئله ارائه دهید.

۳-۳)
بهترین گزینه های دو روش فوق را با هم مقایسه کنید