هوش مصنوعی

NDVI و تخمین عملکرد گندم: مدل ML برای شرکت بیمه کشاورزی

شرکت بیمه کشاورزی با یک معضل اساسی روبرو بود: وقتی کشاورز ادعای خسارت می‌کند، کارشناسان باید به مزرعه بروند، برداشت نمونه انجام دهند و ارزیابی کنند — فرایندی که هفته‌ها طول می‌کشد، گران است و در مقیاس صدهاهزار هکتار مزرعه بیمه‌شده عملاً غیرممکن. سوال این بود: آیا می‌توان عملکرد محصول را قبل از برداشت، فقط با داده‌های ماهواره‌ای تخمین زد؟

پاسخ بله است — اما با شرایط و دقتی که باید دقیقاً مدیریت شود. این پروژه در همکاری با صندوق بیمه محصولات کشاورزی انجام شد و هدف آن ایجاد مدلی بود که بتواند عملکرد گندم دیم را در ۶ استان اصلی کشور با دقت کافی برای تصمیمات بیمه‌ای پیش‌بینی کند.

Pipeline داده ماهواره‌ای

پایه داده این مدل، سری زمانی NDVI مزارع در طول فصل رشد است. گندم دیم معمولاً از اواخر آبان تا اواخر خرداد رشد می‌کند و این بازه ۸ ماهه از نظر رشد گیاهی چند فاز مشخص دارد: جوانه‌زنی، پنجه‌دهی، ساقه‌رفتن، گل‌دهی و پر شدن دانه.

برای دریافت داده از Sentinel Hub Process API استفاده کردیم. این API امکان دریافت مقادیر آماری (میانگین، صدک، انحراف معیار) NDVI هر قطعه زمین را بدون دانلود تصویر کامل فراهم می‌کند. سپس کامپوزیت ۱۰ روزه (بهترین پیکسل در هر ۱۰ روز) برای کاهش اثر پوشش ابر ساختیم.

import numpy as np from sklearn.ensemble import RandomForestRegressor from sklearn.preprocessing import StandardScaler # استخراج ویژگی از سری زمانی NDVI فصل رشد def extract_features(ndvi_series): """ ndvi_series: آرایه numpy با ۲۴ مقدار (کامپوزیت ۱۰ روزه فصل ۸ ماهه) خروجی: دیکشنری ویژگی برای مدل """ return { 'ndvi_max': np.max(ndvi_series), 'ndvi_mean': np.mean(ndvi_series[6:9]), # اوج فصل (خرداد) 'ndvi_early': np.mean(ndvi_series[0:3]), # جوانه‌زنی 'ndvi_slope': np.polyfit( range(len(ndvi_series)), ndvi_series, 1)[0], 'green_duration': np.sum(ndvi_series > 0.4), # روزهای سبز 'peak_timing': np.argmax(ndvi_series), # زمان اوج 'ndvi_integral': np.trapz(ndvi_series), # انتگرال NDVI 'late_drop': ndvi_series[-1] - ndvi_series[-3] # افت پایان فصل } # آموزش مدل Random Forest model = RandomForestRegressor( n_estimators=200, max_depth=8, min_samples_leaf=5, random_state=42 ) model.fit(X_train, y_train)

مهم‌ترین ویژگی انتخاب‌شده ndvi_integral یا انتگرال سطح زیر منحنی NDVI در طول فصل بود که با مجموع بیوماس تولیدشده رابطه قوی دارد. ویژگی late_drop (سرعت زرد شدن در انتهای فصل) هم برای تمییز سال‌های پرباران از کم‌باران مفید بود.

مدل‌سازی و مهندسی ویژگی

مقایسه چند الگوریتم را انجام دادیم: رگرسیون خطی به‌عنوان baseline، Random Forest، Gradient Boosting (XGBoost) و شبکه عصبی LSTM برای سری زمانی. در نهایت Random Forest با RMSE کمتر و قابلیت تفسیر بیشتر انتخاب شد. LSTM نتایج مشابهی داشت اما برای تیم بیمه که نیاز به توضیح مدل داشت، random forest با feature importance قابل فهم‌تر بود.

