توقع استهلاك الطاقة في جلسات شحن السيارات الكهربائية (EV Charging)
الفكرة: Pipeline ML لتوقع كمية الطاقة المستهلكة في كل جلسة شحن (El_kWh) على بيانات حقيقية لشحن السيارات الكهربائية، مع تصحيح أخطاء موجودة في النسخة الأساسية (Baseline) وتحسين الدقة بشكل واضح.
النتيجة الرئيسية: رفع الـ R² من ~0.85 إلى ≥ 0.90 باستخدام Stacking Ensemble وFeature Engineering محسّن.
اللي اتصلّح مقارنة بالنسخة الأساسية:
الموديلات الشجرية كانت بتستخدم مميزات PCA، فرجعتها للمميزات الأصلية (PCA بقى للموديلات الخطية بس).
إضافة مميزات على مستوى المستخدم (Leave-One-Out user mean) بدون تسريب البيانات.
استبدال الترميز الخطي للوقت بترميز دائري (sin/cos) عشان يناير وديسمبر ميبقوش بعيد عن بعض.
استبدال الموديل الواحد بـ Stacking Ensemble.
اللي اتعمل:
EDA: التوزيعات والارتباطات والقيم المفقودة والأعمدة الفئوية.
التنضيف: Median Imputation، ومعالجة القيم المتطرفة بالـ Percentiles (1% و99%) بدون حذف صفوف.
Feature Engineering (20+ ميزة):
Log وPolynomial للمدة.
ترميز دائري للساعة والشهر واليوم.
تفاعلات المرونة (Flex).
مؤشرات سلوكية (مشاركة، ويك إند، ليل).
مميزات المستخدم (LOO mean/std وعدد الجلسات) — وهي أقوى ميزة منفردة.
مميزات الطقس والاقتصاد.
بدون Data Leakage: كل التحويلات (Scaling وPCA) بتتعلم من بيانات التدريب بس.
KMeans (k=3): رقم الـ Cluster كميزة إضافية.
مقارنة 7 موديلات بـ 5-fold CV، وضبط بـ RandomizedSearchCV.
Stacking Ensemble: Random Forest + HistGradientBoosting + Gradient Boosting، مع Ridge كـ Meta-learner.
التقييم: R² وMAE وRMSE وMAPE، مع تحليل البواقي وPermutation Importance ومنحنى التعلم.
المخرجات: 7 رسومات، منها خريطة القيم المفقودة، الارتباطات، التقييم النهائي، Learning Curve، وأهمية المميزات.
الأدوات: Python • Pandas • Scikit-learn • XGBoost • Matplotlib/Seaborn