В чем разница между bst.best_score, bst.best_iteration и bst.best_ntree_limit в XGBoost?Python

Программы на Python
Ответить
Anonymous
 В чем разница между bst.best_score, bst.best_iteration и bst.best_ntree_limit в XGBoost?

Сообщение Anonymous »

Когда я использую xgboost для обучения данных для задачи классификации по двум категориям, я хотел бы использовать раннюю остановку, чтобы получить лучшую модель, но я не понимаю, какую из них использовать в своем прогнозе, поскольку ранняя остановка вернет 3 разных варианта.
Например, следует ли мне использовать

Код: Выделить всё

preds = model.predict(xgtest, ntree_limit=bst.best_iteration)
или мне следует использовать

Код: Выделить всё

preds = model.predict(xgtest, ntree_limit=bst.best_ntree_limit)
или оба правы, и их следует применять к разным обстоятельствам? Если да, то как я могу решить, какой из них использовать?
Вот исходная цитата из документа xgboost, но в ней не указана причина, и я также не нашел сравнения между этими параметрами:

Ранняя остановка
Если у вас есть набор проверки, вы можете использовать раннюю остановку, чтобы найти
оптимальное количество раундов повышения. Для ранней остановки требуется как минимум
один набор значений eval. Если их несколько, будет использоваться последний.
train(..., evals=evals, Early_stopping_rounds=10)
Модель будет тренироваться до тех пор, пока показатель проверки не перестанет улучшаться.
Чтобы продолжить обучение, ошибка проверки должна уменьшаться по крайней мере каждые
early_stopping_rounds.
Если произойдет ранняя остановка, у модели будет три дополнительных поля:
bst.best_score, bst.best_iteration и bst.best_ntree_limit. Обратите внимание, что
train() вернет модель последней итерации, а не самую лучшую.
Pr
ediction
Обученная или загруженная модель может выполнять прогнозы на
наборах данных.

Код: Выделить всё

# 7 entities, each contains 10 features
data = np.random.rand(7, 10)
dtest = xgb.DMatrix(data)
ypred = bst.predict(dtest)
Если во время обучения включена ранняя остановка
, вы можете получить прогнозы для лучшей
итерации с помощью bst.best_ntree_limit:

Код: Выделить всё

ypred = bst.predict(dtest,ntree_limit=bst.best_ntree_limit)


Подробнее здесь: https://stackoverflow.com/questions/435 ... t-best-ntr
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»