داده آموزشی از ۳,۸۰۰ قطعه زمین در ۶ استان طی ۵ فصل زراعی (۱۳۹۷–۱۴۰۲) جمع‌آوری شد. داده عملکرد واقعی از آمار برداشت صندوق بیمه استخراج شد. تقسیم‌بندی آموزش/آزمایش به‌صورت سال‌محور انجام شد (فصل ۱۴۰۱–۱۴۰۲ برای آزمایش) تا data leakage زمانی رخ ندهد.

عملکرد مدل به تفکیک استان

استان RMSE (کیلوگرم/هکتار) MAE (کیلوگرم/هکتار) تعداد نمونه آزمایش
کرمانشاه ۲۸۴ ۲۱۲ ۰.۸۷ ۱۸۶
فارس ۳۱۲ ۲۳۸ ۰.۸۴ ۲۴۳
آذربایجان غربی ۳۴۵ ۲۶۱ ۰.۷۹ ۱۵۷
خراسان رضوی ۴۱۸ ۳۱۵ ۰.۷۲ ۲۱۸
لرستان ۲۹۶ ۲۲۴ ۰.۸۵ ۱۳۴
ایلام ۳۲۸ ۲۴۷ ۰.۸۱ ۱۱۲

دقت پایین‌تر در خراسان رضوی به تنوع بیشتر ارقام کشت و پراکندگی جغرافیایی وسیع‌تر نسبت داده می‌شود. برای این استان، جداسازی مناطق مختلف بر اساس اقلیم و ارتفاع نتایج بهتری می‌دهد.

اعتبارسنجی در مزرعه

در فصل ۱۴۰۲–۱۴۰۳، پیش‌بینی مدل سه هفته قبل از برداشت برای ۵۰۰ قطعه زمین در استان‌های کرمانشاه و فارس محاسبه و با کارشناسان بیمه به اشتراک گذاشته شد. کارشناسان بدون دیدن پیش‌بینی مدل، ارزیابی میدانی مستقل انجام دادند. پس از برداشت، نتایج واقعی جمع‌آوری شد.

در ۸۳٪ موارد، پیش‌بینی مدل در محدوده ۱۵٪ از عملکرد واقعی بود. از نظر کارشناسان بیمه، این دقت برای تصمیم اولیه آیا پرونده خسارت نیاز به بازرسی میدانی دارد یا خیر، کافی است. این به‌تنهایی ۴۰٪ از بازدیدهای میدانی غیرضروری را حذف می‌کند.

استقرار در تولید

سیستم به‌صورت یک API با FastAPI پیاده‌سازی شد. کارشناسان بیمه با وارد کردن کد قطعه زمین (از سامانه کاداستر) در رابط وب، پیش‌بینی عملکرد را به همراه فاصله اطمینان ۸۰٪ و نمودار سری زمانی NDVI دریافت می‌کنند. مدل هر فصل با داده‌های جدید برداشت، retrain می‌شود و به این ترتیب با گذشت زمان دقت‌تر می‌شود.

نکته مهم: سیستم به‌عنوان ابزار کمکی تصمیم معرفی شد، نه جایگزین کارشناس. این رویکرد پذیرش سازمانی را بسیار آسان‌تر کرد.

نکات کلیدی
  • انتگرال NDVI در طول فصل رشد (نه فقط مقدار حداکثر) قوی‌ترین پیش‌بینی‌کننده عملکرد نهایی است.
  • تقسیم آموزش/آزمایش باید سال‌محور باشد تا data leakage زمانی رخ ندهد — این اشتباه رایجی است که دقت مدل را مصنوعی بالا می‌برد.
  • Random Forest با feature importance قابل تفسیر، برای محیط‌های سازمانی که نیاز به توضیح مدل دارند، بهتر از LSTM عمل می‌کند.
  • معرفی مدل به‌عنوان ابزار کمکی به‌جای جایگزین انسانی، کلید پذیرش سازمانی است.