Как изменить параметры LightGBM, когда он работает? - PullRequest
0 голосов
/ 23 декабря 2018

Итак, я хочу либо изменить параметр LightGBM после его запуска or После запуска 10000 раз, я хочу добавить другую модель с другими параметрами, но использовать ранее обученную модель.

Примерно так:

params = {
        "objective" : "regression", 
        "metric" : "mae", 
        "num_leaves" : 35, 
        "learning_rate" : 0.05, 
        "bagging_fraction" : 0.7,
        "bagging_seed" : 0, 
        "num_threads" : 4,
        "colsample_bytree" : 0.7,
        'min_data_in_leaf':200, 
        'min_split_gain':0.0004,
        'lambda_l2':0.1
}

model = lgb.train(  params, 
                    train_set = train_set,
                    num_boost_round=1000,
                    early_stopping_rounds=200,
                    verbose_eval=100, 
                    valid_sets=[train_set,valid_set]
)

params = {
        "objective" : "dart", 
        "metric" : "mae", 
        "num_leaves" : 44, 
        "learning_rate" : 0.01, 
        "bagging_fraction" : 0.3,
        "bagging_seed" : 0, 
        "num_threads" : 4,
        "colsample_bytree" : 0.1,
        'min_data_in_leaf':400, 
        'min_split_gain':0.0001,
        'lambda_l2':0.2
}

model = lgb.train(                   
                    params, 
                    train_set = train_set,
                    num_boost_round=2000,
                    early_stopping_rounds=200,
                    verbose_eval=100,
                    init_model=model,          
                    valid_sets=[train_set,valid_set]

)

Но здесь, когда я использую init_model=model, я получаю эту ошибку:

LightGBMError: Cannot set predictor after freed raw data, set free_raw_data=False when construct Dataset to avoid this.

1 Ответ

0 голосов
/ 24 декабря 2018

Это одна из тех счастливых ошибок, которые вам нужно сделать именно так, как объясняется в вашем сообщении об ошибке (вот фрагмент кода от меня):

d_train = lgb.Dataset(x_train, label=y_train, free_raw_data = False)

при создании объектов lightgbm.Dataset, то же самоедля проверки и тестирования наборов.

Остальные не нуждаются в изменении, ваш код выглядит нормально (также часть init_model).Проблема связана с оболочкой Python для LightGBM, поэтому необходимо установить конструкцию необработанных данных для использования в таких моделях извлечения / извлечения.Если вы заинтересованы в более глубоком понимании ситуации, просто проверьте: https://lightgbm.readthedocs.io/en/latest/FAQ.html

Я уверен, что этот ответ решит вашу ситуацию.Но если нет, пожалуйста, не стесняйтесь спрашивать больше.Удачи!

...