تالار گفتمان مانشت

نسخه‌ی کامل: کرنل های svm
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
با سلام
دوستان می خواستم کمی در خصوص 3 کرنل svm یعنی rbf - mlp - چند جمله ای
بصورت واضح توضیح بفرمایید. کارشون چیه این 3 تا و دقیقا چکار می کنند.؟
یعنی من فرضا چند هزار داده با فرضا 500 ویژگی دارم و می خوام این را در دو کلاس قرار بدم، این کرنل ها دقیقا روی داده هچکار می کنند؟
با تشکر
کرنل یه بیس ریاضی داره. اون رو خوندید؟
توضیح ساده ش اینه:

الگوریتم SVM یک کلاسیفایر خطی هست و دنبال یافتن یک خط هست که داده های 2 کلاس رو هم از جدا کنه. حالا اگر داده ها به شدت غیر خطی از هم جداپذیر باشند (مثلا مرز دو کلاس بفرم بیضی باشه یا مسئله مانند XOR باشه)، هیچ الگوریتم خطی نمی تونه کارایی خوبی داشته باشه و داده ها رو خوب از هم تفکیک کنه. حالا یه کار که میشه کرد این هست که فضایی که الان داده ها توش قرار دارن رو تغییر بدیم به نحوی که توی فضای جدید داده ها خطی از هم جدا بشن. به عبارت دیگه ابعاد داده رو بالا ببریم تا در فضای feature جدید داده ها بفرم خطی از هم جدا بشوند.

این کرنل ها ارتباط خاصی با تعداد داده ها تون ندارن و روی مسئله نوع مرز تصمیم (مرز جداساز) تمرکز دارن.
(23 مرداد 1395 12:01 ق.ظ)Masoud05 نوشته شده توسط: [ -> ]توضیح ساده ش اینه:

الگوریتم SVM یک کلاسیفایر خطی هست و دنبال یافتن یک خط هست که داده های ۲ کلاس رو هم از جدا کنه. حالا اگر داده ها به شدت غیر خطی از هم جداپذیر باشند (مثلا مرز دو کلاس بفرم بیضی باشه یا مسئله مانند XOR باشه)، هیچ الگوریتم خطی نمی تونه کارایی خوبی داشته باشه و داده ها رو خوب از هم تفکیک کنه. حالا یه کار که میشه کرد این هست که فضایی که الان داده ها توش قرار دارن رو تغییر بدیم به نحوی که توی فضای جدید داده ها خطی از هم جدا بشن. به عبارت دیگه ابعاد داده رو بالا ببریم تا در فضای feature جدید داده ها بفرم خطی از هم جدا بشوند.

این کرنل ها ارتباط خاصی با تعداد داده ها تون ندارن و روی مسئله نوع مرز تصمیم (مرز جداساز) تمرکز دارن.

یعنی غیر خطی نیست? پس اینکه میگن وقتی از کرنل هاش استفاده می کنیم برای مسائل غیرخطی هست منظورشون چیه؟ مثل این عکس منظورم هست
[تصویر:  417662_rq7v2xxca6rg6guw0qi1.png]

ببخشید میشه بخشی که قرمز کردم رو توضیح بفرمایید. درست متوجه نمیشم.

من اگر بخواییم بجای svm از چیز دیگری استفاده کنیم، آن چی می تونه باشه؟
با تشکر

(22 مرداد 1395 11:45 ب.ظ)blackhalo1989 نوشته شده توسط: [ -> ]کرنل یه بیس ریاضی داره. اون رو خوندید؟

بله. مطالعه کردم. می خواستم بیشتر در خصوص همین فرمول هم بدونم که چطور عمل می کنه.
همچنین اگر امکان داره در خصوص پارامترهاش (سیگما) توضیح بفرمایید؟ ما باید از روی چه حسابی این اعداد را مشخص کنیم تا نرخ خطای کمی به ما بدهد؟
در توضیح این بخش از پاسخم: "این هست که فضایی که الان داده ها توش قرار دارن رو تغییر بدیم به نحوی که توی فضای جدید داده ها خطی از هم جدا بشن. به عبارت دیگه ابعاد داده رو بالا ببریم تا در فضای feature جدید داده ها بفرم خطی از هم جدا بشوند."

