Machine Learning: مقدمة في تعلم الآلة ونظام Python البيئي

تعلم الآلة أشبه بأن تعطي الكمبيوتر زوجًا من "العيون التي تكشف الأنماط" — فأنت لا تخبره بالقواعد، بل يتعلمها بنفسه من البيانات.

1. ما ستتعلمه


2. قصة حقيقية لعالم بيانات

(1) المشكلة: التنبؤ في Excel كبد ثروة لـ Bob

يدير Bob منصة تجارة إلكترونية عابرة للحدود بمعاملات شهرية تتجاوز 5 ملايين دولار أمريكي. في نهاية كل ربع، يحتاج إلى التنبؤ بمبيعات الشهر القادم لتخطيط المخزون وميزانية الإعلانات. كان يعتمد في السابق على توقعات يدوية بخطوط اتجاه في Excel، وصلت نسبة الخطأ فيها إلى 25%. في إحدى المرات، أدى توقع سيئ إلى 50 ألف دولار من المخزون الزائد. أدرك: الحدس وخطوط الاتجاه البسيطة لا تستطيع التعامل مع عوامل معقدة، مثل المواسم الترويجية وتغيرات سلوك المستخدمين.

(2) الحل من تعلم الآلة

يمكن لتعلم الآلة اكتشاف الأنماط المعقدة تلقائيًا في البيانات التاريخية — التقلبات الموسمية، تراجع فعالية الإعلانات، دورات شراء المستخدمين — وتوليد توقعات أكثر دقة بكثير.

PYTHON
# سير عمل بسيط للتنبؤ بـ ML
import pandas as pd
from sklearn.linear_model import LinearRegression

# تحميل بيانات المبيعات التاريخية
data = pd.read_csv("sales_history.csv")
X = data[["ad_spend", "traffic", "last_month_sales"]]
y = data["monthly_revenue"]

# تدريب النموذج وإجراء التنبؤ
model = LinearRegression()
model.fit(X, y)
next_month_pred = model.predict([[50000, 120000, 380000]])
print(f"الإيرادات المتوقعة: {next_month_pred[0]:.0f} دولار")

(3) النتيجة: انخفض خطأ التنبؤ من 25% إلى 8%

بعد أن استبدل Bob جداول Excel بتعلم الآلة، انخفض خطأ التنبؤ من 25% إلى 8%، مما وفّر حوالي 80 ألف دولار من تكاليف المخزون كل ربع. تبنت Alice نفس النهج للسوق الأمريكية، وفعل Charlie الشيء نفسه للسوق الأوروبية.


3. تعريف تعلم الآلة ونماذجه الثلاثة

تعلم الآلة هو الانضباط الذي يمكّن أجهزة الكمبيوتر من تعلم الأنماط من البيانات، بدلاً من الاعتماد على قواعد مشفرة يدويًا.

100%
graph TB
    ML[تعلم الآلة] --> SL[التعلم المُوجَّه]
    ML --> UL[التعلم غير المُوجَّه]
    ML --> RL[التعلم المعزز]
    SL --> REG[الانحدار<br/>التنبؤ بقيم مستمرة]
    SL --> CLS[التصنيف<br/>التنبؤ بفئات]
    UL --> CLT[التجميع<br/>إيجاد مجموعات طبيعية]
    UL --> DR[تخفيض الأبعاد<br/>تبسيط الميزات]
    RL --> OP[التحسين<br/>تعظيم المكافأة]

(1) التعلم المُوجَّه

(2) التعلم غير المُوجَّه

(3) التعلم المعزز

البُعد التعلم المُوجَّه التعلم غير المُوجَّه التعلم المعزز
متطلبات البيانات يتطلب تسميات لا يتطلب تسميات يتطلب إشارات مكافأة
الخوارزميات النموذجية LinearRegression، SVM، XGBoost K-Means، PCA، DBSCAN Q-Learning، PPO
المخرجات القيم/الفئات المتوقعة تجميعات/أبعاد مخفضة السياسة المثلى
سيناريوهات الأعمال التنبؤ بالمبيعات، التنبؤ بالإلغاء تحديد ملفات المستخدمين، كشف الشذوذ التسعير الديناميكي، التوصيات
تكلفة البيانات عالية (التوسيم اليدوي) منخفضة متوسطة (تصميم المكافأة)

