ابسلون لحلول التعلم والذكاء الاصطناعي
اسأل الذكاء
English
سجّل الآن

المستوى 2 · خبير · CDSE

خبير معتمد في علم البيانات (متقدّم)

الطبقة المتقدّمة فوق CDSP: البرمجة كائنية التوجّه واستخلاص الويب و SQL المتقدّمة والبيانات الضخمة والنماذج التجميعية والنشر السحابي.

88 ساعة 7 درسًا متطلّب سابق: CDSP
تقدّمك 0 / 7

01البرمجة

Python المتقدّمة والبرمجة كائنية التوجّه

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

12 دقيقة قراءة

الأصناف والكائنات

الصنف مخطّط؛ والكائن شيء مبنيّ منه. ويجمع الصنف البيانات (السمات) مع الدوال التي تعمل عليها (الطرق). فبدل متغيّرات ودوال متفرّقة، تعيش الحالة والسلوك المترابطان معًا.

python
class Account:
    def __init__(self, owner, balance=0):
        self.owner = owner          # attribute
        self.balance = balance

    def deposit(self, amount):      # method
        self.balance += amount
        return self.balance

acc = Account("Sara", 100)
acc.deposit(50)                     # 150

الأركان الأربعة

  • التغليف — ضمّ البيانات مع طرقها وإخفاء التفاصيل الداخلية.
  • الوراثة — يمكن لصنف أن يوسّع آخر، فيعيد استخدامه ويخصّصه.
  • تعدّد الأشكال — أصناف مختلفة تستجيب لاسم الطريقة نفسه كلٌّ بطريقته.
  • التجريد — أظهِر واجهة بسيطة وأخفِ التنفيذ المعقّد.

لماذا يهمّ لعلم البيانات

scikit-learn و PyTorch و Pandas كلها مبنية بالبرمجة كائنية التوجّه — فكل نموذج كائن له .fit() و .predict(). وفهم الأصناف يتيح لك بناء محوّلات مخصّصة، وتوسيع أصناف المكتبات، وهيكلة المشروع ليبقى قابلًا للصيانة مع نموّه.

اختبر نفسك إلى ماذا يشير المعامل `self` في الطريقة؟

الكائن المحدّد الذي استُدعيت الطريقة عليه. فـ self.balance تعني «رصيد هذا الكائن»، فيحتفظ كل Account بحالته منفصلة عن غيره.

الخلاصات الأساسية

  • الصنف يجمع البيانات والطرق؛ والكائنات نُسخ تحتفظ بحالتها.
  • التغليف والوراثة وتعدّد الأشكال والتجريد هي الأركان الأربعة.
  • كل مكتبة تعلّم آلة كائنية التوجّه — وإتقان الأصناف يتيح توسيع المشاريع الحقيقية وهيكلتها.

02البيانات

استخلاص بيانات الويب

حين لا يوجد زرّ تنزيل ولا واجهة برمجية، يتيح لك استخلاص الويب جمع البيانات مباشرة من صفحات الويب — برمجيًا وعلى نطاق واسع.

9 دقيقة قراءة

كيف يعمل الاستخلاص

تطلب HTML الصفحة، ثم تحلّله لاستخراج الأجزاء التي تريدها. فـ requests تجلب HTML؛ و BeautifulSoup يتنقّل في شجرة الوسوم لاستخراج النصوص والروابط حسب وسومها أو أصنافها أو معرّفاتها.

python
import requests
from bs4 import BeautifulSoup

html = requests.get("https://example.com/jobs").text
soup = BeautifulSoup(html, "html.parser")
titles = [h.text.strip() for h in soup.select("h2.job-title")]

الصفحات الساكنة مقابل الديناميكية

إن كانت البيانات في HTML الأولي، فـ requests + BeautifulSoup يكفيان. أما إن كانت الصفحة تبني المحتوى بـ JavaScript بعد التحميل (تمرير لا نهائي، لوحات)، فتحتاج أداة أتمتة متصفّح مثل Selenium أو Playwright تشغّل الصفحة كمتصفّح حقيقي أولًا.

اختبر نفسك يُرجع مستخلِصك قائمة فارغة رغم أنك ترى البيانات في متصفّحك. السبب الأرجح؟

