مقدمة في تعلم الآلة (Machine Learning): الفرق بين التعلم الخاضع وغير الخاضع للإشراف
مقدمة في تعلم الآلة ولماذا يعد أساسياً في عصر البيانات
أصبح Machine Learning أحد أكثر فروع تحليل البيانات تأثيراً في بناء الأنظمة الذكية، لأنه يسمح للحاسوب باكتشاف الأنماط واتخاذ قرارات مبنية على البيانات بدلاً من الاعتماد على قواعد ثابتة مكتوبة يدوياً. في البيئات الحديثة التي تتعامل مع ملايين السجلات، لا يكفي تخزين البيانات فقط، بل يجب تحويلها إلى نماذج تتعلم وتتحسن بمرور الوقت.
هذا المفهوم يرتبط مباشرة بما تم شرحه سابقاً في مدخل إلى علوم البيانات: كيف تحول الأرقام العشوائية إلى قرارات استراتيجية؟، لأن تعلم الآلة هو المرحلة التي تنتقل فيها المؤسسة من مجرد الوصف والتحليل إلى التنبؤ والتصنيف والتجميع الذكي. كما أن نجاح أي نموذج يعتمد على جودة البيانات، وهي نقطة لا تنفصل عن تنظيف البيانات (Data Cleaning): اكتشاف ومعالجة القيم المفقودة (Missing Values) ومعالجة البيانات المكررة والمشوهة (Duplicates & Outliers) باستخدام بايثون.
ينقسم تعلم الآلة في صورته الأساسية إلى نوعين رئيسيين: Supervised Learning وUnsupervised Learning. فهم الفرق بينهما ليس مسألة نظرية فقط، بل قرار معماري مهم يؤثر في طريقة جمع البيانات، تصميم ETL Pipeline، واختيار البنية المناسبة للمعالجة سواء على Pandas أو Spark.
ما هو التعلم الخاضع للإشراف؟
يعتمد Supervised Learning على بيانات تحتوي على مدخلات ومخرجات معروفة مسبقاً. بمعنى آخر، نقوم بتدريب النموذج على أمثلة تحمل الإجابة الصحيحة، ثم نطلب منه تعميم ما تعلمه على بيانات جديدة. هذا النوع مناسب عندما نملك عموداً هدفياً مثل فئة العميل، احتمال الاحتيال، أو قيمة مبيعات مستقبلية.
أشهر تطبيقاته تنقسم إلى مهمتين أساسيتين: Classification عندما يكون الهدف فئة، وRegression عندما يكون الهدف قيمة رقمية مستمرة. لذلك نرى هذا الأسلوب في أنظمة كشف الرسائل المزعجة، تقييم الجدارة الائتمانية، أو التنبؤ بالطلب الشهري.
كيف يعمل عملياً؟
يمر النموذج عادة بعدة مراحل تبدأ بجمع البيانات، ثم تنظيفها، ثم تحويلها إلى ميزات قابلة للتعلم. وهنا تظهر أهمية هندسة الميزات (Feature Engineering): كيف تستخرج بيانات جديدة من البيانات الحالية؟، لأن النموذج لا يفهم المعنى التجاري مباشرة، بل يتعامل مع تمثيل رقمي منظم.
- تحديد العمود الهدف
target. - اختيار الأعمدة التفسيرية
features. - تقسيم البيانات إلى تدريب واختبار.
- تدريب النموذج وقياس الدقة أو الخطأ.
- نشر النموذج داخل بيئة إنتاجية وربطه بخط البيانات.
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
df = pd.read_csv("customers.csv")
df = df.dropna()
X = df[["age", "income", "purchase_count"]]
y = df["churned"]
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
predictions = model.predict(X_test)
print("Accuracy:", accuracy_score(y_test, predictions))
في المثال السابق، يتعلم النموذج العلاقة بين خصائص العميل واحتمال مغادرته. هذا النمط شائع في قواعد بيانات العملاء، ويمكن تحضيره بسهولة بعد تعلم مكتبة Pandas (1): قراءة واستدعاء البيانات من ملفات CSV و Excel برمجياً ومكتبة Pandas (2): استكشاف هيكل البيانات وفهم DataFrame و Series.
ما هو التعلم غير الخاضع للإشراف؟
أما Unsupervised Learning فيتعامل مع بيانات لا تحتوي على إجابات جاهزة. هنا لا نطلب من النموذج التنبؤ بعمود هدف، بل اكتشاف البنية الخفية داخل البيانات مثل المجموعات المتشابهة، العلاقات المتكررة، أو الأبعاد الأكثر تفسيراً للتباين.
هذا النوع مفيد جداً عندما تمتلك المؤسسة كميات ضخمة من البيانات الخام غير المصنفة، وهو سيناريو شائع في بحيرات البيانات Data Lakes. من أشهر استخداماته: تجزئة العملاء، اكتشاف السلوك غير الطبيعي، ضغط الأبعاد، وتحليل النصوص أو الصور قبل بناء نماذج أكثر تعقيداً.
أشهر تقنياته
Clusteringلتجميع السجلات المتشابهة مثلK-Means.Dimensionality Reductionلتقليل عدد الأعمدة مع الحفاظ على أكبر قدر ممكن من المعلومات.Association Rulesلاكتشاف الأنماط المشتركة في سلوك الشراء.
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
df = pd.read_csv("customers_segments.csv")
X = df[["annual_income", "spending_score", "visits_per_month"]]
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
model = KMeans(n_clusters=3, random_state=42, n_init=10)
df["cluster"] = model.fit_predict(X_scaled)
print(df[["annual_income", "spending_score", "visits_per_month", "cluster"]].head())
هنا لا توجد إجابة مسبقة مثل عمود churned. بدلاً من ذلك، يقوم النموذج بتجميع العملاء إلى شرائح سلوكية، ما يفيد فرق التسويق والتحليلات التشغيلية في بناء عروض مختلفة لكل مجموعة.
الفرق الجوهري بين النوعين
الاختلاف الأساسي لا يكمن فقط في الخوارزميات، بل في طبيعة السؤال التحليلي نفسه. إذا كنت تعرف ما تريد التنبؤ به، فغالباً ستستخدم Supervised Learning. أما إذا كنت تستكشف البيانات بحثاً عن بنية أو تقسيمات خفية، فـ Unsupervised Learning هو الخيار المنطقي.
- البيانات الموسومة تناسب التعلم الخاضع للإشراف.
- البيانات غير الموسومة تناسب التعلم غير الخاضع للإشراف.
- الأول يركز على التنبؤ، والثاني يركز على الاكتشاف.
- قياس الأداء في الأول أوضح لأنه يعتمد على نتائج معروفة مسبقاً.
- الثاني يتطلب تفسيراً تحليلياً أعمق لنتائج التجميع أو اختزال الأبعاد.
في مشاريع
Big Data، القرار بين النوعين يجب أن يُتخذ مبكراً داخل تصميمData Architecture. إذا كانت عملية وسم البيانات مكلفة، فقد يكون من الأنسب البدء بتحليل غير خاضع للإشراف لاكتشاف الشرائح والأنماط، ثم استخدام نتائجه لبناء بيانات تدريب عالية الجودة لاحقاً.
دور هندسة البيانات في نجاح نماذج تعلم الآلة
كثيرون يربطون تعلم الآلة بالخوارزميات فقط، لكن الواقع العملي يثبت أن جودة البنية البيانية هي العامل الحاسم. النموذج الممتاز يفشل إذا كان خط الإدخال ضعيفاً، أو إذا كانت البيانات موزعة بين مصادر غير متجانسة دون توحيد. لهذا السبب تعتمد المشاريع الاحترافية على ETL أو ELT لضمان تنظيف البيانات وتوحيد أنواعها قبل التدريب.
عمليات مثل دمج وتوحيد الجداول (Merge, Join, Concat) لبناء قاعدة بيانات تحليلية شاملة والفلترة المتقدمة (Filtering & Sorting): استخراج رؤى دقيقة من ملايين السجلات والتجميع والتلخيص (Groupby & Aggregation): إنشاء تقارير إحصائية برمجية ليست مجرد تجهيزات أولية، بل خطوات بنيوية تحدد مدى صلاحية البيانات للنمذجة.
from pyspark.sql import SparkSession
from pyspark.sql.functions import col
from pyspark.ml.feature import VectorAssembler
from pyspark.ml.clustering import KMeans
spark = SparkSession.builder.appName("ml_pipeline").getOrCreate()
df = spark.read.csv("hdfs:///data/customer_events.csv", header=True, inferSchema=True)
clean_df = df.dropna().filter(col("annual_income") > 0)
assembler = VectorAssembler(
inputCols=["annual_income", "spending_score", "visits_per_month"],
outputCol="features"
)
feature_df = assembler.transform(clean_df)
kmeans = KMeans(k=4, seed=42, featuresCol="features")
model = kmeans.fit(feature_df)
predictions = model.transform(feature_df)
predictions.select("customer_id", "prediction").show(10)
عند استخدام
Apache Sparkمع بيانات ضخمة، احرص على تقليل عملياتshuffle، واختيار أنواع بيانات مناسبة، وتصفية السجلات مبكراً داخل خط المعالجة. هذه التفاصيل تؤثر مباشرة في زمن التدريب واستهلاك الذاكرة وتكلفة البنية السحابية.
متى تستخدم كل نوع؟
استخدم التعلم الخاضع للإشراف عندما:
- تمتلك بيانات تاريخية مع نتائج معروفة.
- تريد التنبؤ أو التصنيف بشكل مباشر.
- تحتاج إلى مؤشرات أداء قابلة للقياس مثل
AccuracyأوRMSE.
استخدم التعلم غير الخاضع للإشراف عندما:
- لا تمتلك تسميات أو فئات جاهزة.
- تريد فهم بنية البيانات قبل بناء نموذج تنبؤي.
- تبحث عن شرائح عملاء أو أنماط سلوكية مخفية.
خاتمة
يمثل Machine Learning نقلة نوعية من التحليل التقليدي إلى الأنظمة القادرة على التعلم من البيانات. الفرق بين Supervised Learning وUnsupervised Learning ليس مجرد تصنيف أكاديمي، بل إطار لاتخاذ قرارات صحيحة حول البيانات والبنية والأهداف التجارية.
كلما كانت بياناتك أنظف، وميزاتك أوضح، ومعمارية المعالجة أكثر كفاءة، زادت احتمالية بناء نموذج يحقق قيمة عملية حقيقية. لذلك فإن تعلم الآلة الناجح يبدأ قبل الخوارزمية نفسها: يبدأ من فهم البيانات، تنظيمها، وتحويلها إلى معرفة قابلة للتنفيذ.