مدخل تعلم الآلة: المتغيرات والهدف
من وصف الماضي إلى التنبؤ بالمستقبل: ما المتغيّرات، وما الهدف؟ ⏱ نحو 40 دقيقة.
- تفرّق بين البرمجة التقليدية وتعلّم الآلة.
- تحدّد المتغيّرات والهدف والنموذج.
- تميّز الانحدار من التصنيف.
- تفصل
Xعنyدون تسريب الهدف.
١من الوصف إلى التنبؤ
حتى الآن وصفنا الماضي: كم زائرًا؟ أي صفحة أسوأ؟ تعلّم الآلة ينقلنا خطوة: التنبؤ بالمستقبل. بدل أن نكتب القاعدة بأيدينا، نعطي الحاسوب أمثلةً سابقة فيتعلّم منها النمط، ثم يطبّقه على حالةٍ جديدة.
| البرمجة التقليدية | تعلّم الآلة | |
|---|---|---|
| المدخل | بيانات + قاعدة | بيانات + أمثلة بالإجابات |
| المخرج | إجابة | قاعدة (نموذج) يُطبَّق لاحقًا |
| المثال | if زيارات>1000: مهمّ | أعطِ أمثلة «مهمّ/لا»، فيتعلّم الحدّ |
٢المصطلحات الثلاثة
كل مسألة تعلّمٍ مُشرَف تتكوّن من:
| المصطلح | المعنى | مثال (التنبؤ بالشراء) |
|---|---|---|
المتغيّرات Features (X) | المدخلات التي نعرفها | مدة الجلسة، عدد الصفحات |
الهدف Target (y) | ما نريد التنبؤ به | هل اشترى؟ (نعم/لا) |
| النموذج Model | ما يتعلّم العلاقة X←y | انحدار، تصنيف… |
import pandas as pddf = pd.DataFrame({ "seconds": [8, 120, 5, 240, 40, 180], "pages": [1, 4, 1, 6, 2, 5], "bought": [0, 1, 0, 1, 0, 1],})# فصل المتغيّرات عن الهدفX = df[["seconds", "pages"]] # ما نعرفهy = df["bought"] # ما نتنبّأ بهprint("شكل X:", X.shape, "| شكل y:", y.shape)
القاعدة الذهبية: X لا يحوي الهدف أبدًا. لو وضعت bought داخل X، لـ«غشّ» النموذج وتعلّم لا شيء مفيد.
٣نوعا التعلّم المُشرَف
| النوع | الهدف | أمثلة ويب |
|---|---|---|
| الانحدار Regression | رقم متّصل | كم دقيقة سيبقى؟ كم سينفق؟ |
| التصنيف Classification | فئة | هل سيغادر؟ هل سيشتري؟ |
الفرق في نوع الهدف: رقمٌ ← انحدار (الدرس 21)، فئةٌ ← تصنيف (الدرس 22). الخطوات بينهما متشابهة، وهذا ما يجعل scikit-learn قويًّا: واجهةٌ واحدة لكل النماذج.
توقّع وتحقّق
المدخلات التي نعرفها تسمّى:
ما نريد التنبؤ به يسمّى:
التنبؤ بفئة (نعم/لا) هو:
يجب ألّا يحوي X:
الخلاصة
- تعلّم الآلة يستنبط القاعدة من أمثلةٍ سابقة بدل كتابتها يدويًّا.
- المتغيّرات
Xما نعرفه، والهدفyما نتنبّأ به، والنموذج يتعلّم العلاقة. - الهدف رقمٌ ← انحدار، أو فئةٌ ← تصنيف؛ والخطوات متشابهة.
- لا تضع الهدف داخل
Xأبدًا — تسريبٌ يُفسد كل شيء.
تحدٍّ برمجي: افصل X و y
متوسطمن الجدول، افصل المتغيّرات (عمودا minutes وclicks) عن الهدف (left)، واطبع شكل X وعدد عناصر y.
- أنشئ
Xبالعمودين، وyبعمود الهدف. - اطبع
X.shapeثمlen(y).
ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:
import pandas as pddf = pd.DataFrame({ "minutes": [1, 5, 2, 8, 3], "clicks": [2, 9, 3, 14, 5], "left": [1, 0, 1, 0, 1],})# افصل X (minutes, clicks) عن y (left) واطبع X.shape ثم len(y)
💡 تلميح 1
X = df[["minutes", "clicks"]] وy = df["left"].💡 تلميح 2
X.shape وlen(y).حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.
import pandas as pddf = pd.DataFrame({ "minutes": [1, 5, 2, 8, 3], "clicks": [2, 9, 3, 14, 5], "left": [1, 0, 1, 0, 1],})X = df[["minutes", "clicks"]]y = df["left"]print(X.shape)print(len(y))