لماذا تهمّ الميزات؟
النموذج ليس أفضل من المعلومات التي تقدّمها إليه. البيانات الخام — الطوابع الزمنية، وسلاسل الفئات، وقيم البكسل — كثيرًا ما تحتوي على الإشارة الصحيحة لكن في الشكل الخاطئ. هندسة الميزات هي عملية تحويل البيانات الخام إلى تمثيلات تجعل الأنماط صريحةً وقابلةً للتعلم.
تأمّل مثال التنبؤ بأجرة سيارة الأجرة. قد تتضمّن البيانات الخام طابعًا زمنيًا مثل "2024-01-15 08:32:00". لا يستطيع النموذج بسهولة أن يتعلم أن رحلات ساعة الذروة يوم الاثنين أغلى ثمنًا — ما لم تستخرج: ساعة اليوم، ويوم الأسبوع، وعلامة ثنائية هل-هي-ذروة. هذه الميزات المشتقة تُكشف الإشارة. في كثير من المشاريع، تُعدّ هندسة الميزات النشاط الأعلى مردودًا من حيث تحسين الأداء.
أفضل الميزات تأتي من فهم المشكلة، لا من البحث الآلي. يعرف عالم الأرصاد الجوية أن نقطة الندى تتفاعل مع درجة الحرارة للتنبؤ باحتمال المطر. يعرف المصرفي أن نسبة الدين إلى الدخل أكثر قدرةً على التنبؤ من أيٍّ من القيمتين منفردةً. تحدّث إلى خبراء المجال قبل أن تلمس البيانات.
الميزات العددية
الميزات العددية هي النوع الأكثر شيوعًا، لكنها كثيرًا ما تحتاج إلى تحويل قبل أن يتمكن النموذج من استخدامها بفعالية. ثلاثة تحويلات تغطي غالبية حالات العالم الحقيقي:
التطبيع والمعيارة
كثير من النماذج — الانحدار الخطي، وآلات المتجهات الداعمة، والشبكات العصبية، وK-NN — حساسةٌ لمقياس الميزات. ميزةٌ تتراوح بين 0 و1,000,000 ستُهيمن على ميزات تتراوح بين 0 و1 في التحسين القائم على التدرج. نهجان قياسيان:
قاعدة عامة: استخدم المعيارة في معظم الحالات. استخدم التطبيع حين تحتاج مخرجات محدودة (مثل قيم البكسل التي تُغذَّى للشبكات التلافيفية). النماذج القائمة على الأشجار (الغابات العشوائية، التعزيز التدريجي) لا تحتاج أيًّا منهما.
التحويل اللوغاريتمي
كثير من الكميات في العالم الحقيقي لها توزيعات منحرفة يمينًا — الدخل، وعدد سكان المدن، وحركة مرور المواقع، وقيم المعاملات. معظم القيم صغيرة لكن القليل منها ضخم جدًا. التحويل اللوغاريتمي يضغط الذيل العلوي ويجعل التوزيع أكثر تماثلًا، وهو ما تتعامل معه النماذج بكفاءة أعلى بكثير.
استخدم 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" تحصل على أوزان منخفضة؛ الكلمات النادرة لكن المفيدة تحصل على أوزان عالية.
التضمينات الكلمية (Word Embeddings)
يعامل TF-IDF الكلمات على أنها مستقلة. التضمينات الكلمية (Word2Vec، GloVe، FastText) تُعيّن كل كلمة إلى متجه كثيف — عادةً 50 إلى 300 بُعد — حيث الكلمات المتشابهة دلاليًا قريبةٌ في فضاء المتجه. المثال الكلاسيكي: ملك − رجل + امرأة ≈ ملكة. يمكن الحصول على تضمينات على مستوى الوثيقة بحساب متوسط متجهات الكلمات أو باستخدام مشفّر الجمل المدرَّب مسبقًا (مثل Sentence-BERT).
ميزات الوقت
الطوابع الزمنية غنية بالمعلومات لكنها تحتاج إلى استخراج دقيق. الطابع الزمني الخام Unix لا يعني شيئًا يُذكر لمعظم النماذج. الهدف هو استخراج الإشارات الكامنة:
الترميز الدوري بالتفصيل
معاملة ساعة اليوم كعدد صحيح عادي (0–23) تُوحي بأن منتصف الليل (0) والساعة الحادية عشرة مساءً (23) بعيدتان — لكنهما في الواقع تفصلهما ساعة واحدة فقط. يلفّ ترميز sin/cos الميزةَ حول دائرة:
ميزات التفاعل
أحيانًا تكون ميزتان معًا أكثر قدرةً على التنبؤ من أيٍّ منهما منفردة. درجة ائتمانية 700 تعني شيئًا مختلفًا لمقترض دخله 10,000 دولار مقابل آخر دخله 200,000 دولار. ميزة التفاعل (درجة_الائتمان × الدخل) تلتقط هذا الأثر المشترك الذي تفوتّه النماذج الخطية.
- الميزات متعددة الحدود — جميع الضربات حتى الدرجة N: x₁²، x₁x₂، x₂²،... Scikit-learn يُؤتمت هذا.
- ميزات النسبة — الدين إلى الدخل، السعر لكل قدم مربعة، النقرات لكل ظهور. النسب كثيرًا ما تلتقط الكمية ذات المعنى.
- ميزات الضرب — ضربات مبنية على خبرة المجال: درجة_الحرارة × الرطوبة، الإنفاق الإعلاني × الموسمية.
- إحصاءات المجموعة — متوسط الهدف لكل مستخدم، متوسط الإنفاق التاريخي. تجميعات من نفس الكيان عبر الصفوف.
القيم المفقودة كميزات
البيانات المفقودة نادرًا ما تكون عشوائية. عدم تسجيل نتيجة فحص مختبري لمريض قد يعني أن الاختبار لم يُطلب أصلًا — وهو بحد ذاته معلومة قيّمة. قبل حساب القيم المفقودة، أنشئ دائمًا ميزة مؤشر الفقدان: 1 إذا كانت القيمة مفقودة، 0 إذا كانت موجودة. ثم اعمل على حساب القيم المفقودة (المتوسط/الوسيط للقيم العددية، القيمة الأكثر شيوعًا للفئوية).
هكذا يستطيع النموذج تعلّم "ما هي القيمة" و"هل كانت مفقودة" — ملتقطًا كلًّا من الإشارة المحسوبة ونمط الفقدان.
هندسة الميزات الآلية
مكتبات مثل Featuretools تُؤتمت إنشاء ميزات التفاعل من البيانات العلائقية (جداول متعددة). تُنفّذ "تركيب الميزات العميق" — تطبيق منهجي لأوليات التجميع والتحويل عبر علاقات الكيانات. أدوات مثل AutoFeat تُجري الانحدار الرمزي لاكتشاف مجموعات الميزات غير الخطية. هذه الأدوات أكثر قيمةً حين يكون لديك بنية علائقية غنية أو حين تريد التحقق مما إذا كانت الميزات اليدوية تفوّت إشارات.
هندسة الميزات تُنشئ ميزات جديدة من الموجودة. اختيار الميزات يُقرّر أيها تحتفظ به. كلاهما حيوي. الكثير من الميزات — خاصةً المترابطة أو الصاخبة — يمكن أن يضر بالأداء. تقنيات مثل التخلص التكراري من الميزات (RFE)، وأهمية الإذن، وتنظيم LASSO تُساعد في تحديد أي الميزات المهندَسة مهمة فعلًا.
سير عمل هندسة الميزات
في الممارسة، هندسة الميزات تكرارية. عملية موثوقة:
- ابدأ بمعرفة المجال — اعمل قائمة بالميزات التي يجدها خبير بشري مفيدة.
- استكشف البيانات — رسوم بيانية للتوزيع، مخططات التشتت، مصفوفات الارتباط. افهم التوزيعات والعلاقات.
- أنشئ خطًّا أساسيًا — درّب نموذجًا بسيطًا على الميزات الخام لتحديد معيار مرجعي.
- اهندس وقيّم — أضف ميزات جديدة مجموعةً تلو أخرى، قِس التأثير على نقاط التحقق.
- اقلّص — احذف الميزات التي لا تُحسّن أداء التحقق. الأقل كثيرًا ما يكون أفضل.
- كرّر — الميزات التي لا تُفيد النموذج الخطي قد تُفيد نموذج الأشجار، والعكس بالعكس.
تُحوّل هندسة الميزات البيانات الخام إلى تمثيلات قابلة للتعلم. الميزات العددية تستفيد من المعيارة والتحويل اللوغاريتمي والتقسيم. الميزات الفئوية تحتاج إلى ترميز أحادي، أو ترميز تسمية، أو ترميز هدف — حسب الأساسية. النص يُحوَّل إلى متجهات TF-IDF أو تضمينات. ميزات الوقت تحتاج إلى ترميز دوري وبناء ميزات تأخر. أنشئ دائمًا مؤشر الفقدان قبل حساب القيم المفقودة. أفضل الميزات تأتي من معرفة المجال — الأدوات الآلية تساعد لكنها لا تُعوّض فهم المشكلة.