برای ارزیابی اینکه یک مدل یادگیری تا چه اندازه خوب است، باید تاثیرهای پیش بینی های نادرست را درک کنیم. گمان کنید که به دنبال پیش بینی فروش برای هفته یا ماه یا سال آینده هستیم. اگر اندازه فروش رو بیش از آنچه که ممکن هست پیش بینی کنیم، پس فروشگاه نیاز به فراهم کردن کالاهایی زیادی دارد و چون فروشی بسیار را به نادرستی پیش بینی کرده ایم، پس هزینه اضافی برای فراهم کردن کالاهای اضافی پرداخت کرده ایم. در برابر این، اگر اندازه فروش را کمتر از آنچه که هست پیش بینی کنیم، پس فرصت فروش کالاها به خریداران را از دست می دهیم، پس در هر دو، زیان مالی خواهیم کرد.

در مفاهیم یادگیری ماشین مقدار درست پاسخ یا برآیند پیش بینی که دلخواه ما نیز هست را با y و مقدار پیش بینی را با ŷ نشان می دهند. ساده ترین روش برای برآورد اندازه خطا، بدست آوردن اندازه اختلاف میان مقدار درست (و وافعی) با مقدار پیش بینی شده است. بنابراین به دنبال برآورد y – ŷ هستیم. بنابراین اگر در مجموعه داده آزمایش M تا نمونه داشته باشیم، پس باید M تا خطا را بدست آوریم که به زبان ساده به ازای هر نمونه i-ام خطا برابر با معادله زیر است.

میانگین مربع خطاها

در نوشته  درباره RSS (یا Residual Sum of Squares) گفتیم که آن برابر است جمع توان دو هر یک از خطاها که در رگرسیون برای برآورد اندازه خطا به کار گرفته می شود. شیوه Mean Squared Error (یا MSE)ٔ به زبان ساده برابر است با بدست آوردن مقدار RSS و سپس تقسیم آن بر شمار همه نمونه ها در مجموعه داده است. بنابراین اگر مقدار بدست آمده برابر RSS و شمار داده ها نیز n تا باشد، پس معادله زیر به زبان ساده MSE را نشان می دهد.

MSE برابر است با توان ۲ هر خطا و سپس جمع همه این توان ۲ ها و در پایان تقسیم کردن بر تعداد داده ها که در شکل زیر نشان داده شده است. از دومین شکل زیر (نمودار) آشکار است که سه نقطه قرمز روی نمودار داریم که هر یک مقداری پیش بینی شده یا همان ŷ را نشان می دهند. آن خط آبی، همان خط رگرسیون است که می خواهیم به کمک مدل آن را به دست آوریم. فاصله میان هر نقطه قرمز تا خط آبی، اندازه خطا را نشان می دهد، بنابراین هر چه نقطه های پیش بینی شده به خط نزدیکتر باشند، پس خطا نیز کمتر است.

در نمودار بالا خطا برای نقطه شماره ۲ برابر صفر است زیرا نقطه روی خط افتاده است. اینکه خطا برای همه نقطه دقیقا صفر باشد یک آرمان و نشدنی است، بنابراین همیشه خطا هست و به دنبال کاهش خطاها هستیم. برای نقطه شماره ۳ که بالای خط افتاده است، خطا منفی (Negative Error) است، زیرا مقدار پیش بینی شده کمتر از اندازه واقعی y است. در برابر این، برای نقطه ۱ که زیر خط افتاده است، خطا مثبت (Positive Error) است، زیرا اندازه پیش بینی شده بیشتر از اندازه واقعی y است.

برآورد MSE با Scikit-Learn

در کتابخانه Scikit-Learn و درون ماژول sklearn.metrics تابعی به نام ()mean_square_error هست که می توانیم برای بدست آوردن MSE برای یک مدل به کار ببریم. قاعدتا نیاز داریم تا نخست مدل را بسازیم و سپس با مقدار های پیش بینی شده ŷ و کم کردن آنها از مقدارهای واقعی y، مقدار هر خطای هر نمونه را بدست آوریم و سپس آنها را به توان دو رسانده و سپس با یکدیگر جمع کرده و در پایان بر شمار داده های درون مجموعه داده تقسیم کنیم.

در کد زیر تابع ()mean_square_error به برنامه پیوست شده است و سپس دو آرایه به نام های y_true و y_pred ساخته شده اند که هر یک دارای ۴ شماره هستند، بنابراین در اینجا ۴ نمونه داریم، پس مجموع توان دو های خطاها بر شماره ۴ تقسیم می شود. y_true همان پاسخ های درستی است که ما انتظار داریم پیش بینی شوند و y_pred مقدارهای پیش بینی شده است. پارامترهای یکم و دوم ورودی به تابع به ترتیب y_true و y_pred هستند.

در واقع به کمک متد ()mean_square_error به دنبال برآورد کردن معادله زیر هستیم که در اینجا تنها ۴ نمونه هست. توجه کنید در کد بالا ما گمان کرده ایم که مدل ساخته شده و سپس به ازای چهار نمونه تازه، مدل ۴ پیش بینی بدست آورده است که در متغیر y_pred نگهداری می شوند.

در y_pred نخستین عنصر شماره ۲.۵ است که از سه کوجکتر است، پس خطای منفی رخ داده است. عنصر دوم ۰.۵- دارای خطای منفی است زیرا از شماره 0 کوچکتر است ولی در چهار مین عنصر شماره ۸ از ۷ بزرگتر است، پس خطا مثبت است. در سومین عنصر نیز خطایی نیست زیرا مقدار پیش بینی شده برابر با مقدار واقعی درون y_true است.