Ali Ahmed55 نشر 22 فبراير أرسل تقرير نشر 22 فبراير السلام هليكم هو ممكن ان استخدم الGridSearchCV مع الearly_stopping_rounds في خورزميات الXGBClassifier ؟ 1 اقتباس
0 Mustafa Suleiman نشر 22 فبراير أرسل تقرير نشر 22 فبراير ذلك ممكن، لكن يتطلب إعدادًا دقيقًا لتجنب تسريب البيانات، أولاً استيراد المكتبات الضرورية: 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 في كود مخصص. 1 اقتباس
0 Ali Ahmed55 نشر 22 فبراير الكاتب أرسل تقرير نشر 22 فبراير بتاريخ 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( 1 اقتباس
0 Mustafa Suleiman نشر 22 فبراير أرسل تقرير نشر 22 فبراير كلاهما مرتبطان بفقدان اللوغاريتم log loss، لكن objective='binary:logistic' يُحدد loss function التي يستخدمها النموذج لتحسين الأوزان أثناء التدريب، لحساب الفرق بين التوقعات الفعلية والتنبؤات، وتوجيه النموذج لتقليل تلك الخسارة، بمعنى يحول النموذج الناتج إلى احتمالات بين 0 و 1 عبر دالة لوجستية sigmoid، وفي حال النتيجة 0.7، فتعني أن النموذج يعتقد أن الاحتمال ينتمي إلى الفئة 1 هو 70%. أما eval_metric='logloss' يُحدد الـ metric الذي يُستخدم لتقييم أداء النموذج أثناء التدريب على مجموعة التحقق مثلًا، ولا يؤثر على عملية التدريب نفسها، بل فقط على كيفية قياس الأداء وعرضه. 1 اقتباس
0 Ali Ahmed55 نشر 23 فبراير الكاتب أرسل تقرير نشر 23 فبراير بتاريخ 20 ساعة قال Mustafa Suleiman: objective='binary:logistic' يعني الافضل ده صح ؟ بتاريخ 20 ساعة قال Mustafa Suleiman: وللعلم من الأفضل إنشاء مجموعة تحقق validation set مستقلة داخل كل fold من folds الـ cross-validation لتجنب تسريب البيانات، من خلال PredefinedSplit أو StratifiedKFold مخصص، أو تقسيم البيانات يدويًا داخل كل fold مثلاً train_test_split في كود مخصص. أ.مصطفي هو مممكن ان امنع تسرب البيانات من خلال تقسيم البيانات الي تدريب + تحقق + اختبار بدل ما استخدم الStratifiedKFold و PredefinedSplit اقتباس
0 Mustafa Suleiman نشر 23 فبراير أرسل تقرير نشر 23 فبراير التسريب يحدث في حال تأُثرت مجموعة التحقق أو الاختبار بالبيانات المُستخدمة في التدريب، وذلك يؤدي إلى تقييم غير واقعي للأداء، بالتالي لو تستخدم Cross-Validation، فيجب إنشاء مجموعة تحقق مستقلة داخل كل Fold، كاستخدام StratifiedKFold مع فصل التحقق عن التدريب في كل تكرار، ثم استخدام PredefinedSplit أو تقسيم يدوي مُخصص داخل كل Fold لضمان عدم تداخل البيانات. وفي حال لا تستخدم Cross-Validation فستقوم بتقسيم البيانات يدويًا إلى ثلاث مجموعات مستقلة كما ذكرت، وهنا يجب التأكد من أن مجموعة الاختبار لا تُستخدم مطلقًا في التدريب أو ضبط المعلمات. 1 اقتباس
0 Ali Ahmed55 نشر 23 فبراير الكاتب أرسل تقرير نشر 23 فبراير تمام جدا الف شكراا جدا لحضرتك جزاك الله كل خير اقتباس
السؤال
Ali Ahmed55
السلام هليكم
هو ممكن ان استخدم الGridSearchCV مع الearly_stopping_rounds في خورزميات الXGBClassifier ؟
6 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.