Я хочу провести перекрестную проверку модели LightGBM с lgb.Dataset и использовать Early_stopping_rounds. Следующий подход работает без проблем с xgboost.cv XGBoost. Я предпочитаю не использовать подход Scikit Learn с GridSearchCV, потому что он не поддерживает раннюю остановку или lgb.Dataset.
import lightgbm as lgb
from sklearn.metrics import mean_absolute_error
dftrainLGB = lgb.Dataset(data = dftrain, label = ytrain, feature_name = list(dftrain))
params = {'objective': 'regression'}
cv_results = lgb.cv(
params,
dftrainLGB,
num_boost_round=100,
nfold=3,
metrics='mae',
early_stopping_rounds=10
)
Задача состоит в том, чтобы выполнить регрессию, но следующий код выдает ошибку:
Supported target types are: ('binary', 'multiclass'). Got 'continuous' instead.
Поддерживает ли LightGBM регрессию, или я указал неверные параметры?
По умолчанию параметр стратификации в lightgbm.cv - True
.
Согласно документация:
stratified (bool, optional (default=True)) – Whether to perform stratified sampling.
Но стратификация работает только с задачами классификации. Итак, чтобы работать с регрессией, вам нужно сделать это False.
cv_results = lgb.cv(
params,
dftrainLGB,
num_boost_round=100,
nfold=3,
metrics='mae',
early_stopping_rounds=10,
# This is what I added
stratified=False
)
Теперь он работает.
Спасибо, очень странно, что по умолчанию stratified True, потому что вы не можете запустить регрессию. Но теперь это работает! Другой вопрос, если я укажу метрики = 'mae', то xgb.cv вернет следующее: test-mae-mean, test-mae-std, train-mae-mean, train-mae-std. Но если я сделаю это с lgb.cv, тогда он вернет только l1-среднее и l1-stdv. Почему он не вернул среднюю абсолютную ошибку? Если я правильно понял, l1 означает регрессию лассо (регуляризацию)?
@Marius, L1 norm и MAE - это одно и то же. См. Документы LightGBM или scikit-learn документы.
Интересно. Похоже, его заменили на True здесь. Об одном нужно помнить на будущее! OP - также похоже, что
shuffle=True
по умолчанию, поэтому будьте осторожны, сравнивая с scikit-learn, гдеshuffle=False
по умолчанию для CV!