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

لماذا مخازن الميزات؟

3 دقيقة للقراءة

مخازن الميزات تحل واحدة من أكثر مشاكل ML في الإنتاج شيوعاً: انحراف التدريب-التقديم. تضمن أن نموذجك يرى نفس الميزات في الإنتاج كما رآها أثناء التدريب.

مشكلة انحراف التدريب-التقديم

خط أنابيب التدريب                  خط أنابيب التقديم
┌──────────────────┐                 ┌──────────────────┐
│  استعلام SQL A  │                 │  كود Python B   │
│  (PostgreSQL)    │                 │  (API فوري)     │
└────────┬─────────┘                 └────────┬─────────┘
         │                                    │
         ▼                                    ▼
┌──────────────────┐                 ┌──────────────────┐
│  الميزة X = 10  │      ≠         │  الميزة X = 10.1│
└──────────────────┘                 └──────────────────┘
         │                                    │
         ▼                                    ▼
      النموذج                            النموذج
     (دقيق)                            (متدهور)

المشكلة: كود مختلف يحسب نفس الميزات، مما يؤدي لاختلافات طفيفة تُدهور أداء النموذج.

ما هو مخزن الميزات؟

مخزن الميزات هو مستودع مركزي لـ:

  • تخزين تعريفات الميزات
  • حساب الميزات بشكل متسق
  • تقديم الميزات للتدريب والاستدلال
  • تتبع نسب الميزات وإصداراتها
                    ┌─────────────────────┐
                    │    مخزن الميزات    │
                    │  ┌───────────────┐  │
   بيانات خام ─────▶│  │  تحويل       │  │ ──────▶ التدريب
                    │  │  وتخزين      │  │
                    │  └───────────────┐  │ ──────▶ التقديم
                    │  │  فوري/       │  │
                    │  │  غير فوري    │  │
                    └──┴───────────────┴──┘

المخازن الفورية مقابل غير الفورية

الجانب المخزن غير الفوري المخزن الفوري
حالة الاستخدام التدريب الاستدلال
زمن الاستجابة دقائق-ساعات مللي ثواني
التخزين مستودع بيانات مخزن مفتاح-قيمة
الحجم بيانات تاريخية أحدث القيم
الوصول استعلامات دفعية بحث نقطي

المخزن غير الفوري (التدريب)

# استعلام الميزات التاريخية للتدريب
training_data = feature_store.get_historical_features(
    entity_df=entity_dataframe,
    features=[
        "customer_features:total_purchases",
        "customer_features:avg_order_value",
        "customer_features:days_since_last_order"
    ]
)

المخزن الفوري (الاستدلال)

# احصل على أحدث الميزات للتوقع الفوري
features = feature_store.get_online_features(
    features=[
        "customer_features:total_purchases",
        "customer_features:avg_order_value"
    ],
    entity_rows=[{"customer_id": 12345}]
)

فوائد مخزن الميزات

1. الاتساق

┌─────────────────────────────────────────────────────────┐
│              تعريف ميزة واحد                            │
│                                                         │
│  def avg_order_value(orders):                           │
│      return orders.groupby('customer_id')['amount'].mean()│
└─────────────────────────────────────────────────────────┘
         ┌───────────────┴───────────────┐
         │                               │
         ▼                               ▼
    التدريب                         التقديم
    (نفس النتيجة)                  (نفس النتيجة)

2. إعادة الاستخدام

الميزة: customer_lifetime_value
    ├── تُستخدم بواسطة: نموذج توقع الانسحاب
    ├── تُستخدم بواسطة: نموذج البيع الإضافي
    ├── تُستخدم بواسطة: نموذج تقييم المخاطر
    └── تُستخدم بواسطة: تقسيم التسويق

3. الاكتشاف

الفرق يمكنها تصفح وإعادة استخدام الميزات الموجودة:

كتالوج الميزات
───────────────────────────────────────────────
الاسم                  │ المالك  │ آخر تحديث
───────────────────────────────────────────────
customer_ltv            │ فريق أ │ 2025-01-15
product_avg_rating      │ فريق ب │ 2025-01-10
user_session_count      │ فريق ج │ 2025-01-12
order_frequency_30d     │ فريق أ │ 2025-01-14
───────────────────────────────────────────────

4. السفر عبر الزمن

# احصل على الميزات كما كانت في تاريخ محدد
point_in_time_features = feature_store.get_historical_features(
    entity_df=entity_dataframe,
    features=["customer_features:total_purchases"],
    timestamp_field="event_timestamp"
)

حالات الاستخدام الشائعة

حالة الاستخدام الميزات المطلوبة زمن الاستجابة
كشف الاحتيال أنماط المعاملات، معلومات الجهاز < 50ms
التوصيات تفضيلات المستخدم، تضمينات العناصر < 100ms
التصنيف الائتماني التاريخ المالي، أنماط السلوك < 1s
التسعير الديناميكي إشارات الطلب، أسعار المنافسين < 500ms

معمارية مخزن الميزات

┌─────────────────────────────────────────────────────────────┐
│                      مصادر البيانات                          │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐        │
│  │قاعدة   │  │ تدفقات │  │ ملفات  │  │  APIs   │        │
│  │بيانات  │  │         │  │         │  │         │        │
│  └────┬────┘  └────┬────┘  └────┬────┘  └────┬────┘        │
└───────┼────────────┼────────────┼────────────┼──────────────┘
        │            │            │            │
        └────────────┴─────┬──────┴────────────┘
              ┌────────────────────────┐
              │   هندسة الميزات       │
              │   (التحويلات)         │
              └───────────┬────────────┘
        ┌─────────────────┴─────────────────┐
        │                                   │
        ▼                                   ▼
┌───────────────────┐            ┌───────────────────┐
│  المخزن غير     │            │   المخزن الفوري   │
│  الفوري          │            │   (Redis/DynamoDB)│
│  (بحيرة البيانات)│            │                   │
└─────────┬─────────┘            └─────────┬─────────┘
          │                                │
          ▼                                ▼
   خط أنابيب التدريب              خدمة الاستدلال

مخازن الميزات الشائعة

الأداة النوع الأفضل لـ
Feast مفتوح المصدر عام، مستضاف ذاتياً
Tecton مُدار المؤسسات، ML فوري
Databricks مُدار سير عمل Spark
AWS SageMaker مُدار نظام AWS البيئي
Vertex AI مُدار نظام GCP البيئي

متى تحتاج مخزن ميزات؟

الحالة تحتاج مخزن ميزات؟
نموذج واحد، استدلال دفعي ربما
نماذج متعددة تشترك في الميزات نعم
استدلال فوري نعم
مشاكل انحراف التدريب-التقديم نعم
اكتشاف/حوكمة الميزات نعم

الرؤية الرئيسية: مخازن الميزات ليست فقط تخزين—هي الجسر بين هندسة البيانات وML، تضمن الاتساق وإعادة الاستخدام والحوكمة عبر منصة ML الخاصة بك.

التالي، سنغوص عميقاً في Feast، أشهر مخزن ميزات مفتوح المصدر. :::

اختبار

الوحدة 4: مخازن الميزات وهندسة الميزات

خذ الاختبار