التعلّم الموجّه وغير الموجّه
ليست كل مشكلات تعلّم الآلة متشابهة. أحياناً عندك أمثلة معروفة الإجابة وتريد أن يتعلم النموذج منها، مثل رسائل بريد عليها علامة «مزعجة» أو «سليمة». وأحياناً عندك بيانات بلا إجابات، وتريد أن يكتشف النموذج فيها أنماطاً لم تخطر ببالك. هذا هو الفرق بين النوعين الكبيرين: التعلّم الموجّه والتعلّم غير الموجّه. وفي هذا الدرس سترى مثالاً قصيراً حقيقياً لكل نوع.
التعلّم الموجّه (Supervised Learning)
Section titled “التعلّم الموجّه (Supervised Learning)”النموذج يتعلم من بيانات معها الإجابات الصحيحة (التسميات). كلمة «موجّه» تعني أن هناك «معلماً» يخبره أثناء التدريب: «هذا صحيح، وهذا خطأ».
مثل طالب يذاكر من كتاب تمارين محلولة: يرى السؤال والإجابة معاً، فيتعلم الطريقة، ثم يحل أسئلة جديدة وحده.
وللتعلّم الموجّه نوعان حسب شكل الإجابة:
الانحدار (Regression): توقع رقم
Section titled “الانحدار (Regression): توقع رقم”عندما تكون الإجابة رقماً: سعر، ودرجة حرارة، وعدد مبيعات. لنعد لمثال الشقق من الدرس الأول، لكن هذه المرة بنموذج حقيقي من scikit-learn:
from sklearn.linear_model import LinearRegression
X = [[50], [80], [100], [120]] # المساحة بالمترy = [520, 790, 1010, 1180] # السعر بالألف
reg = LinearRegression()reg.fit(X, y)print(round(reg.predict([[90]])[0]))899LinearRegression: نموذج الانحدار الخطي، يرسم أفضل خط مستقيم يمر قرب النقاط.fit(X, y): التدريب، أي تعلّم العلاقة بين المساحة والسعر.predict([[90]]): التوقع لشقة جديدة مساحتها 90 متراً: حوالي 899 ألفاً.
لاحظ أن X قائمة من القوائم: كل عينة قائمة بميزاتها، حتى لو كانت ميزة واحدة.
التصنيف (Classification): توقع فئة
Section titled “التصنيف (Classification): توقع فئة”عندما تكون الإجابة فئة من مجموعة محددة: مزعجة أو سليمة، وقطة أو كلب، وناجح أو راسب. مثال: تمييز التفاح من البرتقال بالوزن ونعومة القشرة:
from sklearn.neighbors import KNeighborsClassifier
# [الوزن بالجرام، نعومة القشرة من 1 إلى 10]X = [[150, 9], [170, 8], [140, 9], [130, 3], [120, 2], [140, 3]]y = ['تفاح', 'تفاح', 'تفاح', 'برتقال', 'برتقال', 'برتقال']
clf = KNeighborsClassifier(n_neighbors=3)clf.fit(X, y)print(clf.predict([[160, 8], [125, 2]]))['تفاح' 'برتقال']خوارزمية الجيران الأقرب (K-Nearest Neighbors) فكرتها بسيطة جداً: لتصنيف ثمرة جديدة، انظر إلى أقرب 3 ثمار لها في بيانات التدريب، وخذ رأي الأغلبية. الثمرة الأولى ثقيلة وناعمة فتشبه التفاح، والثانية خفيفة وخشنة فتشبه البرتقال. كأنك تقول: «قل لي من جيرانك أقل لك من أنت».
| الانحدار | التصنيف | |
|---|---|---|
| الإجابة | رقم متصل | فئة من مجموعة |
| أمثلة | سعر، وحرارة، وعمر | مزعج أو سليم، ومرض أو لا |
التعلّم غير الموجّه (Unsupervised Learning)
Section titled “التعلّم غير الموجّه (Unsupervised Learning)”البيانات هنا بلا تسميات: لا أحد يخبر النموذج بالإجابة. مهمته أن يكتشف بنية خفية في البيانات بنفسه.
مثل أن تعطي طفلاً صندوقاً فيه أزرار مختلطة، دون أي تعليمات، فيرتبها وحده في مجموعات: الأزرار الكبيرة معاً، والصغيرة معاً، والحمراء معاً. لم يخبره أحد بالمجموعات، لكنه اكتشفها.
التجميع (Clustering)
Section titled “التجميع (Clustering)”أشهر مهام التعلّم غير الموجّه: تقسيم البيانات إلى مجموعات متشابهة. مثلاً، متجر يريد فهم أنواع عملائه:
from sklearn.cluster import KMeans
# [عدد الزيارات الشهرية، متوسط الشراء بالجنيه]customers = [[2, 50], [3, 60], [2, 55], [20, 400], [22, 450], [19, 420]]
km = KMeans(n_clusters=2, random_state=0, n_init=10)labels = km.fit_predict(customers)print(labels)[1 1 1 0 0 0]لم نعطِ النموذج أي تسميات، ومع ذلك اكتشف وحده مجموعتين: العملاء الثلاثة الأوائل (زيارات قليلة وشراء قليل) في مجموعة، والثلاثة الآخرون (زيارات كثيرة وشراء كبير) في مجموعة أخرى.
KMeans: خوارزمية تقسم البيانات إلىn_clustersمجموعة، بحيث يكون كل عنصر قريباً من «مركز» مجموعته.- الأرقام
0و1مجرد أسماء للمجموعات، وليس لها معنى أو ترتيب. ونحن البشر نفسرها بعد ذلك: «هذه مجموعة العملاء المميزين، وتلك مجموعة العملاء العاديين».
بعدها يستطيع المتجر أن يرسل عروضاً مختلفة لكل مجموعة.
كيف تختار؟
Section titled “كيف تختار؟”اسأل نفسك سؤالين:
- هل عندي إجابات صحيحة لأمثلة سابقة؟ نعم ← تعلّم موجّه. لا ← تعلّم غير موجّه.
- في التعلّم الموجّه: هل الإجابة رقم أم فئة؟ رقم ← انحدار. فئة ← تصنيف.
| المشكلة | النوع |
|---|---|
| توقع درجة الحرارة غداً | موجّه: انحدار |
| هل هذه المعاملة البنكية احتيال؟ | موجّه: تصنيف |
| تقسيم قراء موقع لمجموعات حسب اهتماماتهم | غير موجّه: تجميع |
| التعرف على الحرف المكتوب بخط اليد | موجّه: تصنيف |
جرّب بنفسك
Section titled “جرّب بنفسك”ثبّت مكتبة scikit-learn بالأمر pip install scikit-learn، ثم:
- شغّل مثال الشقق، وتوقع سعر شقة 150 متراً. هل النتيجة منطقية؟
- في مثال الفاكهة، أضف ثمرة جديدة
[135, 5]في المنتصف. ماذا يتوقع النموذج؟ ولماذا قد تكون هذه الحالة صعبة؟ - في مثال العملاء، غيّر
n_clustersإلى 3، ولاحظ كيف تتغير المجموعات. - صنّف هذه المشكلات: توقع عدد زوار موقع غداً، واكتشاف مجموعات من الأغاني المتشابهة، وتشخيص صورة أشعة.
أخطاء شائعة
Section titled “أخطاء شائعة”- الخلط بين الانحدار والتصنيف: إذا كانت الإجابة فئات، فالمشكلة تصنيف حتى لو كُتبت الفئات كأرقام مثل 0 و 1.
- تفسير أرقام المجموعات كترتيب: في التجميع، المجموعة
1ليست «أفضل» أو «أكبر» من0. - الثقة بنموذج تدرب على 6 أمثلة: أمثلة الدرس صغيرة للفهم فقط، والنماذج الحقيقية تحتاج مئات أو آلاف الأمثلة.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
تريد نموذجاً يتوقع هل سيلغي العميل اشتراكه أم لا، ولديك بيانات عملاء سابقين وما حدث لهم. ما نوع المشكلة؟
لدينا إجابات سابقة فهو موجّه، والإجابة فئة (يلغي أو لا يلغي) فهو تصنيف.
سؤال
ما الذي يميز التعلّم غير الموجّه؟
في التعلّم غير الموجّه لا توجد إجابات صحيحة مسبقاً، والنموذج يكتشف البنية الخفية مثل المجموعات.
الخلاصة
Section titled “الخلاصة”- التعلّم الموجّه يتعلم من أمثلة معها إجاباتها، وغير الموجّه يكتشف الأنماط في بيانات بلا إجابات.
- الانحدار يتوقع رقماً، مثل
LinearRegressionلسعر الشقة. - التصنيف يتوقع فئة، مثل
KNeighborsClassifierلتمييز الفاكهة. - التجميع يقسم البيانات لمجموعات متشابهة، مثل
KMeansلأنواع العملاء. - في scikit-learn الخطوات واحدة تقريباً: أنشئ النموذج، ثم
fit، ثمpredict.