4. نظام Python البيئي لتعلم الآلة في لمحة

Python هي اللغة المفضلة لتعلم الآلة، مع نظام بيئي كامل من سلسلة الأدوات.

100%
graph LR
    BASE[Python] --> NUMPY[NumPy<br/>الحوسبة العددية]
    BASE --> PANDAS[Pandas<br/>معالجة البيانات]
    NUMPY --> SKLEARN[Scikit-learn<br/>تعلم آلة كلاسيكي]
    NUMPY --> PYTORCH[PyTorch<br/>التعلم العميق]
    PANDAS --> VIZ[Matplotlib/Seaborn<br/>التصور]
    SKLEARN --> MLFLOW[MLflow<br/>تتبع التجارب]
    PYTORCH --> MLFLOW

(1) نظرة عامة على الأدوات الرئيسية

الأداة الدور القدرات الرئيسية الدرس في هذا البرنامج التعليمي
NumPy أساس الحوسبة العددية ndarray، الجبر الخطي، البث الدرس 2
Pandas معالجة البيانات الأساسية DataFrame، التنظيف، التجميع، السلاسل الزمنية الدرس 3
Matplotlib/Seaborn تصور البيانات المخططات الخطية، الخرائط الحرارية، مخططات التوزيع الدرس 4
Scikit-learn مكتبة خوارزميات تعلم آلة كلاسيكي API موحدة fit/predict/transform الدرس 5
PyTorch إطار التعلم العميق Tensor، autograd، nn.Module الدروس 16-17
XGBoost/LightGBM GBDT على مستوى الإنتاج Boosting بالتدرج عالي الأداء الدرس 13
MLflow إدارة تجارب ML التتبع، السجل، النشر الدرس 19

▶ مثال: التحقق من بيئة Python لـ ML

PYTHON
# التحقق من حزم ML المثبتة وإصداراتها
import importlib

packages = ["numpy", "pandas", "matplotlib", "sklearn", "torch", "xgboost", "mlflow"]

for pkg in packages:
    try:
        mod = importlib.import_module(pkg)
        version = getattr(mod, "__version__", "unknown")
        print(f"{pkg:15s} : {version}")
    except ImportError:
        print(f"{pkg:15s} : غير مثبت")

المخرجات:

TEXT
numpy           : 1.26.4
pandas          : 2.2.0
matplotlib      : 3.8.3
sklearn         : 1.4.0
torch           : 2.2.0
xgboost         : 2.0.3
mlflow          : 2.10.0

▶ مثال: تثبيت سلسلة أدوات ML بأمر واحد

BASH
# تثبيت الحزم الأساسية لـ ML عبر conda
conda create -n ml-env python=3.11 -y
conda activate ml-env
conda install numpy pandas matplotlib scikit-learn -y
conda install pytorch torchvision cpuonly -c pytorch -y
pip install xgboost lightgbm mlflow seaborn jupyter

المخرجات:

TEXT
# تم تنفيذ الأمر بنجاح

5. إعداد بيئة التطوير

(1) تثبيت Anaconda/Miniconda

البُعد Anaconda Miniconda
الحجم ~3 جيجابايت ~50 ميجابايت
الحزم المضمنة 150+ conda فقط
الأفضل لـ المبتدئين المطورون ذوو الخبرة
وقت التثبيت 10-15 دقيقة 1-2 دقيقة

▶ مثال: إعداد Jupyter Notebook

BASH
# إنشاء وتفعيل بيئة ML
conda create -n salespredict python=3.11 -y
conda activate salespredict

# تثبيت Jupyter والنواة
pip install jupyter
python -m ipykernel install --user --name salespredict --display-name "SalesPredict"

# تشغيل Jupyter
jupyter notebook

المخرجات:

TEXT
# تم تنفيذ الأمر بنجاح

(2) إعداد VS Code

▶ مثال: التحقق من سلامة البيئة

PYTHON
# فحص كامل للبيئة لمشروع SalesPredict
import sys
print(f"إصدار Python: {sys.version}")
print(f"مسار Python: {sys.executable}")

