المكاسب:
- القدرة على إنتاج ميزات مشتقة ذات معنى مع معرفة المجال وترميز الفئات الفئوية بالطرق المناسبة (واحدة ساخنة، تسمية، هدف)
- القدرة على قياس المتغيرات الرقمية وفقًا لنوع النموذج (التوحيد القياسي والتطبيع) وتجنب القياس غير الضروري أو غير الكامل
- القدرة على تجنب تسرب الميزات من خلال تعلم جميع التحويلات بعد تقسيم التدريب/الاختبار ومن التدريب فقط
هناك قول مأثور في التعلم الآلي: "التعلم الآلي التطبيقي هو في الأساس هندسة الميزات". لأن نجاح النموذج غالبًا ما يأتي من المدخلات التي تقدمها للنموذج، وليس من الخوارزمية التي تختارها. هندسة الميزات هي فن إنتاج إشارات ذات معنى من البيانات الأولية التي يمكن للنموذج التعلم منها. يعد الذكاء الاصطناعي مصدرا غنيا للأفكار في هذه المرحلة: عندما تسأل "ما هي الميزات التي يمكن إنتاجها من هذه البيانات"، فإنه يدرج عشرات الاقتراحات. لكن بعض هذه الاقتراحات قد تكون ذات قيمة، وبعضها قد يكون عديم الفائدة، وبعضها قد يكون خطيرًا (تسريبًا). انها عملك لفرز ذلك.
لماذا ميزة الهندسة
نادرًا ما تصل البيانات الأولية إلى النموذج في أفضل حالاته. في حين أن عمود "تاريخ الميلاد" وحده لا معنى له، فإن قيمة "العمر" الناتجة عنه تعتبر إشارة قوية. يمكنك استخراج سمات مثل "يوم من الأسبوع"، "يوم/ليلة"، "هل هي عطلة" من "الطابع الزمني للطلب". يمكنك الجمع بين عمودين لإنتاج نسبة ("نسبة الدين إلى الدخل"). هنا، تقوم هندسة الميزات بترجمة معرفة المجال إلى إشارة رياضية؛ وهذا هو بالضبط السبب في أن هذه المرحلة هي التي تتطلب أكبر قدر من الذكاء البشري.
تحويل المتغيرات الفئوية إلى أرقام: الترميز
تعمل النماذج بشكل عام مع الأرقام، وليس النص. يسمى تحويل المتغيرات الفئوية (مثل المدينة واللون ونوع المنتج) إلى أرقام بالترميز. ثلاث طرق شائعة:
ترميز واحد ساخن: يفتح عمودًا منفصلاً بقيمة 0/1 لكل فئة. بالنسبة لـ "المدينة"، يتم تشكيل أعمدة إسطنبول وأنقرة وإزمير؛ إذا كان العميل من إسطنبول، فسيكون هذا العمود فقط هو 1. مثالي عندما يكون عدد الفئات صغيرًا؛ إذا كان هناك عدد كبير جدًا من الفئات، فسيتم إنتاج مئات الأعمدة (وهذا ما يسمى "انفجار الحجم").
ترميز الملصقات: يعطي رقمًا لكل فئة (اسطنبول=0، أنقرة=1). إنه أمر بسيط، لكنه قد يعلم النموذج عن طريق الخطأ تسلسلًا (مثل أنقرة> إسطنبول)؛ لذلك يتم استخدامه بحذر في الفئات غير المرتبة.
الترميز المستهدف: يستبدل كل فئة بمتوسط المتغير المستهدف في تلك الفئة. إنه مصدر قوي للغاية، ولكنه أخطر مصدر للتسرب: إذا أخذت في الاعتبار هدف بيانات الاختبار، فإن النموذج يرى المستقبل. يجب أن يتم حسابه فقط من بيانات التدريب وبعناية (ضمن التحقق المتبادل).
القياس: الأعداد الكبيرة لا تطغى على النموذج
بعض النماذج (النماذج القائمة على المسافة، والنماذج الخطية، والشبكات العصبية) حساسة لمقياس المتغيرات. وإذا وقع "الدخل" (0-500000) و"العمر" (0-100) في نفس النمط، فقد يهيمن الدخل ببساطة لأنه أكبر. القياس يعمل على إصلاح هذا. طريقتان شائعتان: التقييس (تحويل كل قيمة إلى "عدد الانحرافات المعيارية بعيدًا عن المتوسط") والتطبيع (التطبيع الأدنى والحد الأقصى - ضغط القيم في النطاق 0-1). النماذج المبنية على الشجرة (أشجار القرار، الغابة العشوائية) غير حساسة للقياس، ولا تتطلب القياس.
تحذير: يجب حساب معلمات القياس والترميز (المتوسط، والانحراف المعياري، ورسم خرائط متوسط الفئة) فقط من بيانات التدريب، ثم يجب تطبيق نفس الشيء على بيانات الاختبار. يعد تضمين بيانات الاختبار بمثابة تسرب ويجعل النموذج الخاص بك يبدو أفضل مما هو عليه بالفعل.
قلب التسرب في هندسة الميزات
إنشاء الميزات هو المكان الذي ينشأ فيه تسرب البيانات في أغلب الأحيان. خطأان نموذجيان: تسرب الوقت — إنتاج ميزة تتضمن معلومات مستقبلية (بما في ذلك الأيام التي تلي يوم التنبؤ عند حساب "متوسط آخر 30 يومًا"). تسرب الإحصائيات - حساب الميزة (متوسط القياس، وقيمة التشفير المستهدفة) من جميع البيانات قبل تقسيم التدريب/الاختبار. القاعدة: تعلم كل تحويل بعد القيام بتقسيم التدريب/الاختبار أولاً وفقط من بيانات التدريب. الطريقة الأكثر أمانًا للقيام بذلك بانتظام هي استخدام خط الأنابيب - وهو هيكل يجمع كل التحويلات في سلسلة واحدة ويطبقها بعد التقسيم.
الطريقة
لماذا
خطر التسرب
ملاحظة
ترميز واحد ساخن
متغير مع فئات قليلة
منخفض
ينفجر الحجم في فئات متعددة
ترميز التسمية
فئة مرتبة
منخفض
خارج الترتيب يعلم الترتيب الخاطئ
ترميز الهدف
متعدد الفئات، إشارة قوية
عالية جدا
فقط من التعليم، في السيرة الذاتية
التوحيد
النماذج الخطية/المسافة
متوسطة
المعلمة تعتمد فقط على التعليم
ميزة نافذة الوقت
سلسلة زمنية
عالية
أضف المستقبل
ثلاث حالات صغيرة
الحالة 1 - الممتلكات القيمة. قام فريق الائتمان بإنشاء ميزة "نسبة الدين إلى الدخل" من أعمدة "الدخل الشهري" الخام و"سداد الديون الشهرية". أدت هذه الميزة المشتقة الفردية إلى زيادة دقة النموذج من 71% إلى 79%؛ لأن المعدل، وليس الدخل المطلق، هو الذي يحدد المخاطر حقًا. الدرس المستفاد: النسب الناتجة عن معرفة المجال هي إشارات قوية.
الحالة 2 - تسرب الترميز المستهدف. قام أحد الفرق بتحويل "الرمز البريدي" إلى رقم بالتشفير المستهدف (متوسط معدل التغيير في تلك المنطقة)، لكنه فعل ذلك من جميع البيانات قبل التقسيم. أعطى النموذج 94% في مجموعة الاختبار، وانخفض إلى 68% في الإنتاج. 6 أسابيع من الجهد ضاعت. الدرس المستفاد: يتم تنفيذ الترميز المستهدف بعناية، فقط في إطار التدريب.
الحالة 3 - تحجيم النسيان. قام أحد المحللين بدمج الإيرادات (0-400000) وعمر العميل (18-75) في نموذج قائم على المسافة دون القياس. وقد اهتم النموذج بشكل شبه حصري بالدخل، وسحق تأثير العمر. عندما تمت إضافة القياس، أصبح التجزئة ذا معنى. الدرس المستفاد: لا يتم إهمال القياس في النماذج البعيدة/الخطية.
أربعة قوالب قابلة للنسخ
1) توليد فكرة الميزة (القضاء متروك لك):
دورك: مساعد هندسي مميز. أعمدة df الخاصة بي: تاريخ الميلاد، وقت الطلب (الطابع الزمني)، الدخل_tl، الديون_tl، المدينة، فئة_المنتج. الهدف: "هل سيتم سداد القرض" (0/1). اقترح 15 ميزة يمكن توليدها من هذه الأعمدة؛ تحديد مخاطر التسرب (منخفضة/متوسطة/عالية) لكل منها. ضع علامة واضحة على تلك التي تحتوي على معلومات مستقبلية.
2) الترميز الآمن (ما بعد التقسيم):
اكتب رمزًا يقوم بتشفير "city" و"product_category" بشكل سريع. هام: قم بملاءمة التشفير مع بيانات التدريب فقط، ثم قم بتحويل بيانات الاختبار (باستخدام sklearn OneHotEncoder). شرح كيفية التعامل مع فئة الغيب (handle_unknown) في التعليم.
3) تحويل خالي من التسرب مع خط الأنابيب:
قم بإعداد خط أنابيب sklearn: قم بتطبيق StandardScaler على الأعمدة الرقمية، وOneHotEncoder على الأعمدة الفئوية، وأضف مصنفًا في النهاية. ضمان تعلم جميع التحولات بعد تقسيم التدريب/الاختبار ومن التدريب فقط. اشرح الكود ولماذا هو خالي من التسرب.
4) خاصية النافذة الزمنية (التحكم في التسرب):
أنشئ سمة "عدد الطلبات في آخر 30 يومًا" لكل عميل، ولكن لا تقم مطلقًا بتضمين البيانات بعد يوم التنبؤ. اشرح سطرًا تلو الآخر أن الكود لا يتطلع إلى المستقبل. سأقدم عمود التاريخ المرجعي.
موجه ضعيف / موجه قوي
حث ضعيف:
أضف خصائص جيدة لهذه البيانات.
"جيد" غير محدد، والهدف غير واضح، ولا يوجد تحكم في التسرب. يقوم الذكاء الاصطناعي بإنشاء ميزات عشوائية، وربما متسربة.
مطالبة قوية:
دورك: مهندس الميزات. الهدف: "التحويل خلال 30 يومًا" (0/1)، التاريخ المرجعي المقدر: save_date. يوجد سجل للمعاملات في df.Task: قم بإنشاء 8 ميزات، وأجب عن السؤال "هل لدي هذه المعلومات في وقت التنبؤ" لكل منها. إضافة التاريخ بعد التاريخ المرجعي في ميزات النافذة الزمنية. اكتب الكود بطريقة متوافقة مع خط الأنابيب ليتم تنفيذه بعد قسم التدريب/الاختبار.
هنا يتم تحديد الهدف والوقت المرجعي والتحكم في التسرب من البداية.
الأخطاء الشائعة
- تعلم التحويل من كافة البيانات قبل القسمة. إذا رأت معلمة القياس/الترميز بيانات الاختبار، يحدث تسرب.
- الاستخدام المتهور للترميز المستهدف. إنها الطريقة الأقوى ولكنها الأكثر تسريبًا؛ فقط من التدريب، في التحقق من الصحة.
- إضافة المستقبل مع خاصية النافذة الزمنية. إذا تم إدخال حساب "آخر 30 يومًا" بعد يوم التنبؤ، فسيرى النموذج المستقبل.
- القياس غير الضروري في النموذج الشجري والقياس غير الكامل في النموذج الخطي. يتم اتخاذ قرارات القياس وفقًا لنوع النموذج.
- إضافة كل اقتراح ميزة للذكاء الاصطناعي دون سؤال. قد تتضمن الاقتراحات ميزات غير مجدية ومتسربة.
نصيحة: اكتب سؤالاً واحدًا لكل ميزة تقوم بإنشائها: "هل يمكنني حساب هذه القيمة باستخدام المعلومات المتوفرة لدي في وقت إجراء التنبؤ؟" إذا لم تكن الإجابة بـ "نعم" واضحة، فلا تستخدم هذه الميزة. يزيل هذا النظام الفردي معظم التسريبات المتعلقة بالميزات.
في ملخص
هندسة الميزات هي فن توليد إشارات ذات معنى من البيانات الأولية وغالباً ما تحدد نجاح النموذج أكثر من الخوارزمية. يعد تشفير الفئات (واحد ساخن، تسمية، هدف)، قياس الأرقام (التوحيد القياسي، التطبيع) وإنتاج ميزات مشتقة مع معرفة المجال هي الأدوات الأساسية. لكن هذه المرحلة هي أيضًا قلب التسرب: يجب تعلم جميع التحولات بعد تقسيم التدريب/الاختبار ومن بيانات التدريب فقط. يولد الذكاء الاصطناعي الكثير من الأفكار؛ إن الحكم البشري هو الذي يميز الثمين عن الخطير.
مهمة التطبيق
اختر متغيرًا مستهدفًا وقم بتصميم خمس ميزات مشتقة على الأقل من الأعمدة المتوفرة لديك. لكل واحد منهم، قم بالإجابة على السؤال "هل أنا متاح في وقت التنبؤ" كتابيًا وقم بإزالة سؤال واحد على الأقل باعتباره "خطر كبير للتسرب". ثم قم بترميز الميزات الآمنة في المسار ليتم تنفيذها بعد التقسيم.
قائمة مرجعية
- [ ] هل قمت بتطبيق جميع التحويلات بعد تقسيم التدريب/الاختبار؟
- [ ] هل تعلمت معلمات القياس/التشفير فقط من خلال التدريب؟
- [ ] هل أجبت على سؤال "هل أملكه في وقت التنبؤ" لكل ميزة؟
- [ ] هل اتخذت مزيدًا من الحذر فيما يتعلق بالطرق عالية المخاطر مثل ترميز الهدف؟
- [ ] هل قررت تغيير الحجم بشكل مناسب لنوع النموذج (شجرة/خطي)؟