تالار گفتمان مانشت
تقسیم دیتاست به داده های یادگیری و داده های تست - نسخه‌ی قابل چاپ

تقسیم دیتاست به داده های یادگیری و داده های تست - AmiriManesh - 18 شهریور ۱۳۹۳ ۰۵:۰۷ ب.ظ

با سلام
دوستانی که مقاله نوشتند و یا پایان نامه کار کردند، کسی میدونه که بهترین روش برای تقسیم دیتاست به دو دسته ی داده های یادگیری و داده های تست، چی هست؟ لطفا هر کسی که نظر میده، با مرجع بگه. توی جلسه ی دفاع یکی از دانشجویان دیدم که این سوال ازش پرسیده شد که بر چه اساس دیتاست رو تقسیم کردید! دانشجو جوابی نداشت و گویا سر خود دیتاست رو ۵۰ ۵۰ تقسیم کرده بودExclamation
توی مطالبی که مطالعه کردم، دیدم که نوشته شده بود، اگر دیتاست بزرگ هست، بهتر هست که داده ها بصورت تصادفی به دو گروه تقسیم بشن، ولی در صد دقیقی برای هر دو طرف نیومده بود، ولی زمانی که دیتاست کوچیک هست، بهتره که از روش k-fold استفاده بشه. دیتاست من شامل ۴۷۲۸۶ سطر هست. در واقع یک دیتاست بزرگ هست.
ممنون میشم دوستانی که دانشی در این زمینه دارند، کمک کنند.

تقسیم دیتاست به داده های یادگیری و داده های تست - blackhalo1989 - 18 شهریور ۱۳۹۳ ۰۶:۲۹ ب.ظ

این جزو مسائل پایه ای هست. اول باید اینا رو بدونید بعد برید سراغ بقیه یادگیری ماشین. ضمن اینکه نه تنها برای این مساله بلکه برای تک تک اجزای تز و ادعاهاتون باید دلیل داشته باشید حتی بعضی وقت ها باید استادی که علمش برای قدیم هست هم قانع کنید.

RE: تقسیم دیتاست به داده های یادگیری و داده های تست - AmiriManesh - 18 شهریور ۱۳۹۳ ۰۷:۴۹ ب.ظ

(۱۸ شهریور ۱۳۹۳ ۰۶:۲۹ ب.ظ)blackhalo1989 نوشته شده توسط:  این جزو مسائل پایه ای هست. اول باید اینا رو بدونید بعد برید سراغ بقیه یادگیری ماشین. ضمن اینکه نه تنها برای این مساله بلکه برای تک تک اجزای تز و ادعاهاتون باید دلیل داشته باشید حتی بعضی وقت ها باید استادی که علمش برای قدیم هست هم قانع کنید.
متوجه منظورتون نشدم؟ منظور شما این هست که من برم و مطالعه ی مفصلی راجع به این مورد داشته باشم؟ من زمان زیادی ندارم. میدونستم که این مورد، مورد بسیار مهمی هست ولی فکر نمیکردم که اینقدر مفصل باشه. راجع به جای جای پایان نامه استادم بهم گفتند که باید دلیل علمی داشته باشم و خوشبختانه دارم.
آیا برای این مورد امکانش وجود نداره که من بگم فرضا چون فلان مقاله ی معتبر از فلان روش استفاده کرده، من هم از این روش استفاده کردم؟
راجع به تقسیم دیتاست اگر منبعی جهت مطالعه میشناسید، ممنون میشم که معرفی کنید.

تقسیم دیتاست به داده های یادگیری و داده های تست - blackhalo1989 - 18 شهریور ۱۳۹۳ ۰۸:۳۵ ب.ظ

تو الگوشناسی آماری اول چندین جلسه مقدمات راجع به یادگیریه که مستقل از روش مورد استفاده است. مثلا overfittig, dimension reduction, ... . بعد از اینها روش های مختلف تدریس میشه.
برای تقسیم دیتاست اگر دیتاست بزرگه و validation set نداره، داده ها رو به صورت تصادفی به ۱/۳ برای تست و ۲/۳ برای یادگیری تقسیم کنید. فکر نمیکنم برای این دلیل بخوان چون خیلی متداوله و ضمنا یه سری روابط ریاضی هم پشتشه.

تقسیم دیتاست به داده های یادگیری و داده های تست - AmiriManesh - 18 شهریور ۱۳۹۳ ۱۰:۵۳ ب.ظ