می توانم اینطوری بگم که برخی وقتا با افزودن ویژگی های بیشتر به داده ها و همچنین تغییر در مقدار ویژگی ها، مسئله ای که در حالت عادی بطور غیر خطی داده هاش از هم جدا میشدن الان دیگه خطی جدا بشن. فرض کنید همه داده ها 1 بعدی هستند و دارای یک عدد ویژگی (داده ها رو روی محور x فرض کنید). حالا اگر مسئله 2 کلاسه باشه و داده ها قاطی باشن هیچ جوری نمیشه با یک خط اینها رو از هم کرد. اما فرض کنید یک ویژگی دیگری هم به داده ها اضافه کنیم (محور y رو تصور کنید) . فرض کنید داده های کلاس 1 دارای مقدار صفر برای Y هستند و داده های کلاس 2 دارای مقدار 1 برای y هستند، الان با یک خط میشه داده ها رو جدا کرد

کرنل یه همچین کاری میخواهد بکنه منتهی در سطح خیلی خیلی بزرگ تر.

بجای استفاده از کرنل SVM برای کلاسبندی، می توانید از کلاسیفایرهای غیر خطی مثل شبکه عصبی با وجود لایه های مخفی استفاده کنید. الگوریتم KNN هم یک جایگزین مناسب است (بشرطی که معیار شباهتش رو درست تعریف کنید).
(23 مرداد 1395 05:22 ب.ظ)Masoud05 نوشته شده توسط: [ -> ]در توضیح این بخش از پاسخم: "این هست که فضایی که الان داده ها توش قرار دارن رو تغییر بدیم به نحوی که توی فضای جدید داده ها خطی از هم جدا بشن. به عبارت دیگه ابعاد داده رو بالا ببریم تا در فضای feature جدید داده ها بفرم خطی از هم جدا بشوند."

می توانم اینطوری بگم که برخی وقتا با افزودن ویژگی های بیشتر به داده ها و همچنین تغییر در مقدار ویژگی ها، مسئله ای که در حالت عادی بطور غیر خطی داده هاش از هم جدا میشدن الان دیگه خطی جدا بشن. فرض کنید همه داده ها ۱ بعدی هستند و دارای یک عدد ویژگی (داده ها رو روی محور x فرض کنید). حالا اگر مسئله ۲ کلاسه باشه و داده ها قاطی باشن هیچ جوری نمیشه با یک خط اینها رو از هم کرد. اما فرض کنید یک ویژگی دیگری هم به داده ها اضافه کنیم (محور y رو تصور کنید) . فرض کنید داده های کلاس ۱ دارای مقدار صفر برای Y هستند و داده های کلاس ۲ دارای مقدار ۱ برای y هستند، الان با یک خط میشه داده ها رو جدا کرد

کرنل یه همچین کاری میخواهد بکنه منتهی در سطح خیلی خیلی بزرگ تر.

بجای استفاده از کرنل SVM برای کلاسبندی، می توانید از کلاسیفایرهای غیر خطی مثل شبکه عصبی با وجود لایه های مخفی استفاده کنید. الگوریتم KNN هم یک جایگزین مناسب است (بشرطی که معیار شباهتش رو درست تعریف کنید).

بعد در خصوص بیماری ها، من یک داده سراغ دارم که از دو بیمار حدودا 27 گیگ سیگنال مغزی داره ولی میگن برای 2 نفر کم هست، باید تعداد نمونه زیاد باشه، شما هم همین نظر رو دارید؟ آخه وقتی داده گیر نمی یاد چکار میشه کرد؟ Confused
(24 مرداد 1395 07:00 ب.ظ)fo-eng نوشته شده توسط: [ -> ]بعد در خصوص بیماری ها، من یک داده سراغ دارم که از دو بیمار حدودا ۲۷ گیگ سیگنال مغزی داره ولی میگن برای ۲ نفر کم هست، باید تعداد نمونه زیاد باشه، شما هم همین نظر رو دارید؟ آخه وقتی داده گیر نمی یاد چکار میشه کرد؟ Confused

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


