الان شما یه مدل ساختید ولی از کجا میدونید مدلتون خوبه؟
ما میخوایم هر مدلی رو که میسازیم رو ارزیابی کنیم تو اکثر برنامه ها (نه همشون)معیار ارزیابی رو دقت پیش بینی (accuracy )در نظر میگیریم. به عبارتی داریم چک میکنیم پیش بینی ها ی انجام شده به چیزی نزدیک هست یا نه ؟
خیلی ها هنگام بررسی دقت پیش بینی شون اشتباه بزرگی میکنن اونا با داده های آموزشیشون پیش بینی میکنن و پیش بینی رو با مقادیر هدف در داده های آموزشی مقایسه میکنن توی این آموزش مشکل این رویکرد و نحوه حلش رو خواهیم دید، ولی قبلش بیاید به این فکر کنیم که چطور باید اینکارو انجام بدیم؟
اول باید کیفیت مدل به روش قابل فهمی خلاصه کنید .اگر ارزش پیش بینی شده برای قیمت 10000 خانه را بررسی کنید احتمالا ترکیبی از پیش بینی های خوب و بد رو مشاهده میکنید. فقط با نگا کردن بین پیش بینی ها و داده ها نمیشه تصمیم درستی گرفت و باید این اطلاعات رو در یک پارمتر متریک خلاصه کنیم.
معیار های زیادی برای خلاصه کردن کیفیت مدل در یک پارامتر وجود دارد ولی اینجا فقط به میانگین خطای مطلق (Mean Absolute Error) که به اختصار میشه MAE اشاره میکنیم.بیاید با کلمه آخر این معیار یعنی خطا یا Error شروع کنیم.
Error = actual - predاiction
این یعنی اگه خونه 150000 دلار ارزش واقعیش باشه و مدل ما مقدار 100000 دلار و براش پیش بینی کرده باشه یعنی ما 50000 دلار خطا داریم .
با متریک MAE قدر مطلق خطا را میگیریم ،یعنی هر خطا را به عدد مثبت تبدیل میکنیم و از کل این مقادیر میانگین میگیریم و این معیاری برای سنجش کیفیت مدل ماست .به طور متوسط پیش بینی های ما حدود X کاهش یافته است.
برای محاسبه MAE اول نیاز به یک مدل داریم که در زیر اون رو میسازیم:
وقتی مدل را ایجاد کردیم به محاسبه MAE میپردازیم.
چیزی که ما الان محاسبه کردیم رو میشه in-sample" score " نامید (نمیدونم ترجمه دقیقش چیه! نمره در نمونه؟!) ما از یک نمونه واحد هم برای ساختن مدل و هم برای ارزیابی اون استفاده کردیم و این دلیل بد بودنی بود که قرار بود بهش اشاره کنیم.
تصور کنید در یک مارکت واقعی خونه رنگ در اصلا تاثیری روی قیمت خونه نداشته باشه . ولی توی داده ها شما مدلی رو ساختید که در اون همه خونه ها با در سبز خیلی گرونترن. کار مدل اینه که یک الگو رو تشخیص بده تا با اون بتونه قیمت خونه ها رو تخمین بزنه و این مدل ما همیشه برای خونه های در سبز قیمت بالایی رو پیش بینی میکنه .از اونجایی که این مدل با داده های تمرینی (training data) پیش رفته روی این داده ها دقت بالایی هم نشون میده (یعنی دقتش رو داده های تمرینی بالاست).
اما این مدل در مواجهه با داده های جدید دقت بسیار پایینی داره .از اونجایی که ارزش عملی مدل ها از پیش بینی داده های جدید حاصل میشن ما باید عملکرد مدلمون رو رو ی داده هایی که برای train یا آموزش استفاده نشده اندازه گیری کنیم. ساده ترین راه برای انجام اینکار اینه برخی داده ها رو از فرایند های مدلسازی حذف کنیم و اون ها رو برای سنجش میزان دقت مدل بر روی داده هایی که قبلا ندیده استفاده کنیم. این داده ها داده های اعتبار سنجی (validation data) نامیده میشن.
کتابخونه scikit-kearn فانکشن train_test_split رو برای تقسیم داده ها به دو قسمت در خودش داره .ما از قسمتی از داده ها برای فیت کردن مدل استفاده میکنیم و از قسمت دیگه برای validation یا اعتبار سنجی داده ها برای محاسبه mean_abslute_error .
میانگین خطای مطلق توی داده های in-sample حدود 500 دلار بود و توی داده های out-of-sample چیزی حدود 250000 دلار شد.
این تفاوت یک مدل که تقریبا درست پیش بینی میکنه و یک مدل بی کاربرده. با توجه به رفرنس میتونیم ببینیم که میانگین قیمت خونه ها 1.1 میلیون دلاره و خطایی که رو داده های تست داشتیم حدود یک چهارم این مبلغ که اصلا قابل چشم پوشی نیس.
روش های مختلفی برا بهبود این مدل وجود داره مثل کسب تجربه توی پیدا کردن ویژگی های بهتر برای برازش مدل(fit) و یا استفاده از مدل های دیگه .
میتونید آموزش اصلی رو از اینجا ببینید.