الصفحة ديناميكية — يُبنى المحتوى بـ JavaScript بعد تحميل HTML الأولي، فلا تراه requests. انتقل إلى Selenium/Playwright، أو اعثر على نداء الـ API الذي تجريه الصفحة.

الخلاصات الأساسية

  • requests تجلب HTML؛ و BeautifulSoup يحلّله حسب الوسم/الصنف/المعرّف.
  • الصفحات الديناميكية (المبنية بـ JS) تحتاج Selenium/Playwright لا requests وحدها.
  • احترم robots.txt، وخفّف الطلبات، وفضّل الواجهة الرسمية إن توفّرت.

03البيانات

SQL المتقدّمة

أبعد من SELECT: دوال النوافذ وتعبيرات CTE والمنطق المخزَّن تتيح الإجابة عن أسئلة تحليلية يعجز عنها GROUP BY البسيط.

11 دقيقة قراءة

دوال النوافذ

تحسب دالة النافذة عبر مجموعة صفوف مرتبطة بالصف الحالي — دون طيّها كما يفعل GROUP BY. وبهذا تحصل على المجاميع التراكمية والترتيب والمقارنات بين الصفوف مع إبقاء كل صف ظاهرًا.

ترتيب العملاء حسب الإنفاق داخل كل مدينة
SELECT name, city, total,
       RANK() OVER (PARTITION BY city ORDER BY total DESC) AS city_rank,
       SUM(total) OVER (PARTITION BY city) AS city_total
FROM   customers;

تعبيرات CTE تجعل الاستعلامات المعقّدة مقروءة

يمنح تعبير الجدول العام (WITH …) اسمًا لاستعلام فرعي لتبني الاستعلام بخطوات واضحة متراكمة بدل أقواس متداخلة بعمق. فتصير التحليلات المعقّدة مسارًا مقروءًا — بل يمكن أن تكون CTE تكرارية للتسلسلات الهرمية (الهياكل التنظيمية، الفئات).

sql
WITH monthly AS (
  SELECT DATE_FORMAT(created, '%Y-%m') AS m, SUM(total) AS rev
  FROM orders GROUP BY m
)
SELECT m, rev, rev - LAG(rev) OVER (ORDER BY m) AS growth
FROM monthly;
اختبر نفسك تحتاج كل صف مع متوسط فئته في السطر نفسه. GROUP BY أم دالة نافذة؟

دالة نافذة: AVG(x) OVER (PARTITION BY category). فـ GROUP BY يطوي الصفوف إلى واحد لكل فئة؛ أما النافذة فتُبقي كل صف وتُلحق متوسط المجموعة به.

المنطق المخزَّن والأداء

  • الإجراءات والدوال المخزَّنة تحفظ منطقًا قابلًا لإعادة الاستخدام داخل قاعدة البيانات.
  • المُحفّزات تعمل تلقائيًا عند INSERT/UPDATE/DELETE (سجلّات التدقيق، التحقّق).
  • الفهارس تسرّع البحث؛ واقرأ خطة EXPLAIN للاستعلام لإيجاد النقاط البطيئة.

الخلاصات الأساسية

  • دوال النوافذ تحسب عبر الصفوف المرتبطة دون طيّها.
  • تعبيرات CTE تحوّل الاستعلامات المتداخلة إلى خطوات مقروءة متراكمة (وقد تتكرّر).
  • الإجراءات/المُحفّزات تخزّن المنطق في قاعدة البيانات؛ والفهارس و EXPLAIN تحرّكان الأداء.

04البيانات

البيانات الضخمة باستخدام Dask

حين تكون البيانات أكبر من أن تتّسع لها ذاكرة Pandas، يشغّل Dask الكود المألوف نفسه عبر أجزاء وأنوية — بل وعبر أجهزة متعدّدة.

8 دقيقة قراءة

المشكلة: الذاكرة ونواة واحدة

يحمّل Pandas مجموعة البيانات كاملة في الذاكرة ويستخدم نواة معالجة واحدة. فملف 50 غيغابايت على حاسوب بذاكرة 16 غيغابايت لن يُفتح ببساطة، والعمليات الكبيرة بطيئة. وأدوات البيانات الضخمة تحلّ الأمرين بتقسيم العمل.

