Как настроить с помощью XGboost

Я пытаюсь получить обобщенную модель для набора данных Mercedes Greener Manufacturing. Итак, я пытаюсь добиться того же, используя XGBoost Regressor. Я использовал цикл в диапазоне от 1 до 100 в качестве начального набора тестов поезда, чтобы получить лучшую выборку. Я использовал PCA для уменьшения размеров до 8 .

Как точно настроить использование xgboost, чтобы я не получил переоснащенную модель?

X_train,X_test,y_train,y_test = train_test_split(X_pc,
                                                     y,
                                                     test_size=0.2,
                                                   random_state = i)
    model = XGBRegressor()
    model.fit(X_train,y_train)
    
    train=model.score(X_train,y_train)
    test=model.score(X_test,y_test)

выход

TEST: 0.28278595203767265 TRAIN: 0.9041892366322192 RS: 0
TEST: 0.3803514386218507 TRAIN: 0.9099759411069458 RS: 1
TEST: 0.3357132066270113 TRAIN: 0.9113739827130357 RS: 2
TEST: 0.3003256802391573 TRAIN: 0.901560899846001 RS: 3
TEST: 0.3769044561739856 TRAIN: 0.9034886060173257 RS: 4
TEST: 0.3449160536081909 TRAIN: 0.9092295020552124 RS: 5
TEST: 0.43083817087609166 TRAIN: 0.8957931397175393 RS: 6
TEST: 0.27375366705147564 TRAIN: 0.912349291318306 RS: 7
TEST: 0.39315883169376264 TRAIN: 0.9090768492254802 RS: 8
TEST: 0.38714220182913905 TRAIN: 0.9089864030990132 RS: 9
TEST: 0.37089065589124093 TRAIN: 0.9099379400411342 RS: 10
TEST: 0.3785854487827084 TRAIN: 0.9080405667805768 RS: 11
TEST: 0.29249852154319345 TRAIN: 0.9057747080596891 RS: 12
TEST: 0.34881642748048425 TRAIN: 0.9077565004654295 RS: 13

person bedant    schedule 16.12.2020    source источник


Ответы (1)


Аргумент random_state предназначен для обеспечения воспроизводимости расщеплений, чтобы кто-то другой, проводящий ваши эксперименты, мог воссоздать ваши результаты.

Существует несколько способов эффективного обучения модели и снижения вероятности переобучения. Одной из таких стратегий является использование перекрестной проверки с помощью поиска по сетке, чтобы определить наилучшие параметры для вашего модель. Вот как это будет выглядеть с вашей моделью.

import xgboost as xgb
from sklearn.model_selection import train_test_split, GridSearchCV, StratifiedKFold


X_train,X_test,y_train,y_test = train_test_split(X_pc, y, test_size=0.2)
xgb_model = xgb.XGBRegressor()

# Define the parameter options for the Grid Search
paramters = {}

# Define the GridSearch class, including cross-validation, using your XGBoost model
clf = GridSearchCV(xgb_model, parameters, cv=StratifiedKFold(n_folds=5, shuffle=True).split(X_train, y_train))

# Fit the model
clf.fit(X_train, y_train)

Чтобы получить результирующий лучший оценщик, например версию XGBoost, которая показала наилучшие результаты во время обучения, вы можете сделать следующее:

best_estimator = clf.best_estimator_
person gallen    schedule 18.12.2020