به بخش پرسش و پاسخ یادگیری عمیق خوش آمدید,
این نسخه آزمایشی سایت است.
لطفا به نکات زیر توجه کنید:
  • برای ارتباط با مدیران میتوانید از صفحه مدیران اقدام کنید.
  • سوال و جواب ها باید به زبان فارسی باشند. استفاده از زبان انگلیسی یا فینگلیش برای پاسخ دادن مجاز نیست.
  • لطفا بعد از پرسش سوال لینک سوال خود را در گرو تلگرام (Iran Deep Learning Group) معرفی کنید تا سریعتر به جواب برسید. برای دسترسی به آخرین لینک از منابع یادگیری استفاده کنید
  • لطفا بجای عکس از متن استفاده کنید. اگر متون طولانی هستند از سایت pastebin.com برای اپلود استفاده کرده و لینک حاصل را در سوال خود قرار دهید. برای قرار دادن تصویر ، از بخش ارسال تصویر ادیتور سایت استفاده کنید.
  • بعد از دریافت پاسخ، بهترین پاسخ را از طریق کلیک بر روی علامت تیک انتخاب کنید
  • اگر با خطا و یا مشکلی مواجه شدید از بخش تماس با ما در انتهای صفحه و یا ایمیل Coderx7@gmail.com موضوع را اطلاع دهید.

با تشکر

دسته بندی ها

0 امتیاز

سلام و عرض ادب
دوستان کسی در مورد تکنیک Bootstrapping میدونه ؟ اگر امکانش هست با توضیحات خوبتون تا حد امکان توضیحشون دهید و منابع مناسب خوبی قرار دهید.

توسط (389 امتیاز)

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

سلام
بحث bootstrapping، کلیت ایدش اینه که توی طراحی مدل یا یه آزمایش یه چیزی رو به صورت رندوم نغییر بدید و در نهایت از همه این نتیجه ها استفاده کنید(مثلا میانگین بگیرید)
از دید یادگیری ماشین و آمار، این چیزی که می خوایم رندوم باشه می تونه، دیتاست باشه، می تونه خوده مدل باشه(مثلا یه بار شبکه عصبی آموزش بدید یه بار یه knn یه بار یه decision tree و ....) ، یا مثلا توی خوده شبکه عصبی، می تونید هر بار با یه initialization مجزا، یا learning rate های مختلف شبکه رو آموزش بدید یا ساختار شبکه رو عوض کنید و ....
(البته بحث ensemble و bootstrap توی شبکه های عصبی و به خصوص شبکه های دیپ نکات مخصوص خودش رو داره که سریعتر به نتیجه برسید)

https://en.wikipedia.org/wiki/Bootstrapping_(statistics)

به رندوم کردن دیتاست البته به طور خاص bagging می گن و بهتره با مدلهایی استفاده بشه که نسبت به تغییرات دیتا حساس هستن، مثلا شبکه عصبی یا decision tree )
منظور از رندوم کردن هم اینه که فرض کنید دیتاست شما n تا داده داره، حالا شما می خواید k تا دیتاست از روی همین یه دونه دیتاست که دارید بسازید
یکی از کاریهای که توی bagging انجام می شه اینه که k بار ، n تا داده با جایگذاری از دیتاست اصلی انتخاب می کنید(در نتیجه یه داده می تونه چندبار انتخاب بشه، یا اصلا انتخاب نشه)

https://en.wikipedia.org/wiki/Bootstrap_aggregating

این تکنیک ها رو تقریبا برای هر مدلی می تونید استفاده کنید (البته کاراییش بستگی به خواص خوده مدل هم داره)، اما برای نمونه یکی از مدل های موفق توی این زمینه random forest ها هستن

https://en.wikipedia.org/wiki/Random_forest

توسط (1.6k امتیاز)
انتخاب شده توسط
ممنونم ازتون
اینکه رندوم کردن دیتا بکار میرود بنظرم در شبکه های عمیق که دیتاست خیلی زیادی نیاز دارد آیا اونجا هم بخث رندوم بکار میرود چون مباحثی مثله برزدن در دیتاهای کوچک بکار میرود آیا همین برزدن یا bagging  یا  random forest برای دیتاهای خیلی بزرگ هم بکار میرود ؟ آیا در نتیجه شبکه های عمیق تاثیر گذار هست ؟
شاید من بد توضیح دادم، بحث baggin با بحث suffle کردن دیتاست متفاوته از جهاتی
توی suffle ما فقط ترتیب داده ها رو عوض می کنیم که بحثهای تئوری پشتش هست و مربوط میشه به خواص الگوریتم sgd
اما توی bagging ما n تا دیتاست تولید می کنیم که همیشون از یه دیتاست به وجود اومدن. حالا وقتی می خوایم روی هر کدوم از این دیتاست ها train کنیم شبکه رو ، از shuffling هم استفاده می کنیم.
اتفاقا استفاده از bagging یا کلا ایده ها boosting می تونه وقتی داده ها کمه خیلی مفید باشه.
استفاده از random forest برای داده های زیاد هم کاربرد داره. اما اینکه ایا برای یه مساله بهتر از شبکه دیپ جواب می ده یا نه، بحث دیگس. خوبیشون اینه که خیلی سریع آموزش داده میشن و می تونید ببینید چطوری برای مساله شما کار می دن
در مورد نتیجه نهایی واقعیتش اینه که نمی شه از اول نظر داد، در اکثر مواقع استفاده از این تکنیک ها اوضاع رو بهتر می کنه، اما هیچ ضمانت تئوری به این قضیه نیست که همیشه حتما باید اتفاق بیوفته
در واقع k-fold cross validation یه نوعی از همین bagging حساب میشود ؟
نه نمیشه اینطوری گفت چون توی baggin ما در واقع چندتا دیتاست، از یه دیتاست ایجاد می کنیم و مدلهامون رو روش آموزش می دیم. و بعدش نتایج همه این مدل ها رو توی پیش بینی استفاده می کنیم.

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