الوحدة 1 · ما هو تعلّم الآلة
التعلّم من الأمثلة
14 دقراءة 3 داختر بحكمة
الدرس في لمحة
اشرح ما الذي يفعله تعلّم الآلة بشكل مختلف عن القواعد المكتوبة يدويًا، وميّز بين المسائل الموجَّهة وغير الموجَّهة، وصِف سؤال انقطاع العملاء الذي تجيب عنه هذه الدورة.
لا فيديو هنا، بل الشيء الحقيقي: درس مكتوب وأمثلة قابلة للتشغيل واختبار وتدريب.
لدى Cartwheel، المتجر الإلكتروني الذي ستعمل معه في هذه الدورة، مشكلة يعرفها كل متجر لا يعتمد على الاشتراكات: العملاء يبتعدون دون أن يودّعوا. لا أحد يُلغي شيئًا؛ هم فقط يتوقفون عن الطلب. يريد فريق التسويق إرسال عرض استرجاع إلى العملاء الذين أوشكوا على الانقطاع، قبل أن يرحلوا فعلًا. لكن أيّ العملاء؟
يمكنك كتابة قاعدة: “إذا لم يطلب العميل شيئًا منذ 90 يومًا، أرسل له العرض”. هذه بداية جيدة، وستقيسها بشكل صحيح في درس لاحق. لكن انقطاع العملاء (churn) يعتمد على أكثر من رقم واحد. العميل الذي لديه خمسة عشر طلبًا وغاب شهرًا يختلف عن مشترٍ لمرة واحدة غاب شهرًا. وكتابة قواعد لكل تركيبة من مدة العضوية وعدد الطلبات والإنفاق والقسائم وتذاكر الدعم تخرج عن السيطرة بسرعة.
قواعد مستخلصة من الأمثلة
يقلب تعلّم الآلة (machine learning) المهمة رأسًا على عقب. فبدل أن تكتب القواعد بنفسك، تجمع أمثلة تعرف إجابتها مسبقًا، وتجد خوارزمية ما قاعدةً تناسبها. بالنسبة إلى Cartwheel، هذا يعني العملاء السابقين، وكيف كانت بياناتهم في تاريخ معيّن، وهل طلبوا مرة أخرى خلال الـ 90 يومًا التالية.
تُسمّى القاعدة المتعلَّمة نموذجًا (model). وبمجرد أن يصبح لديك، تعطيه عملاء جددًا فيتنبأ بإجابتهم. هذه هي الفكرة كلها؛ وبقية الدورة تدور حول تنفيذها جيدًا ومعرفة متى تستحق التنبؤات الثقة.
إليك الجدول الذي ستقضي معه معظم الدورة. كل صف عميل، وكل عمود معلومة معروفة عنه في 30 سبتمبر 2025، والعمود churned يسجّل ما حدث بعد ذلك.
import pandas as pd
churn = pd.read_csv("churn.csv")
print(churn.shape)
print(churn[["orders", "days_since_last_order", "support_tickets", "churned"]].head())
print("Churn rate:", round(churn["churned"].mean(), 3))لدينا 398 عميلًا، 55% منهم لم يطلبوا مرة أخرى خلال 90 يومًا. الأعمدة التي تتنبأ انطلاقًا منها هي الـ features (الخصائص)؛ والعمود الذي تتنبأ به هو الـ target (الهدف)، ويُسمّى أيضًا الـ label.
أنواع التعلّم
التعلّم الموجَّه (supervised learning) فيه عمود هدف. الأمثلة تأتي مع إجاباتها، ويتعلّم النموذج الربط بين الـ features والإجابة. وله نوعان بحسب الهدف:
- التصنيف (classification): الهدف فئة. هل سينقطع هذا العميل، نعم أم لا؟ هل هذا الورم حميد أم خبيث؟ ما الرقم المكتوب في هذه الصورة؟
- الانحدار (regression): الهدف رقم. كم سينفق هذا العميل في العام القادم؟ إلى أيّ حدّ سيتقدّم المرض؟
التعلّم غير الموجَّه (unsupervised learning) لا هدف فيه. تطرح على البيانات سؤالًا أكثر مرونة: أيّ العملاء يشبه بعضهم بعضًا؟ هل يمكن تلخيص ثلاثين عمودًا في عمودين؟ ستتعرّف على العنقدة (clustering) وPCA، وهما الأداتان الأساسيتان هنا، في القسم 5.
كيف تسير هذه الدورة
ستبني كل شيء في scikit-learn، مكتبة Python المعيارية لتعلّم الآلة الكلاسيكي، وستشغّله في المتصفّح. كل قسم يضيف طبقة:
- سير العمل، وتقسيم بيانات التدريب والاختبار، وواجهة scikit-learn، وخطوط الأساس.
- الانحدار على مجموعة بيانات طبية، مع رسم دالة الخسارة والـ gradient descent.
- التصنيف على بيانات انقطاع العملاء: الانحدار اللوجستي والأشجار والنماذج المجمّعة والمقاييس المهمة فعلًا.
- العادات التي تُبقيك صادقًا: التحقق المتقاطع، والـ pipelines، والضبط، وتسرّب البيانات.
- العنقدة، والشبكات العصبية، وموقع النماذج اللغوية الكبيرة، والإنصاف، والإطلاق.
عادة واحدة تسري في كل ذلك: قبل أن تصدّق أي نتيجة، تسأل “مقارنةً بماذا؟”. نموذج بدقة 73% يبدو جيدًا حتى تعرف أن تخمين “منقطع” لكل العملاء يحقق 55%، وأن قاعدة من سطر واحد تحقق 72%. يبدأ الدرس التالي بأهم خطوة في هذه العادة: أن تضع جزءًا من البيانات جانبًا لتقيس بأمانة.
أهم النقاط
- يأخذ تعلّم الآلة أمثلة من مدخلات معروفة الإجابة، وينتج دالة تتنبأ بالإجابة لمدخلات جديدة.
- يحتاج التعلّم الموجَّه إلى عمود هدف معروف القيم (label)؛ أما التعلّم غير الموجَّه فيبحث عن بنية في بيانات بلا هدف.
- التنبؤ برقم هو انحدار (regression)؛ والتنبؤ بفئة هو تصنيف (classification).
- إذا كانت قاعدة قصيرة أو استعلام SQL يجيب عن السؤال بما يكفي، فلا حاجة إلى نموذج.