الرئيسية / ML 101 / الوحدة 10 / الدرس 1

هندسة الميزات

تحويل البيانات الخام إلى إشارات يمكن للنموذج تعلّمها — الحِرفة التي تُفرّق بين تعلّم الآلة الجيد والاستثنائي.

~15 دقيقة قراءة الوحدة 10 · الدرس 1 متوسط

لماذا تهمّ الميزات؟

النموذج ليس أفضل من المعلومات التي تقدّمها إليه. البيانات الخام — الطوابع الزمنية، وسلاسل الفئات، وقيم البكسل — كثيرًا ما تحتوي على الإشارة الصحيحة لكن في الشكل الخاطئ. هندسة الميزات هي عملية تحويل البيانات الخام إلى تمثيلات تجعل الأنماط صريحةً وقابلةً للتعلم.

تأمّل مثال التنبؤ بأجرة سيارة الأجرة. قد تتضمّن البيانات الخام طابعًا زمنيًا مثل "2024-01-15 08:32:00". لا يستطيع النموذج بسهولة أن يتعلم أن رحلات ساعة الذروة يوم الاثنين أغلى ثمنًا — ما لم تستخرج: ساعة اليوم، ويوم الأسبوع، وعلامة ثنائية هل-هي-ذروة. هذه الميزات المشتقة تُكشف الإشارة. في كثير من المشاريع، تُعدّ هندسة الميزات النشاط الأعلى مردودًا من حيث تحسين الأداء.

المعرفة بالمجال هي السلاح السري

أفضل الميزات تأتي من فهم المشكلة، لا من البحث الآلي. يعرف عالم الأرصاد الجوية أن نقطة الندى تتفاعل مع درجة الحرارة للتنبؤ باحتمال المطر. يعرف المصرفي أن نسبة الدين إلى الدخل أكثر قدرةً على التنبؤ من أيٍّ من القيمتين منفردةً. تحدّث إلى خبراء المجال قبل أن تلمس البيانات.

الميزات العددية

الميزات العددية هي النوع الأكثر شيوعًا، لكنها كثيرًا ما تحتاج إلى تحويل قبل أن يتمكن النموذج من استخدامها بفعالية. ثلاثة تحويلات تغطي غالبية حالات العالم الحقيقي:

التطبيع والمعيارة

كثير من النماذج — الانحدار الخطي، وآلات المتجهات الداعمة، والشبكات العصبية، وK-NN — حساسةٌ لمقياس الميزات. ميزةٌ تتراوح بين 0 و1,000,000 ستُهيمن على ميزات تتراوح بين 0 و1 في التحسين القائم على التدرج. نهجان قياسيان:

التطبيع (Min-Max)
x' = \frac{x - x_{\min}}{x_{\max} - x_{\min}}
يُقيّس الميزات إلى [0, 1]. حساس للقيم الشاذة — قيمة متطرفة واحدة يمكن أن تضغط بقية التوزيع.
المعيارة (Z-score)
x' = \frac{x - \mu}{\sigma}
تُمركز الميزة عند الصفر بتباين وحدوي. أكثر متانةً مع القيم الشاذة. مُفضَّلة لمعظم الطرق القائمة على التدرج.

قاعدة عامة: استخدم المعيارة في معظم الحالات. استخدم التطبيع حين تحتاج مخرجات محدودة (مثل قيم البكسل التي تُغذَّى للشبكات التلافيفية). النماذج القائمة على الأشجار (الغابات العشوائية، التعزيز التدريجي) لا تحتاج أيًّا منهما.

التحويل اللوغاريتمي

كثير من الكميات في العالم الحقيقي لها توزيعات منحرفة يمينًا — الدخل، وعدد سكان المدن، وحركة مرور المواقع، وقيم المعاملات. معظم القيم صغيرة لكن القليل منها ضخم جدًا. التحويل اللوغاريتمي يضغط الذيل العلوي ويجعل التوزيع أكثر تماثلًا، وهو ما تتعامل معه النماذج بكفاءة أعلى بكثير.

استخدم log(x + 1) للتعامل مع القيم الصفرية بأمان. إن كانت الميزة تحتوي على قيم سالبة، جرّب تحويل Yeo-Johnson أو Box-Cox.

التقسيم إلى حاويات (Binning)

أحيانًا تكون للميزة المستمرة علاقةٌ غير رتيبة بالهدف — مثلًا قد يرتبط العمر بالدخل بطريقة منحنية متعددة الأنماط. يُحوّل التقسيم إلى حاويات المتغيرَ المستمرَ إلى فئات منفصلة (كالعمر → "أقل من 25"، "25–40"، "40–60"، "أكثر من 60")، مما يُتيح للنموذج تعلّم وزن مختلف لكل حاوية.

الميزات الفئوية

تتطلب النماذج مدخلاتٍ رقمية. يجب ترميز الميزات الفئوية (الدولة، فئة المنتج، اللون). يمكن أن يكون لاستراتيجية الترميز تأثيرٌ كبير على أداء النموذج:

