ML 101
M10 · L01
الـ Machine Learning العملي

الـ feature engineering

الـ model مش أحسن من المعلومات اللي بتدّيهاله. والـ feature engineering (هندسة الميزات) بتحوّل البيانات الخام — الـ timestamps، والـ strings بتاعة الفئات، والنص — لتمثيلات بتخلّي الـ patterns صريحة وينفع تتعلّم.

01 / 13
ML 101
M10 · L01
مهمة ليه

التمثيل الصح

الـ timestamp "08:32 الاتنين" يقدر يتنبأ بأجرة التاكسي — بس لو استخرجت ساعة الذروة، ويوم الأسبوع، وساعة اليوم.

المعرفة بالمجال
أحسن الـ features بتيجي من فهم المشكلة، مش من البحث الآلي. اتكلم مع خبراء المجال الأول.
02 / 13
ML 101
M10 · L01
الـ numerical features

غيّر المقياس، حوّل، قسّم

  • الـ standardization (المعيارة) — متوسط صفر، تباين واحد. الأحسن للـ models اللي قايمة على الـ gradient
  • الـ normalization (Min-Max) — مقياس [0,1]. حساس للـ outliers
  • الـ log transform — بيعالج التوزيعات المنحرفة يمين (الدخل، الزيارات)
  • الـ binning — تحويل مستمر عشان يمسك علاقات مش رتيبة
  • الـ models اللي قايمة على الـ trees مش محتاجة scaling
03 / 13
ML 101
M10 · L01
معادلات الـ scaling

الـ standardization قصاد الـ normalization

طريقتين، لحالتين استخدام:

Z-score (Standardization)
x'=\frac{x-\mu}{\sigma}
Min-Max (Normalization)
x'=\frac{x-x_{\min}}{x_{\max}-x_{\min}}
04 / 13
ML 101
M10 · L01
الـ categorical features

encoding الفئات

  • One-Hot — عمود ثنائي لكل فئة. كويس للـ cardinality الواطية (<20)
  • الـ label encoding — رقم صحيح لكل فئة. استخدمه لما يبقى فيه ترتيب أو مع الـ trees
  • الـ target encoding — بدّل بمتوسط الـ target. قوي للـ cardinality العالية — بس خلّي بالك من الـ data leakage
  • الـ frequency encoding — بدّل بالتكرار. من غير خطر leakage
05 / 13
ML 101
M10 · L01
منطقة الخطر

الـ data leakage في الـ target encoding

الـ target encoding بيستخدم معلومات الـ labels — كل صف "عارف" الـ target بتاعه. ولو اتطبّق بسذاجة قبل التقسيم، بيحصل data leakage (تسرب البيانات): درجات تدريب منفوخة بتنهار على البيانات الحقيقية.

الحل
طبّقه دايمًا جوه folds الـ cross-validation: احسب الـ encodings من الـ folds التانية، وطبّقها على الـ fold الحالي. والـ TargetEncoder في Scikit-learn بيعمل ده أوتوماتيك.
06 / 13
ML 101
M10 · L01
الـ text features

TF-IDF والـ embeddings

TF-IDF بيدّي كل كلمة weight على حسب تكرارها في المستند × ندرتها في كل المستندات. الكلمات المنتشرة بتاخد درجات واطية؛ والكلمات النادرة المفيدة درجات عالية.

الـ word embeddings (Word2Vec, GloVe) بتحط الكلمات اللي معناها شبه بعض قريبة في فضاء الـ vectors. king − man + woman ≈ queen، يعني: «ملك» ناقص «راجل» زائد «ست» تقريبًا «ملكة».

07 / 13
ML 101
M10 · L01
الـ time features

الـ timestamps محتاجة تتفك

  • استخرج — الساعة، يوم الأسبوع، الشهر، السنة، أسبوع السنة
  • الـ cyclical encoding — sin/cos عشان نص الليل ≈ الساعة 11 بالليل بالأرقام
  • الـ lag features — القيمة عند t−1 وt−7 وt−30 (الـ autocorrelation)
  • الإحصاءات المتحركة — متوسط 7 أيام، انحراف معياري 30 يوم
  • الوقت من ساعة الأحداث — أيام من آخر شرا، ساعات من تسجيل الدخول
08 / 13
ML 101
M10 · L01
الـ cyclical encoding

اللفّ حوالين الدايرة

الساعة 23 والساعة 0 بينهم ساعة واحدة — بس بالأرقام بعيدين. اعمل encoding بـ sin وcos عشان الـ feature تلفّ حوالين دايرة دورتها P:

Cyclical Encoding
x_{\sin}=\sin\!\left(\tfrac{2\pi x}{P}\right),\;x_{\cos}=\cos\!\left(\tfrac{2\pi x}{P}\right)
09 / 13
ML 101
M10 · L01
الـ interaction features

featureين، إشارة واحدة

credit score قدره 700 معناه حاجات مختلفة لدخل 10,000 قصاد 200,000 دولار. والـ interaction (الدرجة × الدخل) بيمسك اللي مفيش feature فيهم تقدر عليه لوحدها.

نسبة
الدين / الدخل
ضرب
الحرارة × الرطوبة
مجموعة
متوسط صرف المستخدم
10 / 13
ML 101
M10 · L01
القيم الناقصة

النقص إشارة في حد ذاته

البيانات الناقصة نادرًا ما بتبقى عشوائية. مريض من غير نتيجة تحليل ممكن تعني إن التحليل ماتطلبش — ودي في حد ذاتها معلومة.

أحسن ممارسة
قبل الـ imputation: اعمل indicator feature ثنائية (1 = ناقصة، 0 = موجودة). وبعدين احسب القيمة. الـ model بيتعلّم القيمة المحسوبة ونمط النقص الاتنين.
11 / 13
ML 101
اختبار سريع

شوف إيه اللي ثبت

أربع أسئلة من الدرس ده. جاوب عشان تشوف السبب — الشرح بيظهر سواء جاوبت صح أو غلط. ونتيجتك مش بتتحفظ.

السؤال 1 من 0
النتيجة 0/0

12 / 13
ML 101
الخلاصة
ملخص

الخلاصة الأساسية

  • الـ feature engineering كتير بتأثّر أكتر من اختيار الـ model
  • اعمل scaling للـ numerical features في الـ models اللي قايمة على الـ gradient؛ الـ trees مش محتاجة ده
  • اعمل log transform للتوزيعات المنحرفة يمين (الدخل، الزيارات، التكرارات)
  • استخدم الـ target encoding للفئات اللي الـ cardinality بتاعتها عالية — جوه folds الـ cross-validation بس
  • اعمل encoding دوري للوقت بـ sin/cos؛ وابني lag features ومتحركة للتنبؤ
  • اعمل دايمًا الـ missingness indicator قبل الـ imputation
13 / 13