Quick Overview Into Feature Engineering

الـFeature Engineering في مجال الذكاء الاصطناعيهو عملية استخدام المعرفة المتعلقة بالمجال البيانات لإنشاء سمات (ميزات) تساعد خوارزميات التعلم الآلي على العمل بشكل أفضل
Quick Overview Into Feature Engineering
Quick Overview Into Feature Engineering

في هذه الصفحة

سوف نتكلم اليوم فى موضوع من أهم مواضيع علم البيانات وهو Feature Engineering ولكن دعنا أولاً نرى كيف يظهر في حياتنا عن طريق هذه القصة

 كان في قرية صغيرة عاش فيها  نجار ماهر يدعى علي و كان عمك علي  مهووسًا بالأخشاب والأعمال اليدوية، وكان بيحب تصميم وبناء الأشياء الجميلة من الأخشاب. لكنه وجد نفسه يواجه تحديًا كبيرًا في إنشاء الأثاث الذي يناسب احتياجات الناس في القرية وكان عمك على  عنده فكرة مبتكرة لصنع طاولة متعددة الاستخدامات، ولكنه وجد صعوبة في تنفيذها. فقرر إنه يستخدم مهارته في الـ “Feature Engineering” للتغلب على هذا التحدي.

بدأ علي بجمع البيانات من الأشخاص في القرية. سألهم عن احتياجاتهم ومتطلباتهم من الطاولة. واكتشف أن الناس يحتاجون إلى طاولة يمكن استخدامها لتناول الطعام والعمل وحتى لتنظيم الاجتماعات.

من خلال فهمه لاحتياجات الناس، قام علي بتصميم السمات المناسبة للطاولة. فقام:

١- بإضافة سطح قابل للتمديد لتناول الطعام

٢- إدراج لتخزين أدوات العمل

٣- مساحة لتوفير مكان للمجتمع.

بدأ علي ببناء الطاولة باستخدام السمات التي قام بتصميمها. وبعد الانتهاء من العمل، قام بعرض الطاولة على سكان القرية. لقد أعجب الناس بالطاولة الجديدة وكانوا سعداء لأنها تلبي احتياجاتهم بشكل مثالي.

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

هذه الحكاية تذكرنا بأهمية Feature Engineering في تعلم الآلة. فعندما نفهم البيانات ونصمم السمات الملائمة، يمكن للنماذج الآلية أن تكون أكثر قوة ودقة في التنبؤ بالنتائج المرغوبة.

ويمككنا أن نحول هذه القصة إلي كود كالتالي:

# Gathering data
data = {
    'needs': ['dining', 'working', 'socializing'],
    'features': []
}

# Cleaning data (not needed in this case)

# Feature engineering
features = {
    'dining_surface': True,
    'working_drawers': True,
    'socializing_space': True
}

data['features'] = features

# Define model (not needed in this case)

# Training, testing the model, and predicting the output (not needed in this case)

# Print the final result
print("The table features:")
for feature, value in data['features'].items():
    print(f"- {feature}: {value}")

بعدما فهمنا القصة كلها تعالى بقى نتكلم بشكل تقني:

 الـFeature Engineering في مجال الذكاء الاصطناعيهو عملية استخدام المعرفة المتعلقة بالمجال البيانات لإنشاء سمات (ميزات) تساعد خوارزميات التعلم الآلي على العمل بشكل أفضل. لو تمت العملية بشكل صحيح، فده  بيزيد من قدرة الخوارزميات التنبؤية للتعلم الآلي من خلال إنشاء سمات من البيانات الخام التي تسهل عملية التعلم الآلي. فعلاً، الـ Feature Engineering هو فن.

الخطوات المتضمنة في حل أي مشكلة في التعلم الآلي

  • جمع البيانات.
  • تنظيف البيانات.
  • Feature Engineering.
  • تعريف النموذج.
  • تدريب النموذج واختباره وتنبؤ النتائج.

الـ  Feature Engineering هو الفن الأكثر أهمية في التعلم الآلي والذي يصنع الفارق الكبير بين نموذج جيد ونموذج سيء. 

ما الذي يشمله الـ Feature Engineering؟

لنفترض أننا نملك بيانات “تاريخ ووقت الرحلة مقابل الحالة”. ثم، يتعين علينا استخدام البيانات التاريخ والوقت للتنبؤ بحالة الرحلة. تعتمد حالة الرحلة على ساعة اليوم، وليس على تاريخ ووقت الرحلة. سنقوم بإنشاء سمة جديدة تسمى “Hour_Of_Day” (ساعة اليوم). باستخدام سمة “Hour_Of_Day”، سيتعلم النموذج بشكل أفضل حيث أن هذه السمة مرتبطة مباشرة بحالة الرحلة. هنا، إنشاء سمة جديدة بإسم “Hour_Of_Day” هو جزء من الـ  Feature Engineering.