وقتی گیر نمیاد بهترین کار رها کردنش هستBig Grin. همانطور که قبلا گفتم سراغ این سبک پایان نامه برای ارشد نرید. هیچ کس به شما داده ای نخواهد داد. من حتی دیدم اساتید برای گرفتن دیتاست ماه ها پیگیری میکنن و بعضا برای همونا هم نمیشه. این هست که بنظرم ریسک نکنید.
(03 شهریور 1395 01:11 ق.ظ)Masoud05 نوشته شده توسط: [ -> ]
(24 مرداد 1395 07:00 ب.ظ)fo-eng نوشته شده توسط: [ -> ]بعد در خصوص بیماری ها، من یک داده سراغ دارم که از دو بیمار حدودا ۲۷ گیگ سیگنال مغزی داره ولی میگن برای ۲ نفر کم هست، باید تعداد نمونه زیاد باشه، شما هم همین نظر رو دارید؟ آخه وقتی داده گیر نمی یاد چکار میشه کرد؟ Confused

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


وقتی گیر نمیاد بهترین کار رها کردنش هستBig Grin. همانطور که قبلا گفتم سراغ این سبک پایان نامه برای ارشد نرید. هیچ کس به شما داده ای نخواهد داد. من حتی دیدم اساتید برای گرفتن دیتاست ماه ها پیگیری میکنن و بعضا برای همونا هم نمیشه. این هست که بنظرم ریسک نکنید.

تعداد نمونه چند تا باشه خوبه؟ 10 تا باشه به نظرتون به نتیجه می رسم.

Big GrinShy نگید آقای مهندس .. حداقل روحیه بدید شاید تونستم به حایی برسم. والا الان با یکی از فامیل ها که پزشک حاذقی هستند صحبت کردم، میگه از دانشگاهت نامه نگاری هاش رو بگیر. بیا از مطهری برو داده بهت میدن راحت.
اصلا خودشم می گفتم داده هاش رو می داد ولی داده های اون کم بودن ...
به نظرتون امیدی نیست.؟
اصلا ترجیحا افتادم دنبال داده های حجیم هر چیزی. بچه ها هر کی داده حجیم سراغ داره خبرم کنه؟
اصلا موضوعمو باید عوض کنم و از پزشکی برم یک چیز دیگه Sleepy
(03 شهریور 1395 10:42 ق.ظ)fo-eng نوشته شده توسط: [ -> ]تعداد نمونه چند تا باشه خوبه؟ ۱۰ تا باشه به نظرتون به نتیجه می رسم.

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

من کمترین تعداد داده ای که دیدم فکر کنم مربوط به سرطان ریه باشه که 32 تا بوده.
بجای اینکه خودتون دیتاست تهیه کنید بنظرم از داده های آماده روی UCI استفاده کنید. داده بیماری های سرطان ریه، سینه و ... داره. هپاتیت داره. پارکینسون، دیابت و ...

بعدا که کارتون صورت گرفت، خودتون برید دیتا جمع کنید تا دیگه خیالتون راحت باشه.
(03 شهریور 1395 10:42 ق.ظ)fo-eng نوشته شده توسط: [ -> ]تعداد نمونه چند تا باشه خوبه؟ ۱۰ تا باشه به نظرتون به نتیجه می رسم.

Big GrinShy نگید آقای مهندس .. حداقل روحیه بدید شاید تونستم به حایی برسم. والا الان با یکی از فامیل ها که پزشک حاذقی هستند صحبت کردم، میگه از دانشگاهت نامه نگاری هاش رو بگیر. بیا از مطهری برو داده بهت میدن راحت.
اصلا خودشم می گفتم داده هاش رو می داد ولی داده های اون کم بودن ...
به نظرتون امیدی نیست.؟
اصلا ترجیحا افتادم دنبال داده های حجیم هر چیزی. بچه ها هر کی داده حجیم سراغ داره خبرم کنه؟
اصلا موضوعمو باید عوض کنم و از پزشکی برم یک چیز دیگه Sleepy
فکر نمی کنم درست کردن دیتاست کار ساده ای باشه.
(03 شهریور 1395 11:34 ق.ظ)blackhalo1989 نوشته شده توسط: [ -> ]فکر نمی کنم درست کردن دیتاست کار ساده ای باشه.

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

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