import numpy as np
import pandas as pd
import sklearn
print(f"إصدار NumPy: {np.__version__}")
print(f"إصدار Pandas: {pd.__version__}")
print(f"إصدار Scikit-learn: {sklearn.__version__}")

# اختبار سريع للوظائف
arr = np.array([1, 2, 3, 4, 5])
print(f"متوسط مصفوفة NumPy: {arr.mean()}")
df = pd.DataFrame({"sales": [100, 200, 300]})
print(f"DataFrame من Pandas:\n{df}")

المخرجات:

TEXT
# تم التنفيذ بنجاح

6. رؤية مشروع SalesPredict لـ Bob

SalesPredict هو المشروع المتكامل الذي يمتد عبر هذا البرنامج التعليمي بالكامل — نظام كامل للتنبؤ بمبيعات التجارة الإلكترونية، من معالجة البيانات إلى نشر النموذج.

(1) أهداف المشروع

▶ مثال: نظرة عامة على بيانات SalesPredict

PYTHON
# استكشاف بنية مجموعة بيانات SalesPredict
import pandas as pd

# تحميل بيانات العينة
df = pd.read_csv("https://example.com/salespredict_sample.csv")
print(f"شكل مجموعة البيانات: {df.shape}")
print(f"\nأنواع الأعمدة:\n{df.dtypes}")
print(f"\nإحصائيات أساسية:\n{df.describe()}")
print(f"\nنطاق التواريخ: {df['date'].min()} إلى {df['date'].max()}")
print(f"إجمالي الإيرادات: {df['revenue'].sum() / 1e6:.1f} مليون دولار")

المخرجات:

TEXT
# تم التنفيذ بنجاح

(2) خطة مراحل المشروع

المرحلة الدروس المخرجات المسؤول
المرحلة 1: الأساسيات الدروس 1-6 تقرير EDA + نموذج خط الأساس Bob
المرحلة 2: النواة الدروس 7-12 مقارنة عدة خوارزميات + هندسة الميزات Bob + Alice
المرحلة 3: المتقدم الدروس 13-18 نماذج XGBoost / التعلم العميق Bob + Charlie
المرحلة 4: العمليات الدروس 19-22 إدارة MLflow + نشر FastAPI + المراقبة الجميع
المرحلة 5: الإنتاج الدروس 23-25 نظام إنتاج كامل الجميع

7. يوم في حياة عالم البيانات

(1) سير العمل النموذجي لـ ML

100%
graph LR
    A[جمع البيانات] --> B[تنظيف البيانات]
    B --> C[EDA والتصور]
    C --> D[هندسة الميزات]
    D --> E[تدريب النموذج]
    E --> F[تقييم النموذج]
    F --> G{الأداء كافٍ؟}
    G -->|لا| D
    G -->|نعم| H[نشر النموذج]
    H --> I[المراقبة]
    I --> J{تم اكتشاف الانحراف؟}
    J -->|نعم| A
    J -->|لا| I

▶ مثال: سير عمل ML مصغر كامل

PYTHON
# سير عمل من النهاية إلى النهاية: التنبؤ بأسعار المنازل
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error

# الخطوة 1: تحميل البيانات
data = fetch_california_housing()
X, y = data.data, data.target

# الخطوة 2: تقسيم التدريب/الاختبار
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42
)

# الخطوة 3: تدريب النموذج
model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# الخطوة 4: التقييم
predictions = model.predict(X_test)
mae = mean_absolute_error(y_test, predictions)
print(f"MAE: {mae:.4f} (بـ 100 ألف دولار)")
print(f"أهمية الميزات: {dict(zip(data.feature_names, model.feature_importances_))}")

المخرجات:

TEXT
MAE: 0.3285 (بـ 100 ألف دولار)
أهمية الميزات: {'MedInc': 0.524..., 'HouseAge': 0.053..., ...}

(2) كيف يُقضى الوقت