ممنون از پاسختون.
اگر منظورتون از مراحل اولیه، مباحث پیش پردازش هست، من همه ی اینها رو پشت سر گذاشتم. من یک فایل لاگ داشتم که اون رو پیش پردازش کردم و دیتاستم رو خودم ساختم.
خب اگر از من بپرسند که براساس کدوم رفرنس مطمئن هستید که این روش خوب هست، چه جوابی باید بدم؟
من دیدم که اکثر جاها آورده بودند که ۸۰ درصد داده ها برای یادگیری و ۲۰ درصد برای تست استفاده میشن. این طرز تقسیم که شما فرمودید رو هم توی جزوه ی یکی از اساتیدم دیدم.
من دنبال رفرنسی هستم که اگر زمانی از من سوال کردند که چرا این روش رو انتخاب کردی، با اطمینان به اون رفرنس اشاره کنم!

تقسیم دیتاست به داده های یادگیری و داده های تست - blackhalo1989 - 18 شهریور ۱۳۹۳ ۱۱:۰۱ ب.ظ

این تقسیم بندی رو فکر می کنم تو کتاب mitchell گفته.

تقسیم دیتاست به داده های یادگیری و داده های تست - Lonely Palm - 19 شهریور ۱۳۹۳ ۰۳:۱۲ ق.ظ

من سر این قضیه از یکی از اساتیدی که یادگیری ماشین تدریس می کردند پرسیدم گفتند ۱۰-fold بزن با split ratio 0.7 ...یعنی ۰/۷ واسه یادگیری و ۰/۳ تست با ۱۰ فولد، بعد ROC curve بگیر ...مرجع خاصی رو ازشون نپرسیدم اون موقع

RE: تقسیم دیتاست به داده های یادگیری و داده های تست - AmiriManesh - 19 شهریور ۱۳۹۳ ۰۹:۲۰ ق.ظ

(۱۹ شهریور ۱۳۹۳ ۰۳:۱۲ ق.ظ)Lonely Palm نوشته شده توسط:  من سر این قضیه از یکی از اساتیدی که یادگیری ماشین تدریس می کردند پرسیدم گفتند ۱۰-fold بزن با split ratio 0.7 ...یعنی ۰/۷ واسه یادگیری و ۰/۳ تست با ۱۰ فولد، بعد ROC curve بگیر ...مرجع خاصی رو ازشون نپرسیدم اون موقع
دیتاست من ۴۷۲۶۸ نمونه داره. اینطوری خیلی زمان اجرا بالا میره! دیتاست شما هم بزرگ بود؟

تقسیم دیتاست به داده های یادگیری و داده های تست - blackhalo1989 - 19 شهریور ۱۳۹۳ ۰۴:۲۹ ب.ظ

برای دیتاست های کوچیک از k-fold استفاده میشه به دلایلی اما برای دیتاست های بزرگ از k-fold استفاده نمیشه چون نیازی بهش نیست و زمان یادگیری رو بالا میبره.

RE: تقسیم دیتاست به داده های یادگیری و داده های تست - Lonely Palm - 19 شهریور ۱۳۹۳ ۱۰:۴۴ ب.ظ

(۱۹ شهریور ۱۳۹۳ ۰۹:۲۰ ق.ظ)AmiriManesh نوشته شده توسط:  دیتاست من ۴۷۲۶۸ نمونه داره. اینطوری خیلی زمان اجرا بالا میره! دیتاست شما هم بزرگ بود؟
من سه تا دیتاست ۱۰ هزارتایی داشتم، ولی با این حال منو مجبور کردن به ۱۰ fold ..وگرنه فرمایش آقای blackhalo کاملا صحیحه
من رو pc (لپتاپم نمی کشید) شب ران میزاشتم فردا عصرش می رفتم جوابا رو یادداشت می کردم، تازه من رو هر کدوم از اینا ۱۲ تا الگوریتم دسته بندی مختلف می زدم ...
اینو شوخی نمی کنم کاملا جدی میگم بعضی وقت ها بوی کامپیوترم بلند میشد، یه بوی سوختگی خیلی ملیح Smile
استدلال این استاد این بودش که شما چون دیتاست رو خودت ساختی باید اثباتت محکم باشه و روش hold-out خیلی در نظر اساتید داور برای دیتاست شما محکمه پسند نیست

تقسیم دیتاست به داده های یادگیری و داده های تست - blackhalo1989 - 20 شهریور ۱۳۹۳ ۰۱:۲۴ ق.ظ

