هذه الصفحة تعمّق في أكثر نمطين شيوعًا في تعلّم الآلة. بعد نظرة على أنواع التعلّم التي أعطتك الصورة الكبيرة، هنا نقارن النوعين وجهًا لوجه.
الفرق الجوهري في لمحة
| التعلّم الموجَّه | التعلّم غير الموجَّه | |
|---|---|---|
| البيانات | (X, y) — مُسمّاة | X فقط |
| هدف النموذج | f(X) ≈ y | إيجاد بنية في X |
| ما "يتعلّمه" النموذج | ربط المدخل بالمخرَج | الأنماط الخفية في البيانات |
| القياس | دقّة التنبؤ مقابل y | جودة التمثيل/التجميع |
| مثال | مصنّف بريد مزعج | تجميع عملاء |
التعلّم الموجَّه (Supervised Learning) بتفصيل
الإعداد
# لديك 1000 بريد مع تصنيف: مزعج (1) أو عادي (0)
X = emails_features # مصفوفة (1000, n_features)
y = [0, 1, 0, 1, ...] # متجه (1000,)
# تدريب النموذج
model = LogisticRegression()
model.fit(X, y)
# استخدامه
new_email = [features_of_new_email]
prediction = model.predict(new_email) # 0 أو 1
تقسيمات داخلية
حسب نوع y:
- الانحدار (Regression) — y رقم مستمر: أسعار، درجات حرارة، أعمار.
- التصنيف (Classification) — y فئات: مزعج/عادي، قطة/كلب، نوع الورم.
حسب عدد الفئات في التصنيف:
- ثنائي (Binary): فئتان (spam/ham).
- متعدد (Multiclass): 3+ فئات (MNIST 0-9).
خوارزميات رئيسية
- Linear Regression, Ridge, Lasso
- Logistic Regression
- Decision Trees, Random Forest, Gradient Boosting
- SVM (Support Vector Machines)
- K-Nearest Neighbors (KNN)
- Neural Networks (لكل أنواع البيانات)
متى تختار supervised؟
- ✅ لديك بيانات مُسمّاة كافية (الحد الأدنى يختلف حسب الخوارزمية).
- ✅ تعرف الإجابة المرجوة بوضوح.
- ✅ المسألة تندرج تحت "توقّع رقم" أو "صنّف إلى فئات معروفة".
التحدّي الأكبر
الحصول على بيانات مُسمّاة. في الواقع، التصنيف مكلّف وبطيء — هذا ما يُدعى data labeling bottleneck.
التعلّم غير الموجَّه (Unsupervised Learning) بتفصيل
الإعداد
# لديك 1000 زبون، بدون تصنيف
# الميزات: العمر، الإنفاق الشهري، عدد الزيارات
X = customer_features # مصفوفة (1000, 3)
# تدريب النموذج
kmeans = KMeans(n_clusters=3)
clusters = kmeans.fit_predict(X)
# النتيجة: كل عميل انتمى لمجموعة
print(clusters) # [0, 2, 1, 0, 2, ...]
ثلاثة استخدامات عملية
1. التجميع (Clustering) — تقسيم البيانات لمجموعات متشابهة.
from sklearn.cluster import KMeans
clusters = KMeans(n_clusters=5, random_state=42).fit_predict(X)
2. تقليل الأبعاد (Dimensionality Reduction) — اختزال الميزات.
from sklearn.decomposition import PCA
X_reduced = PCA(n_components=2).fit_transform(X)
# 100 ميزة → 2 ميزة مع الاحتفاظ بأكبر قدر من التباين
3. اكتشاف الحالات الشاذة (Anomaly Detection) — رصد النقاط الغريبة.
from sklearn.ensemble import IsolationForest
outliers = IsolationForest(contamination=0.01).fit_predict(X)
# -1 للشاذ، 1 للطبيعي
خوارزميات رئيسية
- K-Means، DBSCAN، Hierarchical Clustering
- PCA، t-SNE، UMAP
- Isolation Forest، One-Class SVM
متى تختار unsupervised؟
- ✅ لا تملك تسميات، أو التصنيف مكلّف.
- ✅ تريد استكشاف بنية البيانات قبل أي نموذج آخر.
- ✅ المهمة هي التجميع، التصوير، أو الرصد بدون إجابة مرجعية.
التحدّي الأكبر
القياس والتقييم أصعب بكثير. لا توجد إجابة "صحيحة" للمقارنة.
Semi-supervised Learning — الجسر بين الاثنين
في الواقع، كثير من البيانات تكون شبه مُسمّاة:
- 1000 بريد مُصنَّف (مزعج/عادي).
- 100,000 بريد بدون تصنيف.
Semi-supervised Learning يستخدم كلا النوعين:
- يدرّب نموذج أولي على البيانات المُسمّاة.
- يستخدمه لتصنيف البيانات غير المُسمّاة (pseudo-labeling).
- يدرّب نموذج أكبر على البيانات الموسّعة.
Self-supervised Learning — النمط الذي غيّر العالم
هذا النمط هو أساس النماذج اللغوية الكبيرة:
- النموذج يأخذ نصًا كبيرًا.
- يخفي جزءًا من النص.
- يتنبأ بالجزء المخفي.
النص الأصلي: "القطط تحب ___ و اللعب"
المهمة: تنبّأ بالكلمة المخفية ("الحليب")
الفرق عن unsupervised الكلاسيكي: المهمة "تأتي من البيانات نفسها"، لا من تصنيف بشري.
مقارنة الأداء والمستخدم
| الحالة | supervised | unsupervised |
|---|---|---|
| دقّة التنبؤ | عالية (إذا كانت البيانات كافية) | غير قابلة للقياس مباشرة |
| العمل اليدوي | يحتاج تصنيف | لا يحتاج |
| قابلية التفسير | عالية (للخوارزميات البسيطة) | متوسّطة |
| حجم البيانات | يحتاج كثير مُسمّى | يعمل مع كثير غير مُسمّى |
| تطبيقات عملية | التصنيف، التوقع | التجزئة، الكشف عن الشذوذ |
كيف تختار عمليًا؟
1. هل لديك تسميات؟
├─ نعم، كثيرة → Supervised
├─ نعم، قليلة + كثير بدون → Semi-supervised
└─ لا → Unsupervised
2. ما الهدف؟
├─ توقّع قيمة معروفة → Regression (Supervised)
├─ صنّف إلى فئات → Classification (Supervised)
├─ اكتشف بنية → Clustering (Unsupervised)
└─ اكتشف حالات شاذة → Anomaly Detection (Unsupervised)
أخطاء شائعة
- محاولة supervised بـ "قليل" من البيانات المُسمّاة: النتيجة تكون سيّئة. إما زِد البيانات أو استخدم semi-supervised.
- اعتبار unsupervised كـ "محاولة supervised بدون بيانات": لا — له خوارزمياته وأهدافه الخاصة.
- تطبيق K-Means بدون فهم البيانات: K-Means يفترض مجموعات كروية الشكل وقد يعطي نتائج مضلّلة لتوزيعات مختلفة.
- مقارنة supervised و unsupervised بمقاييس مختلفة: ليس عدلاً — لكل نمط مقاييسه الخاصة.
الخطوات التالية
- الانحدار والتصنيف — تعمّق في أكثر supervised استخدامًا.
- Overfitting و Bias-Variance — مشكلة كلاسيكية في supervised.
- نظرة على أنواع التعلّم — الصورة الأكبر.
💡 لاحقًا في المسار: تعلّم المعزَّز (RL) في وحدة متخصّصة.