كيف يساعد Dask

إطار بيانات Dask هو عدّة إطارات Pandas تحت واجهة واحدة. يقسّم البيانات إلى أجزاء ويعالجها بالتوازي، محمّلًا ما يحتاجه فقط. وواجهته تحاكي Pandas، فتنتقل مهاراتك الحالية دون تغيير يُذكر تقريبًا.

python
import dask.dataframe as dd
df = dd.read_csv("huge/*.csv")          # lazy — nothing loaded yet
result = df.groupby("city").amount.mean()
result.compute()                        # now it runs, in parallel
اختبر نفسك كتبت مسار Dask لكن لا يبدو أن أي حساب يجري. ما الذي ينقصك غالبًا؟

نداء .compute(). فـ Dask كسول ويبني خطّة فقط حتى تطلقها صراحة بـ .compute() (أو .persist()). وهذا الكسل ميزة — فهو يحسّن قبل التشغيل.

الخلاصات الأساسية

  • Dask يوسّع Pandas أبعد من الذاكرة بالتقسيم والتوازي.
  • واجهته تحاكي Pandas، فتنتقل مهاراتك مباشرة.
  • إنه كسول — لا شيء يعمل حتى .compute()؛ و Spark يتولّى بيانات حجم العنقود.

05البيانات

المعالجة المتقدّمة للبيانات

المعالجة المتقدّمة تعصر إشارة أكثر من البيانات الصعبة: الفئات غير المتوازنة والنصوص والزمن — وغالبًا هي الفرق بين نموذج متوسّط وآخر رابح.

10 دقيقة قراءة

الفئات غير المتوازنة: SMOTE

حين تكون فئة نادرة (1% احتيال)، قد يسجّل النموذج نتيجة عالية بتجاهلها. و SMOTE و ADASYN يعالجان ذلك بتوليد أمثلة أقلية جديدة معقولة بين الموجودة — فيوازنان الفئات ليتعلّم النموذج النمط النادر فعلًا. وأعد أخذ العيّنات لمجموعة التدريب فقط، لا الاختبار أبدًا.

تحويل النص إلى أرقام

تحتاج النماذج أرقامًا، فيجب تحويل النص إلى متّجهات. و TF-IDF يزن الكلمات حسب تميّزها في المستند. و Word2Vec يذهب أبعد — يتعلّم تضمينات كثيفة تجلس فيها الكلمات المتقاربة المعنى قريبةً من بعضها، فيلتقط دلالاتٍ يفوّتها نموذج «حقيبة الكلمات».

خصائص السلاسل الزمنية

  • خصائص الإزاحة — قيمة الأمس كمتنبّئ بقيمة اليوم.
  • النوافذ المتحرّكة — المتوسّطات/الانحرافات المتحرّكة تُنعّم الضجيج وتُبرز الاتجاه.
  • خصائص التقويم — يوم الأسبوع والشهر وعلامات العطلات تلتقط الموسمية.
اختبر نفسك هل تشغّل SMOTE على كامل البيانات قبل تقسيمها إلى تدريب/اختبار؟

لا. أعد أخذ العيّنات بعد التقسيم فقط، على مجموعة التدريب وحدها. فـ SMOTE قبل التقسيم يسرّب نقاطًا مُصطنعة إلى الاختبار، فيصير تقييمك مفرطًا في التفاؤل ولا يعكس الأداء الحقيقي.

الخلاصات الأساسية

  • SMOTE/ADASYN يولّدان أمثلة الأقلية — على مجموعة التدريب فقط.
  • TF-IDF يزن الكلمات المميّزة؛ و Word2Vec يتعلّم تضمينات واعية بالمعنى.
  • خصائص الإزاحة والنوافذ المتحرّكة والتقويم تفتح نماذج السلاسل الزمنية.
الفكرة معالجة البيانات المسبقة

البيانات الخام فوضوية — قيم مفقودة ومقاييس مختلفة وفئات نصّية. المعالجة تنظّفها وتملأها وتُرمّزها وتوحّد مقاييسها إلى مصفوفة مرتّبة يتعلّم منها النموذج.