النشاط تخصيص الوقت الفعلي لعلماء البيانات سوء الفهم الشائع للمبتدئين
جمع البيانات وتنظيفها 60-80% الاعتقاد بأن معظم الوقت يُقضى في تدريب النماذج
هندسة الميزات 10-20% تخطي هندسة الميزات والقفز مباشرة إلى ضبط المعلمات الفائقة
تدريب النموذج وضبطه 5-10% الإفراط في تحسين تعقيد الخوارزمية
النشر والمراقبة 5-10% تجاهل تدهور النموذج بعد الإطلاق
البُعد البرمجة التقليدية تعلم الآلة
المنطق الأساسي قواعد مكتوبة يدويًا قواعد متعلمة من البيانات
المدخلات بيانات + قواعد بيانات + تسميات
المخرجات نتائج حتمية تنبؤات احتمالية
الصيانة إصلاحات الأخطاء إعادة تدريب النموذج
التكيف مع التغييرات تعديل الكود إضافة بيانات جديدة

❓ أسئلة شائعة

س ما الفرق بين تعلم الآلة والتعلم العميق؟
ج التعلم العميق هو مجموعة فرعية من تعلم الآلة تستخدم الشبكات العصبية متعددة الطبقات لاستخراج الميزات تلقائيًا. يتفوق في البيانات غير المهيكلة مثل الصور والنصوص. يتطلب تعلم الآلة التقليدي هندسة ميزات يدوية ويعمل بشكل أفضل مع البيانات الجدولية.
س ما مدى قوة الخلفية الرياضية اللازمة لتعلم ML؟
ج للبدء، يكفي معرفة أساسيات الجبر الخطي (عمليات المصفوفات) والاحتمالات/الإحصاء (المتوسط، التباين، التوزيع الطبيعي). الفهم الأعمق للأعمال الداخلية للخوارزميات يتطلب رياضيات أكثر، لكن التطبيق العملي لا يتطلب اشتقاق الصيغ.
س Python 2 أم Python 3؟
ج يجب استخدام Python 3.8+. وصلت Python 2 إلى نهاية عمرها الافتراضي في 2020، وأوقفت جميع مكتبات ML الرئيسية دعمها. يوصي هذا البرنامج التعليمي بـ Python 3.11.
س هل هناك حاجة لوحدة معالجة الرسومات (GPU)؟
ج في المرحلة التمهيدية (الدروس 1-15)، وحدة المعالجة المركزية (CPU) كافية تمامًا. التعلم العميق (الدروس 16-17) والتدريب على نطاق واسع يستفيدان من وحدة معالجة الرسومات، لكن Colab يوفر وصولاً مجانيًا لوحدة معالجة الرسومات.
س هل يجب أن أتعلم Scikit-learn أم PyTorch أولاً؟
ج ابدأ بـ Scikit-learn (الدرس 5) — واجهة API النظيفة الخاصة به تغطي الخوارزميات الكلاسيكية وتساعد في بناء الحدس لـ ML. بعد ذلك، انتقل إلى PyTorch (الدرس 16) لمهام التعلم العميق.
س Anaconda كبيرة جدًا. هل هناك بديل أخف؟
ج استخدم Miniconda (~50 ميجابايت)، التي تثبت فقط مدير حزم conda. بعد ذلك، قم بتثبيت الحزم حسب الحاجة باستخدام conda install أو pip install.

📖 ملخص

📝 تمارين

  1. أساسي (الصعوبة ⭐): قم بتثبيت Miniconda، وإنشاء بيئة Python 3.11 باسم salespredict، وتثبيت NumPy و Pandas، وطباعة أرقام الإصدارات الخاصة بهما. تلميح: راجع خطوات إعداد البيئة في القسم 5.
  2. متوسط (الصعوبة ⭐⭐): باستخدام مجموعة بيانات fetch_california_housing، قم بتدريب نماذج باستخدام LinearRegression و RandomForestRegressor وقارن MAE. تلميح: راجع سير العمل المصغر في القسم 7.
  3. تحدي (الصعوبة ⭐⭐⭐): في مشروع SalesPredict لـ Bob، إلى أي من النماذج الثلاثة ينتمي "التنبؤ بما إذا كان المستخدم سيشتري"؟ ما الفرق الجوهري في توسيم البيانات بين هذه المهمة و"التنبؤ بالإيرادات الشهرية"؟ تلميح: أحدهما يتنبأ بفئة، والآخر يتنبأ بقيمة مستمرة.

← الدرس السابق | الدرس التالي: دورة مكثفة في NumPy →

Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%