AliFallahi
AliFallahi
خواندن ۳ دقیقه·۳ سال پیش

آموزش تقسیم داده در یادگیری ماشین به داده های training و validation

تقسیم بندی داده ها به دو گروه مجموعه های یادگیری و آموزش (Train set) و ارزیابی (Validation set) یکی از مراحل بسیار مهم در ساخت مدل های ماشین لرنینگ است. در این مطلب ساخت مجموعه های training و validation با استفاده از sklearn را بررسی می کنیم.

در این ساختار، داده ها به گونه ای تقسیم بندی می شوند که یک گروه برای یادگیری و ساخت مدل است که با نام Training data شناخته می شود و یک گروه دیگر به نام Validation data برای ارزیابی عملکرد مدل مورد استفاده قرار می گیرد.

نسبت مجموعه داده فاز آموزش و یادگیری (Training) به مجموعه داده فاز ارزیابی (Validation) اغلب 80 به 20 است. برای مثال اگر اطلاعات 1.000.000 خانه را در اختیار داشته باشیم، 800.000 را برای ساخت و آموزش مدل استفاده می کنیم و سپس ارزیابی را بر روی 200.000 خانه ای انجام می دهیم که مدل قبلا آن ها را مشاهده نکرده است.

اگرچه جداسازی داده ها و ایجاد مجموعه های Train set و Validation set به صورت دستی نیز امکان پذیر است، اما با استفاده از sklearn می توان به راحتی این کار را به صورت داینامیک انجام داد.

https://www.aparat.com/v/LnzpE

کد پایتون برای تقسیم بندی داده ها به مجموعه های یادگیری و ارزیابی

قطعه کد زیر، کدهای کلی است که با استفاده از sklearn تقسیم بندی داده ها انجام می شود.

همانطور که در خط سوم مشاهده می کنید، ما داده ها را به 4 گروه تقسیم می کنیم. فرض کنید تعداد 100 اطلاعات 100 خانه شامل متراژ، تعداد اتاق خواب و قیمت را داریم. هدف نیز محاصبه قیمت است. داده ها با نسبت 80 به 20 تقسیم کرده ایم، در این صورت:

  • train_X شامل متراژ و تعداد اتاق خواب 80 خانه است
  • train_y شامل قیمت های آن 80 خانه است
  • val_X شامل متراژ و تعداد اتاق خواب 20 خانه دیگر است
  • val_y شامل قیمت های آن 20 خانه است


from sklearn.model_selection import train_test_split train_X, val_X, train_y, val_y = train_test_split(X, y, random_state=1) splitted_model = DecisionTreeRegressor(random_state=1) splitted_model.fit(train_X, train_y) val_predictions = splitted_model.predict(val_X)
  • در خط پنجم، مشخص می کنیم که می خواهیم از DecisionTreeRegressor استفاده کنیم.
  • در خط ششم، این مدل را بر روی داده های train_X و train_y یعنی فقط همان 80 خانه اجرا می کنیم. دقت کنید که تا اینجا مدل ساخته شده، هیچ دسترسی به اطلاعات آن 20 خانه ندارد.
  • در خط هشتم، برای اینکه بتوانیم عملکرد مدل را برای داده هایی به غیر از آنچه با آن ها آموزش دیده است، ارزیابی کنیم، آن را بر روی اطلاعات 20 خانه اجرا می کنیم تا ببینیم چه قیمت هایی را برای آن ها پیش بینی می کند.

در پایان می توانیم برای مشخص کردن چگونگی عملکرد مدل، قیمت های پیش بینی شده برای آن 20 خانه را با قیمت های اصلی همان 20 خانه مقایسه کنیم.

برای ارزیابی مدل از معیار MAE استفاده می کنیم. فرمول خطای میانگین مطلق یا MAE نیز به صورت زیر است.

میانگین خطای مطلق(Mean Absolute Error)
میانگین خطای مطلق(Mean Absolute Error)


from sklearn.metrics import mean_absolute_error splitted_MAE = mean_absolute_error(val_predictions, val_y) print(&quot\n MAE =&quot, splitted_MAE)

در خط اول چهارم، خطای MAE بر اساس val_y یعنی قیمت های اصلی آن 20 خانه، و val_predictions یعنی قیمت های پیش بینی شده برای آن 20 خانه است.

فایل های مرتبط:

تمام کدهای مربوط به این قسمت که در فایل ویدیویی استفاده شده از لینک زیر قابل دسترس هستند:

https://github.com/alifallahi/MachineLearning_Warmup/tree/master/Session4-model-validation-train-test-split

طبقه بندی مدل های داده ایطبقه بندی داده کاویداده validation چیستداده های train و validationالگوریتم های یادگیری ماشین در داده کاوی
آنچنان رفتم كه خود می خواستم
شاید از این پست‌ها خوشتان بیاید