1. مقدمة
في هذا الدرس سنقدّم مدخلًا مبسّطًا لفهم طريقتين أساسيتين في التعلّم الآلي باستخدام بايثون: الانحدار الخطي Linear Regression كمثال على التعلّم الموجّه، و خوارزمية K-Means Clustering كمثال على التعلّم غير الموجّه. الأول يتعلّم من بيانات تحمل الإجابات الصحيحة مسبقًا ليتمكّن من التنبؤ بقيم جديدة، بينما الثاني يكتشف الأنماط الخفية في البيانات غير المصنّفة ويجمعها في مجموعات متجانسة. سيمكنك هذا الدرس من التعرّف على كيفية عمل كل خوارزمية، والاختلاف الجوهري بينهما، وأهم تطبيقاتهما العملية.
2. الكلمات المفتاحية
-
الانحدار
الخطي (Linear Regression)
-
خوارزمية K-Means Clustering
-
التعلّم
الموجّه (Supervised Learning)
-
التعلّم
غير الموجّه (Unsupervised Learning)
-
البيانات
المصنّفة
-
البيانات
غير المصنّفة
- الذكاء الاصطناعي
3. التمهيد
في مجال التعلّم الآلي توجد طريقتان أساسيتان لبناء النماذج: التعلّم الموجّه ((Supervised Learning و التعلّم غير الموجّه (Unsupervised Learning).
التعلّم الموجّه يعني أن لدينا بيانات مُصنّفة مسبقًا، أي أنّ كل مثال في مجموعة التدريب مرتبط بالإجابة الصحيحة (الهدف). من خلال هذه الأمثلة يتدرّب النموذج على التنبؤ بقيم أو تصنيفات جديدة.
أمّا التعلّم غير الموجّه فيُستخدم عندما لا تكون لدينا إجابات جاهزة، بل نترك النموذج ليستكشف الأنماط والروابط الخفية في البيانات. خوارزمية K-Means Clustering مثال شائع على ذلك، حيث تقوم بتجميع البيانات المتشابهة في مجموعات دون أي إشراف مباشر.
4. الانحدار الخطي (Linear
Regression) – التعلّم الموجّه
تخيّل أنّ لديك جدولًا يربط بين مساحة المنزل وسعره. كلما كبرت
المساحة ارتفع السعر. النموذج هنا مثل طالب يتعلّم من أمثلة محلولة مسبقًا: مساحة
= 100م², السعر = 10,000$.
الفكرة الأساسية: الهدف هو إيجاد خط الانحدار
الأفضل الذي يصف العلاقة بين المدخلات (X) والمخرجات (y).
المعادلة الرياضية:
𝑦 = 𝑚𝑥 + 𝑏
حيث:
●
y: السعر المتوقع.
●
x: مساحة المنزل.
●
m: الميل (مدى تأثير المساحة
على السعر).
●
b: الثابت (سعر المنزل حتى
لو كانت المساحة صفر).
التقسيم بخطوات:
- جمع بيانات مصنّفة (مساحة ↔ سعر).
- إدخال البيانات إلى النموذج لتعلّم العلاقة.
- النموذج يرسم "خطًا أفضل" يمر بين النقاط.
- عند إدخال مساحة جديدة (مثلاً 120م²)
يعطي النموذج السعر المتوقع.
الأهمية: بما أنّ الإجابة (السعر الحقيقي) موجودة في بيانات التدريب، يمكن
للنموذج أن يتعلّم منها ويعمّم لتوقّع أسعار جديدة بدقة عالية.
5. التعلّم غير الموجّه K-Means Clustering
الفكرة الأساسية: تقسيم البيانات إلى K مجموعات بحيث تكون النقاط داخل المجموعة الواحدة متشابهة.
1. نختار عدد المجموعات K (مثال: 3).
2. نضع مراكز عشوائية (Centroids).
3. نعيّن كل نقطة بيانات لأقرب مركز.
4. نعيد حساب مركز كل مجموعة كمتوسط لنقاطها.
5. نكرّر الخطوات حتى تستقر المجموعات.
التطبيقات العملية: تقسيم العملاء حسب سلوك الشراء، تجميع المستندات، تجزئة الصور.
6. مثال واقعي باستخدام Python
المثال 1 – التعلّم الموجّه (الانحدار الخطي – Titanic)
نستخدم نموذجًا خطيًا للتنبؤ باحتمالية نجاة ركاب التايتانيك:
import pandas
as pd
import tensorflow as tf
# تحميل البيانات
dftrain =
pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/train.csv')
dfeval =
pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/eval.csv')
y_train =
dftrain.pop('survived')
y_eval = dfeval.pop('survived')
# تعريف الأعمدة (رقمية + فئوية)
feature_columns =
[tf.feature_column.numeric_column('age'),
tf.feature_column.numeric_column('fare'),
tf.feature_column.categorical_column_with_vocabulary_list('sex',
['male','female'])]
# إنشاء وتدريب النموذج
linear_est =
tf.estimator.LinearClassifier(feature_columns=feature_columns)
linear_est.train(input_fn=lambda:
tf.data.Dataset.from_tensor_slices((dict(dftrain), y_train)).batch(32))
# التقييم
result =
linear_est.evaluate(input_fn=lambda: tf.data.Dataset.from_tensor_slices((dict(dfeval),
y_eval)).batch(32))
print("دقة النموذج:", result['accuracy'])
النتيجة: النموذج تعلّم من بيانات مصنّفة (من نجا/لم ينجُ) وحقق دقة تقارب 74%.
المثال 2 – التعلّم غير الموجّه (K-Means Clustering)
ننشئ بيانات بسيطة ونستخدم K-Means لتجميعها في مجموعات:
import numpy as
np
import tensorflow as tf
# بيانات ثنائية الأبعاد
x_values =
np.array([[1,1],[1.5,2],[3,4],[5,7],[3.5,5],[4.5,5],[3.5,4.5]])
# نموذج KMeans مع مجموعتين
kmeans =
tf.compat.v1.estimator.experimental.KMeans(num_clusters=2,
use_mini_batch=False)
kmeans.train(input_fn=lambda:
tf.data.Dataset.from_tensor_slices(x_values).batch(2))
print("مراكز المجموعات:",
kmeans.cluster_centers())
النتيجة: الخوارزمية قسمت البيانات تلقائيًا إلى مجموعتين متجانستين حسب
التشابه: [[1.25
1.5] [4.0 5.125]]
7. اختبار سريع (MCQ 2 + إجابات)
السؤال 1:
ما الفرق الأساسي
بين التعلّم الموجّه والتعلّم غير الموجّه؟
●
أ) التعلّم الموجّه يحتاج بيانات
مصنّفة، بينما غير الموجّه يعمل على بيانات غير مصنّفة
●
ب) التعلّم
الموجّه أسرع دائمًا من غير الموجّه
●
ج) التعلّم
غير الموجّه أدق دائمًا من الموجّه
السؤال 2:
أي من
الخوارزميات التالية يُستخدم عادة للتجميع (Clustering)؟
●
أ) Linear Regression
●
ب) K-Means
●
ج) Logistic Regression
8. المصادر
- Google Colab: TensorFlow Core Learning Algorithms (Colab)
- وثائق TensorFlow الرسمية: https://www.tensorflow.org
- Google AI – أساسيات التعلم الآلي: https://ai.google/education