خب بذار خیلی خودمونی بهت بگم ماجرا چیه! تو کشور کنیا، نوسانات قیمت مواد غذایی حسابی مردم و دولت رو سردرگم کرده. یعنی قیمتها یه روز بالا میکشه، یه روز میاد پایین و کل اقتصاد و برنامهریزی رو بهم میریزه. حالا یه تیم باحال اومده سراغ هوش مصنوعی تا بتونه این پیشبینی قیمتها رو آسونتر و دقیقتر کنه.
تو این تحقیق، هدف این بوده که با کمک مدلهای ماشین لرنینگ (Machine Learning یعنی همون یادگیری ماشینی که کامپیوترها الگوها رو تشخیص میدن و بر اساس اطلاعات قبلی حدسای جدید میزنن)، قیمت مواد غذایی رو پیشبینی کنن. حالا مدلهایی که استفاده کردن چی بوده؟ XGBoost و Gradient Boosting! اینا جفتشون مدلهای پیشرفته یادگیری ماشین هستن که مخصوصا موقع پیشبینی کارایی خیلی خوبی دارن.
برای اینکه کار دقیق باشه، دادههای قیمت مواد غذایی رو که از سایت برنامه جهانی غذا (World Food Programme) جمع کردن، از سال ۲۰۰۶ تا سپتامبر ۲۰۲۴ رو برداشتن. تازه نرخ تبدیل ارزهای خارجی به دلار آمریکا رو هم از بانک مرکزی کنیا گرفتن و اطلاعات تورم رو هم کنار اینا قرار دادن. یعنی هر چی داده مهم بوده رو ریختن تو مدلشون!
بعدش نشستن این دادهها رو تمیز کردن و فرمتبندی کردن. حالا مدلهای مختلفی رو امتحان کردن: XGBoost، گریدینت بوستینگ (Gradient Boosting)، LightGBM (یه مدل سبک و سریع تو دنیای یادگیری ماشین)، درخت تصمیمگیری (Decision Tree یعنی الگویی که مثل یه درخت شاخه شاخه میره جلو و تصمیم میگیره)، جنگل تصادفی (Random Forest که کلی درخت تصمیمگیری کنار هم کار میکنن)، و رگرسیون خطی (Linear Regression یعنی پیشبینی خطی ساده).
حالا شاهکار آخرشون: ترکیب مدلها! اومدن XGBoost و Gradient Boosting رو با هم قاطی کردن (به این حرکت میگن مدل هیبرید یا Hybrid Model). بعدش یه مدل رگرسیون خطی هم روش گذاشتن تا نتایج اون دوتا رو با هم ترکیب کنه و خروجیش رو بده. اینجوری تونستن پیشبینی خیلی دقیقتری داشته باشن.
برای اینکه مدلشون رو از هر نظر بهینه کنن، از یه تکنیک به اسم “جستوجوی تصادفی هایپرپارامتر” (Hyperparameter Random Search یعنی مدل رو با پارامترهای مختلف امتحان میکنن تا بهترین نتیجه رو پیدا کنن) استفاده کردن. نتیجه فوقالعاده شد: میانگین خطای مطلق (Mean Absolute Error) فقط ۰.۱۰۵۰، میانگین خطای مربعی (Mean Squared Error) حدود ۰.۰۲۶۱، ریشه دوم میانگین خطای مربعی (Root Mean Squared Error) هم ۰.۱۶۱۵! و جالبتر اینکه ضریب تعیین (R-squared که نشون میده پیشبینی مدل چقدر دقیق و رو حسابه) هم شد ۰.۹۹۴۰، که یعنی تقریبا مدل ترکونده و از همه مدلای تکی بهتر عمل کرده.
یه بررسی هم برای اینکه مدل دچار “بیشبرازش” نشده باشه (Overfitting یعنی وقتی مدل فقط دادههای قبلی رو حفظ کنه و برای دادههای جدید گیج بشه) انجام دادن، با استفاده از اعتبارسنجی متقاطع ۵-تایی (۵-Fold Cross Validation یعنی دادهها رو پنج قسمت میکنن و هر بار یه قسمتش رو برای تست جدا میذارن) و آزمون دیبولد-ماریانو (Diebold-Mariano Test که مقایسه میکنه پیشبینی مدلهای مختلف چقدر با هم فرق دارن).
برای فهمیدن اینکه چه دادههایی بیشترین تاثیر رو روی قیمت مواد غذایی دارن، از یه روشی به اسم SHAP استفاده کردن (SHapley Additive exPlanations یعنی مدلی که نشون میده هر ویژگی از دادهها چقدر توی پیشبینی تاثیر گذاشته). نتیجه جالب بود: اینکه پارامترهایی مثل مقدار واحد کالا، نوع قیمت، نوع کالای اساسی و ارز بیشترین تاثیر رو دارن. لوکشین یا منطقه جغرافیایی (مثل شهرستانها)، تاثیر کمتری داشتن.
در نهایت هم کل مدل و اطلاعات مهمشو ذخیره کردن تو یه فایل “پیکل” (Pickle File یعنی فرمت ذخیرهسازی مدلها تو پایتون)، که راحت بشه توی یه اپلیکیشن وب برای پیشبینی قیمت غذا تو کنیا استفادهاش کرد.
یعنی خلاصه اگر دولت و کشاورزا و بقیه کسایی که تو این زمینه هستن از این مدل استفاده کنن، خیلی راحتتر میتونن برای آینده قیمت غذا برنامهریزی کنن و حتی جلوی ناامنی غذایی رو تو کنیا بگیرن. خلاصه کار خفنیه که با علم داده و یادگیری ماشین دنیا رو جای بهتری میکنه!
منبع: +