الترميزمتى تستخدمهتحذير
One-Hot (ترميز أحادي التشفير) الفئات ذات الأساسية المنخفضة (أقل من ~20 قيمة فريدة). يُنشئ عمودًا ثنائيًا لكل فئة. يُفجّر الأبعاد للميزات ذات الأساسية العالية. تمثيلات متفرقة.
ترميز التسمية / الترتيبي الفئات ذات الترتيب الطبيعي (مثل صغير/متوسط/كبير → 1/2/3). يناسب أيضًا النماذج القائمة على الأشجار. يُوحي بترتيب زائف للفئات الاسمية في النماذج القائمة على المسافة.
ترميز الهدف الفئات ذات الأساسية العالية (مثل مدينة بـ 10,000 قيمة). استبدل كل فئة بمتوسط الهدف لتلك الفئة. يمكن أن يُسبب تسرّبًا شديدًا للبيانات إذا طُبِّق قبل تقسيم التدريب/التحقق. استخدم دائمًا ترميز الهدف بالطيات المتقاطعة.
ترميز التكرار استبدل كل فئة بتكرارها أو تردّدها في مجموعة التدريب. يلتقط الندرة دون خطر تسرب البيانات. الفئات المختلفة ذات التكرار المتساوي تحصل على الترميز ذاته.
تحذير تسرب بيانات ترميز الهدف

يحسب ترميز الهدف متوسط الهدف لكل فئة — مما يعني استخدام معلومات التسميات. إذا طُبِّق بشكل ساذج على مجموعة التدريب الكاملة قبل التقسيم، فإن الميزة المرمَّزة لكل صف "تعرف" هدفها الخاص. طبّق دائمًا داخل طيات التحقق المتقاطع: احسب الترميزات من الطيات الأخرى، ثم طبّقها على الطية الحالية. معالج TargetEncoder في Scikit-learn يتعامل مع هذا بشكل صحيح.

ميزات النص

حين تتضمن بياناتك نصًا خامًا — مراجعات، أوصاف، تغريدات — تحتاج إلى طريقة لتحويل الكلمات إلى أرقام تلتقط المعنى.

TF-IDF

تردد المصطلح - عكس تردد الوثيقة (TF-IDF) هو الأداة الأساسية لتعلم الآلة النصي الكلاسيكي. يُوزَّن كل كلمة بمدى تكرارها في وثيقة (TF) مقسومًا على عدد الوثائق التي تحتويها (IDF). الكلمات الشائعة مثل "the" تحصل على أوزان منخفضة؛ الكلمات النادرة لكن المفيدة تحصل على أوزان عالية.

TF-IDF
\text{TF-IDF}(t,d) = \text{TF}(t,d) \times \log\frac{N}{\text{df}(t)}
TF(t,d) هو تكرار المصطلح t في الوثيقة d. IDF(t) = log(N / df(t)) حيث N عدد الوثائق و df(t) عدد الوثائق التي تحتوي على t.

التضمينات الكلمية (Word Embeddings)

يعامل TF-IDF الكلمات على أنها مستقلة. التضمينات الكلمية (Word2Vec، GloVe، FastText) تُعيّن كل كلمة إلى متجه كثيف — عادةً 50 إلى 300 بُعد — حيث الكلمات المتشابهة دلاليًا قريبةٌ في فضاء المتجه. المثال الكلاسيكي: ملك − رجل + امرأة ≈ ملكة. يمكن الحصول على تضمينات على مستوى الوثيقة بحساب متوسط متجهات الكلمات أو باستخدام مشفّر الجمل المدرَّب مسبقًا (مثل Sentence-BERT).

ميزات الوقت

الطوابع الزمنية غنية بالمعلومات لكنها تحتاج إلى استخراج دقيق. الطابع الزمني الخام Unix لا يعني شيئًا يُذكر لمعظم النماذج. الهدف هو استخراج الإشارات الكامنة:

الاستخراجات الأساسية
مفيدة دائمًا
السنة، الشهر، اليوم من الشهر، الساعة، الدقيقة، يوم الأسبوع، يوم السنة، أسبوع السنة.
الترميز الدوري
للدورية
الساعة 23 قريبة من الساعة 0، لكنها عدديًا بعيدة. رمِّز بـ sin/cos: sin(2π·h/24) وcos(2π·h/24).
ميزات التأخر (Lag)
للتنبؤ
القيمة عند t−1 وt−7 وt−30. تلتقط الارتباط الذاتي. عائلة الميزات الأهم للسلاسل الزمنية.
الإحصاءات المتحركة
للتمهيد
متوسط متحرك 7 أيام، انحراف معياري متحرك 30 يومًا. يلتقط الاتجاه والموسمية.
الزمن منذ الأحداث
خاص بالمجال
أيام منذ آخر شراء، ساعات منذ آخر تسجيل دخول. يلتقط الحداثة — وهي في الغالب عامل تنبؤي قوي.
علامة العطلة / نهاية الأسبوع
علامات ثنائية
رمِّز الأحداث الخاصة بالمجال كميزات ثنائية. فعّال للتنبؤ بالطلب والتجارة والتمويل.

الترميز الدوري بالتفصيل

