0Pricing
Learn AI with Python · درس

البحث الشبكي والبحث العشوائي

GridSearchCV وRandomizedSearchCV وتصميم param_grid وإعادة الملاءمة باستخدام أفضل المعلمات.

البحث الشبكي والبحث العشوائي درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

لماذا نضبط المعلمات الفائقة

تحتوي النماذج على المعلمات الفائقة (مثل max_depth أو C) التي لا تتعلمها البيانات، بل تُحدَّد قبل التدريب. ويمكن للقيم المناسبة أن تحسّن الأداء بدرجة كبيرة، لذلك نبحث عنها بطريقة منهجية.

الضبط اليدوي عرضة للأخطاء

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

أساسيات GridSearchCV

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

from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier

param_grid = {
    "n_estimators": [100, 200, 300],
    "max_depth": [4, 8, None],
}
gs = GridSearchCV(RandomForestClassifier(), param_grid, cv=5)
gs.fit(X, y)

الانفجار التوافقي

تزداد تكلفة البحث الشبكي حاصل ضرب أعداد الخيارات في جميع المعلمات، مضروبًا في عدد الطيات. فثلاثة معلمات لكل منها 5 قيم مع تحقق متقاطع من 5 طيات تعني 5*5*5*5 = 625 عملية تدريب. وتصبح الشبكات مكلفة بسرعة.

التقييم في GridSearchCV

تختار المعلمة scoring المقياس المراد تحسينه. بالنسبة إلى البيانات غير المتوازنة، اختر f1 أو roc_auc بدلًا من الدقة الافتراضية.

from sklearn.model_selection import GridSearchCV

gs = GridSearchCV(
    RandomForestClassifier(),
    param_grid,
    cv=5,
    scoring="roc_auc",
)
gs.fit(X, y)

التنفيذ المتوازي باستخدام n_jobs

كل عملية تدريب لمرشح مستقلة، لذا اضبط n_jobs=-1 لتشغيلها عبر جميع أنوية وحدة المعالجة المركزية. وهذا يقلل بدرجة كبيرة الوقت الفعلي اللازم للشبكات الكبيرة.

from sklearn.model_selection import GridSearchCV

gs = GridSearchCV(
    RandomForestClassifier(),
    param_grid,
    cv=5,
    n_jobs=-1,
    verbose=1,
)

قراءة أفضل النتائج

بعد التدريب، افحص best_params_ لمعرفة التوليفة الفائزة، وbest_score_ لمعرفة درجة التحقق المتقاطع الخاصة بها، وbest_estimator_ لمعرفة النموذج المُعاد تدريبه والجاهز للتنبؤ.

gs.fit(X, y)
print("Best params:", gs.best_params_)
print("Best CV score:", gs.best_score_)
best_model = gs.best_estimator_
best_model.predict(X_new)

فحص جميع النتائج

إن cv_results_ عبارة عن قاموس (وهو مناسب جدًا للتحويل إلى DataFrame) يعرض درجة كل مرشح وترتيبه. استخدمه لفهم المعلمات المهمة ومدى استقرار الدرجات.

import pandas as pd

results = pd.DataFrame(gs.cv_results_)
print(results[["params", "mean_test_score", "rank_test_score"]].head())

RandomizedSearchCV

عندما تكون مساحة البحث ضخمة، يأخذ RandomizedSearchCV عينات من عدد محدد من التوليفات العشوائية بدلًا من تجربتها كلها. ويمكنك التحكم في الميزانية باستخدام n_iter.

from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint

param_dist = {
    "n_estimators": randint(100, 500),
    "max_depth": randint(3, 20),
}
rs = RandomizedSearchCV(
    RandomForestClassifier(), param_dist,
    n_iter=30, cv=5, random_state=0,
)
rs.fit(X, y)

لماذا يتفوق البحث العشوائي غالبًا

في كثير من المشكلات، لا تكون سوى بضعة معلمات فائقة مؤثرة فعلًا. يستكشف البحث العشوائي تلك الأبعاد المهمة بكفاءة أكبر من الشبكة الجامدة، ويجد حلولًا جيدة بعدد أقل بكثير من التجارب.

إرشادات المقارنة بين البحث الشبكي والعشوائي

استخدم GridSearchCV مع مجموعة صغيرة ومنفصلة من المرشحين. واستخدم RandomizedSearchCV مع المساحات الكبيرة أو المستمرة، حيث تحدد ميزانية n_iter. يعيد كلاهما تدريب أفضل نموذج تلقائيًا عند ضبط refit=True.

اختبار سريع

اختبر معرفتك بالبحث عن المعلمات الفائقة.

خلاصة

خلاصة: يختبر GridSearchCV جميع التوليفات في param_grid بصورة شاملة، وتنفجر التكلفة مع ازدياد الحجم. يأخذ RandomizedSearchCV عينات من n_iter توليفة للمساحات الكبيرة. اضبط scoring لتحديد مقياسك، وn_jobs=-1 لزيادة السرعة، واقرأ best_params_ وbest_score_ وbest_estimator_ بعد التدريب.

الأسئلة الشائعة

هل درس «البحث الشبكي والبحث العشوائي» مجاني؟

نعم — نص درس «البحث الشبكي والبحث العشوائي» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

ماذا ستتعلم في «البحث الشبكي والبحث العشوائي»؟

GridSearchCV وRandomizedSearchCV وتصميم param_grid وإعادة الملاءمة باستخدام أفضل المعلمات. تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟

لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «البحث الشبكي والبحث العشوائي»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟

نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. استراتيجيات التحقق المتقاطع
  2. تعمّق في مقاييس التصنيف
  3. البحث الشبكي والبحث العشوائي
  4. التحسين البايزي باستخدام Optuna
← العودة إلى Learn AI with Python