06النمذجة

تعلّم الآلة المتقدّم

تعلّم الآلة المتقدّم يدور غالبًا حول النماذج التجميعية — دمج نماذج كثيرة في نموذج قوي واحد — إضافةً إلى تقنيات للأبعاد العالية والأنماط الخفية.

13 دقيقة قراءة

النماذج التجميعية: حكمة الجماعة

قد يكون نموذج واحد منحازًا أو مشوّشًا؛ لكن عدّة نماذج متنوّعة يُؤخذ متوسطها تكون عادةً أدقّ وأكثر استقرارًا. فـ Bagging (مثل الغابة العشوائية) يدرّب النماذج بالتوازي على عيّنات عشوائية فرعية ويأخذ متوسطها. و Boosting يدرّب النماذج بالتتابع، كلٌّ يصلح أخطاء سابقه.

XGBoost — المفضّل في المسابقات

التعزيز التدرّجي — وتطبيقه السريع XGBoost (مع LightGBM و CatBoost) — يهيمن على مشكلات البيانات الجدولية. يبني أشجار قرار ضحلة واحدة تلو الأخرى، كلٌّ يصحّح الأخطاء المتبقّية للتجميع حتى الآن. وغالبًا هو أقوى نموذج تلجأ إليه على البيانات المهيكلة.

تحليل المكوّنات الرئيسية وقواعد الاقتران

  • PCA يختزل خصائص كثيرة مترابطة إلى «مكوّنات رئيسية» قليلة تحفظ معظم التباين — ممتاز للتصوير والسرعة.
  • DBSCAN يجمّع حسب الكثافة، فيجد أشكالًا اعتباطية ويميّز القيم الشاذّة (بخلاف k-means).
  • قواعد الاقتران (Apriori / FP-Growth) تجد «من يشتري X يشتري أيضًا Y» — تحليل سلّة السوق.
اختبر نفسك الغابة العشوائية مقابل XGBoost: أيّهما يقلّل التباين بمتوسط أشجار متوازية، وأيّهما يقلّل الانحياز بالتصحيح المتتابع؟

الغابة العشوائية هي Bagging — أشجار متوازية يُؤخذ متوسطها، فتقلّل التباين. و XGBoost هو Boosting — أشجار متتابعة كلٌّ يصلح أخطاء سابقه، فيقلّل الانحياز. ولهذا يبلغ التعزيز دقّة أعلى لكنه يفرط في المطابقة أسهل.

النماذج والتقنيات — ماذا ومتى ولماذا

XGBoost (التعزيز التدرّجي) تجميعي · تعزيز

يبني أشجارًا ضحلة بالتتابع، كلٌّ يصحّح الأخطاء المتبقّية للسابقة.

حين تريد أعلى دقّة على البيانات المهيكلة/الجدولية.

التعزيز يقلّل الانحياز ويفوز عادةً في اختبارات البيانات الجدولية — لكنه يحتاج ضبطًا دقيقًا.

مثال: نماذج الأسعار/مخاطر الائتمان على نمط Kaggle؛ و LightGBM/CatBoost أقرباء سريعون.

تحليل المكوّنات الرئيسية (PCA) تقليل الأبعاد

يضغط خصائص كثيرة مترابطة في «مكوّنات» قليلة تحفظ معظم التباين.

خصائص أكثر من اللازم، ارتباط شديد، أو لتصوير بيانات عالية الأبعاد في بُعدين.

يسرّع التدريب ويقلّل الضجيج/فرط المطابقة بإزالة التكرار.

مثال: اختزل 200 قراءة حسّاس إلى 10 مكوّنات قبل النمذجة.

DBSCAN غير مُوجَّه · كثافة

يجمّع النقاط المتراصّة كثافةً ويسِم النقاط المتناثرة كقيم شاذّة.

عناقيد باشكال اعتباطية وكشف الشذوذ، حين تجهل عدد العناقيد.

بخلاف k-means، يجد عناقيد غير دائرية ولا يحتاج تحديد k مسبقًا.