دعونا نرى مثالًا آخر. لنفترض أننا نملك خطوط العرض والطول وبيانات أخرى مع تسمية “سعر المنزل”. نحن بحاجة إلى توقع سعر المنزل في تلك المنطقة. الخطوط العرض والطول ليست لها قيمة إذا كانت وحدها. لذا، سنستخدم Feature Engineering المتمثل في دمج خط العرض وخط الطول لتشكيل سمة واحدة. دمجهما في سمة واحدة سيساعد النموذج على التعلم بشكل أفضل. هنا، دمج ميزتين معًا لإنشاء ميزة مفيدة واحدة هو Feature Engineering.

أحيانًا، نستخدم أيضًا Feature Engineering لتجزئة العمود إلى فئات. لنفترض أن لدينا مجموعة بيانات يشمل أحد الأعمدة فيها العمر والنتيجة (X، Y، Z). من خلال رؤية البيانات، ندرك أن النتيجة (X، Y، Z) تعتمد على فئات الأعمار مثل

  •  فئة العمر من 11 إلى 20 سنة ينتج X
  •  فئة العمر من 21 إلى 40 سنة ينتج Y
  •  وفئة العمر من 41 إلى 70 سنة ينتج Z. 

هنا، سنقوم بإنشاء 3 فئات لنطاقات الأعمار: 11-20، 21-40، و 41-70. سننشئ سمة جديدة تسمى “Age_Range” (نطاق العمر) والتي تحتوي على القيم الرقمية 1 و 2 و 3 حيث يتم تعيين القيمة 1 للفئة 1 والقيمة 2 للفئة 2 والقيمة 3 للفئة 3.

هنا، إنشاء فئة “Age_Range” هو جزء من الـ  Feature Engineering.

أحيانًا، إزالة الميزات غير المرغوب فيها أيضًا Feature Engineering. حيث أن الميزة التي ليست ذات صلة تؤثر على أداء النموذج.

  • الآن، الخطوات لعمل Feature Engineering هي كما يلي:
  • التفكير في الميزات.
  • إنشاء الميزات.
  • التحقق من كيفية عمل الميزات مع النموذج.
  • البدء من البداية مرة أخرى حتى تعمل الميزات بشكل مثالي.

و هذا هو ما نقوم به في Feature Engineering.

 الأسرار في عالم الـ Feature Engineering

 

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

استخدام الأسرار(الخبايا) بشكل صحيح يمكن أن يجعل الفرق بين نموذج جيد ينجز المهمة ونموذج سيء يبقى غير قادر على فهم البيانات. فكيف تعمل هذه الخبايا السحرية؟

هنالك 7 من تقنيات (أسرار) هندسة الميزات الأكثر استخدامًا بس تعالى أحكيلك حكاية عشان ندخل في المود مع بعض 

كان فيه مهندس ذكي يُدعى أحمد، كان متخصصًا في تعلم الآلة. ويعمل في شركة تكنولوجيا كبيرة، وكان معروفًا بمهاراته في Feature Engineering.

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

بدأ أحمد بخطوة جمع البيانات، حيث استخلص معلومات متنوعة مثل الموقع، عدد الغرف، المساحة، وغيرها. ومع ذلك، أدرك أن هذه المعلومات قد لا تكون كافية لتوفير نتائج دقيقة وموثوقة.

لذا قرر أحمد أن يطبق تقنيات Feature Engineering لتحسين نموذجه.

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

بعد العديد من التجارب والتحسينات، قام أحمد بتدريب نموذج التعلم الآلي باستخدام البيانات المحسنة والمعالجة. وكانت النتائج مدهشة! كان لدى نموذجه القدرة على التنبؤ بأسعار العقارات بدقة عالية وأعلى موثوقية.

أصبح أحمد عالم فى Feature Engineering، حيث استخدم خبرته لتحسين نتائج النماذج وتمكينها من فهم البيانات بشكل أفضل. وأصبحت قصته مصدر إلهام للعديد من المهندسين والباحثين في مجال تعلم الآلة.

  بعدما فهمنا الحكاية عن التقنيات وكيفية الوصول من خلالها إلى دقة عالية واكتشاف أهم الميزات تعالوا نتكلم تكنيكال عن التقنيات 

