اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

ذلك ممكن، لكن يتطلب إعدادًا دقيقًا لتجنب تسريب البيانات، أولاً استيراد المكتبات الضرورية:

from sklearn.model_selection import GridSearchCV, train_test_split
from xgboost import XGBClassifier
import numpy as np

ثم تقسيم البيانات إلى تدريب واختبار:

X, y = ...  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

حيث X, y هي البيانات لديك.

ثم إعداد النموذج وشبكة المعلمات:

model = XGBClassifier(objective='binary:logistic', n_estimators=1000)  

param_grid = {
    'max_depth': [3, 5],
    'learning_rate': [0.1, 0.01],
    'subsample': [0.8, 1.0]
}

ولاحظ n_estimators كبير لتفادي التوقف المبكر وتمكين early_stopping_rounds من التوقف عند الاستقرار.

ثم تحديد fit_params لـ Early Stopping:

fit_params = {
    'eval_set': [(X_test, y_test)],  
    'early_stopping_rounds': 50,
    'verbose': False
}

'eval_set': [(X_test, y_test)] يعمل كمجموعة تحقق.

بعد ذلك تشغيل GridSearchCV:

grid_search = GridSearchCV(
    estimator=model,
    param_grid=param_grid,
    cv=5,
    scoring='accuracy',
    n_jobs=-1
)

grid_search.fit(X_train, y_train, **fit_params)

وطباعة النتائج:

print( grid_search.best_params_)
print(grid_search.best_score_)

وللعلم من الأفضل إنشاء مجموعة تحقق validation set مستقلة داخل كل fold من folds الـ cross-validation لتجنب تسريب البيانات، من خلال PredefinedSplit أو StratifiedKFold مخصص، أو تقسيم البيانات يدويًا داخل كل fold  مثلاً train_test_split في كود مخصص.

  • 0
نشر
بتاريخ 3 دقائق مضت قال Mustafa Suleiman:
objective='binary:logistic'

هو اي الفرق مابين دي و دي

eval_metric='logloss'

 

بتاريخ 5 دقائق مضت قال Mustafa Suleiman:

وللعلم من الأفضل إنشاء مجموعة تحقق validation set مستقلة داخل كل fold من folds الـ cross-validation لتجنب تسريب البيانات، من خلال PredefinedSplit أو StratifiedKFold مخصص، أو تقسيم البيانات يدويًا داخل كل fold  مثلاً train_test_split في كود مخصص.

ازي اعمل كده الان بيظهر ده في النتجيه 

/usr/local/lib/python3.10/dist-packages/joblib/externals/loky/process_executor.py:752: UserWarning: A worker stopped while some jobs were given to the executor. This can be caused by a too short worker timeout or by a memory leak.
  warnings.warn(

 

  • 0
نشر

 

 كلاهما مرتبطان بفقدان اللوغاريتم log loss، لكن objective='binary:logistic' يُحدد loss function التي يستخدمها النموذج لتحسين الأوزان أثناء التدريب،  لحساب الفرق بين التوقعات الفعلية والتنبؤات، وتوجيه النموذج لتقليل تلك الخسارة، بمعنى يحول النموذج الناتج إلى احتمالات بين 0 و 1 عبر دالة لوجستية sigmoid، وفي حال النتيجة 0.7، فتعني أن النموذج يعتقد أن الاحتمال ينتمي إلى الفئة 1 هو 70%.

أما eval_metric='logloss' يُحدد الـ metric الذي يُستخدم لتقييم أداء النموذج أثناء التدريب على مجموعة التحقق مثلًا، ولا يؤثر على عملية التدريب نفسها، بل فقط على كيفية قياس الأداء وعرضه.

  • 0
نشر
بتاريخ 20 ساعة قال Mustafa Suleiman:

objective='binary:logistic' 

يعني الافضل ده صح ؟

بتاريخ 20 ساعة قال Mustafa Suleiman:

وللعلم من الأفضل إنشاء مجموعة تحقق validation set مستقلة داخل كل fold من folds الـ cross-validation لتجنب تسريب البيانات، من خلال PredefinedSplit أو StratifiedKFold مخصص، أو تقسيم البيانات يدويًا داخل كل fold  مثلاً train_test_split في كود مخصص.

أ.مصطفي

هو مممكن ان امنع تسرب البيانات من خلال تقسيم البيانات الي تدريب + تحقق + اختبار بدل ما استخدم الStratifiedKFold  و PredefinedSplit

  • 0
نشر

التسريب يحدث في حال تأُثرت مجموعة التحقق أو الاختبار بالبيانات المُستخدمة في التدريب، وذلك يؤدي إلى تقييم غير واقعي للأداء، بالتالي لو تستخدم Cross-Validation، فيجب إنشاء مجموعة تحقق مستقلة داخل كل Fold، كاستخدام StratifiedKFold مع فصل التحقق عن التدريب في كل تكرار، ثم استخدام PredefinedSplit أو تقسيم يدوي مُخصص داخل كل Fold لضمان عدم تداخل البيانات.

وفي حال  لا تستخدم Cross-Validation فستقوم بتقسيم البيانات يدويًا إلى ثلاث مجموعات مستقلة كما ذكرت، وهنا يجب التأكد من أن مجموعة الاختبار لا تُستخدم مطلقًا في التدريب أو ضبط المعلمات.

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...