اگر میانگین، انحراف معیار یا دستهها با استفاده از کل داده یا مجموعه آزمون محاسبه شوند، بخشی از اطلاعات آزمون وارد فرایند آموزش میشود و نتیجه ارزیابی غیرواقعی و خوشبینانه خواهد شد.
برای سنجش عملکرد مدل، از معیارهای MAE، MSE، RMSE و استفاده کردیم. معیار MAE میانگین قدر مطلق خطاها را نشان میدهد و تفسیر مستقیمی در واحد قیمت دارد. MSE خطاها را به توان دو میرساند و به خطاهای بزرگ حساستر است. RMSE با گرفتن جذر MSE دوباره به واحد اصلی قیمت بازمیگردد. ضریب تعیین یا نیز نشان میدهد مدل چه مقدار از تغییرات متغیر هدف را توضیح میدهد. همچنین تأکید شد که نباید ارزیابی مدل را فقط به یک عدد محدود کرد و بهتر است پیشبینیهای واقعی، خطاها و نمونههایی که مدل در آنها ضعیفتر عمل کرده است نیز بررسی شوند.
در ادامه، جدولی شامل قیمت واقعی، قیمت پیشبینیشده، Residual و Absolute Error ایجاد کردیم. Residual تفاوت میان مقدار واقعی و مقدار پیشبینیشده است. اگر Residual مثبت باشد، مدل قیمت را کمتر از مقدار واقعی برآورد کرده و اگر منفی باشد، مدل بیشبرآورد انجام داده است. سپس با مرتبسازی جدول بر اساس خطای مطلق، نمونههایی را که مدل در آنها بیشترین اشتباه را داشت شناسایی کردیم. این روش تحلیل خطا یکی از مراحل مهم توسعه مدلهای یادگیری ماشین است، زیرا به ما نشان میدهد مدل دقیقاً در چه شرایطی دچار مشکل میشود.
در پایان، ضرایب مدل را استخراج و تفسیر کردیم. بررسی کردیم که چگونه میتوان تأثیر نسبی کارکرد، سن، حجم موتور، برند و گیربکس را بر قیمت پیشبینیشده مشاهده کرد. چون ویژگیهای عددی استاندارد شده بودند، ضرایب اولیه در واحد انحراف معیار تفسیر میشدند. سپس با استفاده از مقادیر scale_ ضرایب را به واحدهای اصلی بازگرداندیم تا بتوانیم آنها را با رابطهای که در زمان تولید داده مصنوعی تعریف کرده بودیم مقایسه کنیم.
همچنین یک خودروی جدید در قالب DataFrame ساخته شد و کل Pipeline با یک دستور، پیشپردازش و پیشبینی قیمت آن را انجام داد. در نهایت کل Pipeline، شامل StandardScaler، OneHotEncoder، ColumnTransformer و LinearRegression، با استفاده از joblib ذخیره شد. ذخیره کل Pipeline اهمیت زیادی دارد، زیرا برای استفاده از مدل در آینده تنها ضرایب رگرسیون کافی نیستند؛ باید دقیقاً بدانیم دادهها در زمان آموزش چگونه استاندارد و کدگذاری شدهاند.
بهطور کلی، این جلسه نشان داد که ساخت یک مدل یادگیری ماشین تنها به انتخاب الگوریتم محدود نمیشود. بخش بزرگی از کار شامل آمادهسازی داده، شناخت ساختار آن، تبدیل ویژگیها، جلوگیری از نشت اطلاعات، مدیریت صحیح مراحل آموزش و ارزیابی دقیق نتایج است. رگرسیون خطی در این درس بهانهای بود تا علاوه بر یادگیری یک الگوریتم، با معماری کلی یک پروژه استاندارد یادگیری ماشین در پایتون آشنا شویم.
کپشن پیشنهادی
در این جلسه، مبحث رگرسیون در یادگیری نظارتشده را از حالت نظری خارج کردیم و در قالب یک پروژه کامل پایتون در Jupyter Notebook پیادهسازی کردیم.
در این پروژه، یک مجموعه داده مصنوعی درباره خودروها ساختیم و با استفاده از ویژگیهایی مانند کارکرد، سن، حجم موتور، برند و نوع گیربکس، قیمت خودرو را پیشبینی کردیم. هدف جلسه فقط اجرای LinearRegression نبود؛ بلکه کل مسیر یک پروژه یادگیری ماشین، از تولید و بررسی داده تا آموزش، پیشبینی، ارزیابی و تحلیل خطاها، بهصورت خطبهخط توضیح داده شد.
در طول آموزش با مفاهیم و ابزارهای مهمی مانند List، Dictionary، NumPy Array، Vectorization، Pandas DataFrame، Series، Feature، Target، Train/Test Split، StandardScaler، OneHotEncoder، ColumnTransformer و Pipeline آشنا شدیم. همچنین بهصورت عمیق بررسی کردیم که هنگام اجرای متد fit() چه اتفاقاتی در پشت صحنه رخ میدهد، Transformerها چه اطلاعاتی از داده یاد میگیرند و تفاوت میان fit، transform، fit_transform و predict چیست.
برای درک بهتر رگرسیون خطی، مسئله Least Squares را با NumPy نیز حل کردیم و ضرایب بهدستآمده را با ضرایب Scikit-learn مقایسه کردیم. سپس عملکرد مدل را با معیارهای MAE، MSE، RMSE و ارزیابی کردیم، Residualها را به دست آوردیم و نمونههایی را که مدل در آنها بیشترین خطا را داشت بررسی کردیم.
در پایان نیز قیمت یک خودروی جدید را پیشبینی و کل Pipeline آموزشدیده را برای استفادههای بعدی ذخیره کردیم.
این جلسه در واقع یک مقدمه عملی و جامع برای ورود به پروژههای واقعی یادگیری ماشین است و نشان میدهد که یک مدل استاندارد تنها از الگوریتم تشکیل نشده، بلکه پیشپردازش دادهها، جلوگیری از Data Leakage، ارزیابی صحیح و تفسیر نتایج نیز بخشهای اساسی آن هستند.
188 ·