معاملة ساعة اليوم كعدد صحيح عادي (0–23) تُوحي بأن منتصف الليل (0) والساعة الحادية عشرة مساءً (23) بعيدتان — لكنهما في الواقع تفصلهما ساعة واحدة فقط. يلفّ ترميز sin/cos الميزةَ حول دائرة:

الترميز الدوري
x_{\sin} = \sin\!\left(\frac{2\pi x}{P}\right), \quad x_{\cos} = \cos\!\left(\frac{2\pi x}{P}\right)
لميزة ذات دورة P (24 للساعات، 7 للأيام، 12 للأشهر)، رمِّز كميزتين: sin(2πx/P) وcos(2πx/P). معًا تُمثّلان بشكل فريد ومستمر كل موضع على الدائرة.

ميزات التفاعل

أحيانًا تكون ميزتان معًا أكثر قدرةً على التنبؤ من أيٍّ منهما منفردة. درجة ائتمانية 700 تعني شيئًا مختلفًا لمقترض دخله 10,000 دولار مقابل آخر دخله 200,000 دولار. ميزة التفاعل (درجة_الائتمان × الدخل) تلتقط هذا الأثر المشترك الذي تفوتّه النماذج الخطية.

القيم المفقودة كميزات

البيانات المفقودة نادرًا ما تكون عشوائية. عدم تسجيل نتيجة فحص مختبري لمريض قد يعني أن الاختبار لم يُطلب أصلًا — وهو بحد ذاته معلومة قيّمة. قبل حساب القيم المفقودة، أنشئ دائمًا ميزة مؤشر الفقدان: 1 إذا كانت القيمة مفقودة، 0 إذا كانت موجودة. ثم اعمل على حساب القيم المفقودة (المتوسط/الوسيط للقيم العددية، القيمة الأكثر شيوعًا للفئوية).

هكذا يستطيع النموذج تعلّم "ما هي القيمة" و"هل كانت مفقودة" — ملتقطًا كلًّا من الإشارة المحسوبة ونمط الفقدان.

هندسة الميزات الآلية

مكتبات مثل Featuretools تُؤتمت إنشاء ميزات التفاعل من البيانات العلائقية (جداول متعددة). تُنفّذ "تركيب الميزات العميق" — تطبيق منهجي لأوليات التجميع والتحويل عبر علاقات الكيانات. أدوات مثل AutoFeat تُجري الانحدار الرمزي لاكتشاف مجموعات الميزات غير الخطية. هذه الأدوات أكثر قيمةً حين يكون لديك بنية علائقية غنية أو حين تريد التحقق مما إذا كانت الميزات اليدوية تفوّت إشارات.

هندسة الميزات مقابل اختيار الميزات

هندسة الميزات تُنشئ ميزات جديدة من الموجودة. اختيار الميزات يُقرّر أيها تحتفظ به. كلاهما حيوي. الكثير من الميزات — خاصةً المترابطة أو الصاخبة — يمكن أن يضر بالأداء. تقنيات مثل التخلص التكراري من الميزات (RFE)، وأهمية الإذن، وتنظيم LASSO تُساعد في تحديد أي الميزات المهندَسة مهمة فعلًا.

سير عمل هندسة الميزات

في الممارسة، هندسة الميزات تكرارية. عملية موثوقة:

  1. ابدأ بمعرفة المجال — اعمل قائمة بالميزات التي يجدها خبير بشري مفيدة.
  2. استكشف البيانات — رسوم بيانية للتوزيع، مخططات التشتت، مصفوفات الارتباط. افهم التوزيعات والعلاقات.
  3. أنشئ خطًّا أساسيًا — درّب نموذجًا بسيطًا على الميزات الخام لتحديد معيار مرجعي.
  4. اهندس وقيّم — أضف ميزات جديدة مجموعةً تلو أخرى، قِس التأثير على نقاط التحقق.
  5. اقلّص — احذف الميزات التي لا تُحسّن أداء التحقق. الأقل كثيرًا ما يكون أفضل.
  6. كرّر — الميزات التي لا تُفيد النموذج الخطي قد تُفيد نموذج الأشجار، والعكس بالعكس.

الخلاصة الرئيسية

تُحوّل هندسة الميزات البيانات الخام إلى تمثيلات قابلة للتعلم. الميزات العددية تستفيد من المعيارة والتحويل اللوغاريتمي والتقسيم. الميزات الفئوية تحتاج إلى ترميز أحادي، أو ترميز تسمية، أو ترميز هدف — حسب الأساسية. النص يُحوَّل إلى متجهات TF-IDF أو تضمينات. ميزات الوقت تحتاج إلى ترميز دوري وبناء ميزات تأخر. أنشئ دائمًا مؤشر الفقدان قبل حساب القيم المفقودة. أفضل الميزات تأتي من معرفة المجال — الأدوات الآلية تساعد لكنها لا تُعوّض فهم المشكلة.

السابق الوحدة 9-الدرس 3: نماذج المحوّلات الحديثة نظرة عامة على الوحدة الدرس التالي الوحدة 10-الدرس 2: اختيار النماذج