مثال: اكتشف حلقات احتيال أو ارسم بؤرًا جغرافية كثيفة.

قواعد الاقتران (Apriori) غير مُوجَّه · قواعد

يجد العناصر التي تتكرّر معًا ويعبّر عنها بقواعد «إذا X فإن Y».

تحليل سلّة السوق، البيع المتقاطع، وبذور التوصية.

يُبرز أنماط شراء مشترك قابلة للتنفيذ مباشرة من سجلّات المعاملات.

مثال: «من يشتري خبزًا وبيضًا يشتري زبدًا» → اجمعها في عرض.

الخلاصات الأساسية

  • Bagging (الغابة العشوائية) يأخذ متوسط نماذج متوازية؛ و Boosting (XGBoost) يصحّح بالتتابع.
  • XGBoost يفوز عادةً على البيانات الجدولية لكنه يحتاج ضبطًا دقيقًا.
  • PCA يضغط الخصائص؛ و DBSCAN وقواعد الاقتران تجد بنية خفية.
الفكرة كيف يتعلّم نموذج تعلّم الآلة

تتدفّق السمات إلى نموذج يُخرج تنبؤًا؛ يُقاس الخطأ ويُعاد لضبط النموذج. كرّر عبر حِقب كثيرة فتنخفض الخسارة — ويتحسّن النموذج.

جرّبها عتبة التصنيف — الدقّة مقابل الاستدعاء

يمنح المصنّف كل حالة درجة، والعتبة تقرّر إيجابي أم سلبي. حرّكها وراقب التوازن بين الدقّة والاستدعاء والصحّة — لا توجد عتبة «صحيحة» واحدة.

Precision · Recall · Acc

تدرّب على هذا في المختبر التفاعلي

07الهندسة

Docker والسحابة والنشر المتقدّم

تعلّم الآلة في الإنتاج يعمل على الحاويات والسحابة. Docker يجعل نموذجك يعمل في أي مكان بالطريقة نفسها؛ والسحابة تجعله يتوسّع.

10 دقيقة قراءة

Docker: «يعمل على جهازي» — حُلّت

تحزم الحاوية كودك مع اعتمادياته وبيئته بالضبط، فيعمل بالطريقة نفسها على حاسوبك وحاسوب زميلك والخادم. لا مزيد من تعارض الإصدارات. تكتب Dockerfile مرّة؛ ويستطيع أي أحد بناء الصورة نفسها وتشغيلها.

خدمة نموذج مصغّرة
# Dockerfile
FROM python:3.11-slim
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]

# build & run
docker build -t my-model .
docker run -p 8000:8000 my-model

السحابة والتوسّع

انشر الحاوية إلى سحابة (AWS أو Azure أو GCP). ولحركة المرور المتذبذبة، يشغّل مُنسّق مثل Kubernetes نُسخًا كثيرة ويوزّع الحمل بينها، مضيفًا النُسخ أو مزيلًا لها تلقائيًا. وهذا هو العمود التشغيلي لمنتجات تعلّم الآلة الحقيقية.

اختبر نفسك نموذجك يعمل محليًا لكنه يتعطّل على الخادم بخطأ إصدار مكتبة. كيف يمنع Docker ذلك؟

تشحن الحاوية إصدار Python بالضبط والاعتماديات المثبّتة مع كودك، فيشغّل الخادم البيئة المطابقة التي بنيتها واختبرتها. ولا يوجد «إعداد خادم» منفصل يخرج عن التزامن.

الخلاصات الأساسية

  • Docker يحزم الكود والبيئة فيعمل بالطريقة نفسها في كل مكان.
  • السحابة و Kubernetes يوسّعان الخدمة ويقلّصانها مع الطلب.
  • MLOps (CI/CD و MLflow والمراقبة) يُشغّل دورة حياة تعلّم الآلة كاملة.

اكتب للبحث في كل ابسلون.

تنقّل فتح esc إغلاق فتح البحث الكامل →

احصل على هذا الملف

أدخل بياناتك وسنرسل لك رابط التنزيل عبر البريد الإلكتروني فورًا.

سنرسل الرابط إلى بريدك — بدون رسائل مزعجة.
واتساب اتصال سجّل الآن