ببینید استدلال استادتون غلظه.
اولا: k-fold برای داده های کم استفاده میشه تا هر داده چند بار به الگوریتم داده بشه تا لرنر بهتر ترین بشه و دقت هم بهتر محاسبه بشه ولی در دیتاست های بزرگ چون حجم دیتاست بالاست احتیاجی به این کار نیست چون اولا ۱/۳ از داده شما نمونه خوبی از کل داده هاست (توزیع داده های در اون حفظ شده) و ثانیا زمان خیلی زیادی میگیره (چون داده ها زیادن) در حالی که احتیاجی به این همه محاسبه نیست (این همه محاسبه بهبودی نداره).
دوما: اگر به فرض دیتا ست شما داده های مشکل دار داشته باشه، با k-fold این داده ها چندین بار به لرنر داده میشن پس باز مشکل سر جای خودش باقی میمونه.

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

تقسیم دیتاست به داده های یادگیری و داده های تست - AmiriManesh - 20 شهریور ۱۳۹۳ ۰۲:۵۸ ق.ظ

ممنون از آقای balckhalo و Lonely palm.
آقای lonely palm، شما هر سه تا دیتاستتون روی هم نمیشه به اندازه ی دیتاست من. من دیتاستم ۴۷ هزار نمونه داره.
من برای ایجاد خود دیتاست هم، که برنامه رو توی وِیژوال ستودیو نوشته بودم، و باید وزنی رو برای صفحات محاسبه میکرد، همین مشکل رو داشتم. باید سیستمم رو شبها روشن میگذاشتم. خیلی اذیت شدم. چند روز طول میکشید تا بهم جواب بده. البته سیستمم خیلی قوی نیست. الان هم از این مشکل هراس دارم. ولی بهرحال اگر ثابت بشه که k-fold روش بهتری هست، بهرحال اجرا میکنم. جناب blackhalo با نظر شما مخالفت کردند. من هم توی مطالعاتی که داشتم، همین مطلب رو دقیقا دیدم که k-fold برای دیتاست کوچیک هست. استادی دارم که خیلی توی این مسائل خبره هستند، ولی متاسفانه هنوز جوابی از ایشون نگرفتم.

تقسیم دیتاست به داده های یادگیری و داده های تست - Lonely Palm - 20 شهریور ۱۳۹۳ ۰۳:۵۶ ق.ظ

این روزها من کلا بخاطر شرایط سخت کاری ۲ ساعت خواب هم به زور دارم ...
آقای blackhalo دانشجوی هوش بودند و قطعا فرمایشاتشون خیلی قابل استنادتر از من هستش که مثل یه توریست اومدم و در مورد مفاهیم ماشین لرنینگ صحبت می کنم ... من واقعا استدلال های ایشون رو می پسندم
اما مشکل من و امثال من بستن دهن داورا روز دفاعه ...الآن اگه حرف بزنم یه عده متهمم میکنن ولی اساتید هوش دانشگاه فردوسی(مخصوصا اونایی که حوزه کاریشون این هستش) عادت دارن به همه چی گیر بنی اسرائیلی بدن و اگر روز دفاع من این استدلال های کاملا درست جناب blackhalo رو بیان کنم متهم میشم به اینکه تو که اصلا رشته ت هوش نبوده تا حالا نه پترن پاس کردی نه ماشین لرنینگ کلا حرف نزن چون اونی که منه دکتر دارم میگم قطعا درسته ...من سر یه جلسه دفاع دیدم یکی از این اساتید بسیار معروف گفت از نظر من هرکی ۱۰ فولد نزنه دروغ گوئه! خوب این حرف یعنی چی آقای دکتر؟ میخوای کار رو زیر سوال ببری راهش این نیست ...
بنابراین اگر من اصرار دارم شما هم صرف نظر از میزان محاسبات و اصلا عدم نیاز به همچین کاری، باز بیا ۱۰ فولد بزن واسه یه همچین چیزاییه! قانع کردن یه همچین آدمایی روز دفاع کار من که نیست ...
ران من از اون جهت طولانی بود که تقریبا باید هر سری ۱۲ بار اینکارو تکرار می کردم(یعنی هر شب تا عصر فرداش جواب یکیش می اومد و ۱۲ روز هر سری طول می کشید) و هر مجموعه ی ۱۲ تایی رو چندین و چند بار!!! من دسترسی به سرور نداشتم متاسفانه