أساليب Feature Engineering

  • Text encoding: تعني تحويل المتغيرات النصية إلى رموز رقمية. على سبيل المثال، يمكننا تحويل نوع العقار من “شقة” أو “فيلا” إلى رمز رقمي مثل 1 أو 2. هذا يساعد النموذج على فهم المتغيرات النصية واستخدامها في التنبؤات بشكل أفضل.
  • Mathematical transformations: يشير إلى تطبيق عمليات رياضية على المتغيرات الرقمية لتحسين توزيع البيانات. على سبيل المثال، يمكننا تحويل المساحة من قيم عشوائية إلى قيم تتوزع بشكل أفضل، مما يمكن النموذج من توقع أسعار العقارات بشكل أكثر دقة.
  • Feature discovery: يشير إلى دمج مجموعة من المتغيرات لإنشاء متغيرات جديدة توضح العلاقات بين البيانات المختلفة. على سبيل المثال، يمكننا دمج معلومات العنوان والمساحة لإنشاء متغير جديد يمثل “مساحة العقار في منطقة معينة”. هذا يساعد النموذج على فهم العلاقات بين البيانات بشكل أفضل.
  • Feature Hashing: هذه التقنية تستخدم لتحويل المتغيرات الفئوية إلى تمثيل رقمي. تتضمن استخدام دالة التجزئة (Hash function) لتعيين قيم رقمية للفئات وتخطيطها في أبعاد محددة. يمكن استخدامها في حالة المتغيرات الفئوية ذات القدرة العالية على الفئات.
  • الترميز (Encoding): تُستخدم تقنيات الترميز لتحويل المتغيرات الفئوية إلى تمثيل رقمي يمكن استخدامه بواسطة خوارزميات التعلم الآلي. من أمثلة تقنيات الترميز الشائعة: الترميز الثنائي (One-Hot Encoding)، الترميز بالتسلسل (Label Encoding)، الترميز التسلسلي (Ordinal Encoding)، والترميز بالهدف (Target Encoding).
  • Bucketizing: يتضمن تجزيء (Binning) المتغيرات المستمرة إلى فئات أو فواصل متعددة. يمكن أن يساعد هذا في اكتشاف العلاقات غير الخطية بين المتغير والهدف، وكذلك التعامل مع القيم الشاذة أو القيم القصوى.
  • Transformer: يُستخدم المحولات لتطبيق تحويلات رياضية أو إحصائية على المتغيرات. يمكن أن تشمل التحويلات تربيع القيم، استخراج الجذر التربيعي، تحويلات لوغاريتمية، وأكثر من ذلك. تساعد المحولات في تعديل توزيع المتغير وجعله أكثر ملاءمة للنمذجة.
  • Normalize/Standardize: يشمل توحيد السلم (Normalization) وتوحيد الانحراف المعياري (Standardization) تحويل المتغيرات العددية إلى نطاق مشترك. يتم ذلك من خلال ضبط المتغيرات بحيث تسهم بشكل متساوي في النموذج وتمنع المتغير الواحد من السيطرة على الآخر.
  •  تحليل المكونات الرئيسية (PCA): باستخدام (PCA  (Principal Component Analysis

في feature engineering يمكننا تحسين أداء نماذج التعلم الآلي والتنبؤات من خلال تقليل الأبعاد والتخلص من الميزات غير المرغوب فيها أو غير المهمة والتركيز فقط على الميزات الرئيسية التي تحمل المعلومات الأكثر صلة.

اقباسات الخبراء عن ال Feature Engineering

  •  الـ Feature Engineering هو موضوع آخر لا يبدو أنه يستحق ورقات مراجعة أو كتب، ولا حتى فصولا في الكتب، ولكنه حقًا ضروري لنجاح التعلم الآلي.
  •  يعتمد نجاح التعلم الآلي بشكل كبير على هندسة الميزات التي يمكن أن يفهمها النموذج.
  • فعلاً، يعتمد نجاح جميع خوارزميات التعلم الآلي على كيفية تقديم البيانات.
  • الخوارزميات التي استخدمناها هي معيارية جدًا بالنسبة للمشاركين في منافسات Kaggle. قمنا بمعظم جهودنا في هندسة الميزات
  • إن Feature Engineering هو عملية تحويل البيانات الخام إلى ميزات تمثل بشكل أفضل المشكلة الأساسية للنماذج التنبؤية، مما يؤدي إلى تحسين دقة النموذج على البيانات غير المرئية.
  • إن Feature Engineering يحول المدخلات الخاصة بك إلى أشياء يمكن للخوارزمية فهمها.

أخيرًا وليس آخرا، تكنولوجيا الـ Automated Feature Engineering هي الموضوع الحار الحالي. ولكنها تتطلب موارد كبيرة. لقد بدأت بعض الشركات بالفعل في العمل على ذلك.

اشترك الآن بنشرة اقرأ-تِك الأسبوعية

لا تدع أي شيء يفوتك. واحصل على أحدث المقالات المميزة مباشرة إلى بريدك الإلكتروني وبشكل مجاني!