首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lightgbm网格搜索与n_jobs=1永久挂起

问lightgbm网格搜索与n_jobs=1永久挂起
EN

Stack Overflow用户
提问于 2018-08-26 10:41:03
回答 1查看 1K关注 0票数 0

我阅读了前面关于LightGBM的文章以及挂起的GridSearchCV(),并相应地更正了我的代码。但是,代码似乎要挂在上面,比如>3个小时!

我有一个8GB内存,数据有29802行和13科尔。大部分的科尔都是被标记为数字的分类值。

请看下面的代码。等待您的宝贵建议!

最初,我在lgb.train()中获得了89%的AUC。

但是在使用LGBMClassifier()之后,我将无法接近它。因此,我选择了GridSearchCV()。

我需要LGBMClassifier(),因为我想要得分()和其他在使用lgb.train()时找不到的简单包装器。

我现在评论了我大部分的对撞机设置。但是网格搜索似乎还没有结束:

X和Y是我完整的训练数据集:

代码语言:javascript
复制
params = {'boosting_type': 'gbdt',
      'max_depth' : 15,
      'objective': 'binary',
      #'nthread': 1, # Updated from nthread
      'num_leaves': 30,
      'learning_rate': 0.001,
      #'max_bin': 512,
      #'subsample_for_bin': 200,
      'subsample': 0.8,
      'subsample_freq': 500,
      #'colsample_bytree': 0.8,
      #'reg_alpha': 5,
      #'reg_lambda': 10,
      #'min_split_gain': 0.5,
      #'min_child_weight': 1,
      #'min_child_samples': 5,
      #'scale_pos_weight': 1,
      #'num_class' : 1,
      'metric' : 'roc_auc',
      'early_stopping' : 10,
      'n_jobs': 1,
     }

gridParams = {
'learning_rate': [0.001,0.01],
'n_estimators': [ 1000],
'num_leaves': [12, 30,80],
'boosting_type' : ['gbdt'],
'objective' : ['binary'],
'random_state' : [1], # Updated from 'seed'
'colsample_bytree' : [ 0.8, 1],
'subsample' : [0.5,0.7,0.75],
'reg_alpha' : [0.1, 1.2],
'reg_lambda' : [0.1, 1.2],
'subsample_freq' : [500,1000],
'max_depth' : [15, 30, 80]
}
    mdl = lgb.LGBMClassifier(**params) 
    grid = GridSearchCV(mdl, gridParams,return_train_score=True,
                verbose=1,
                cv=4,
                n_jobs=1, #only '1' will work 
                scoring='roc_auc'                    
               )
    grid.fit(X=X, y=y,eval_set=[[X,y]],early_stopping_rounds=10) # never ending code

    Output:

    Fitting 4 folds for each of 864 candidates, totalling 3456 fits
[1] valid_0's binary_logloss: 0.686044
Training until validation scores don't improve for 10 rounds.
[2] valid_0's binary_logloss: 0.685749
[3] valid_0's binary_logloss: 0.685433
[4] valid_0's binary_logloss: 0.685134
[5] valid_0's binary_logloss: 0.684831
[6] valid_0's binary_logloss: 0.684517
[7] valid_0's binary_logloss: 0.684218
[8] valid_0's binary_logloss: 0.683904
[9] valid_0's binary_logloss: 0.683608
[10]    valid_0's binary_logloss: 0.683308
[11]    valid_0's binary_logloss: 0.683009
[12]    valid_0's binary_logloss: 0.68271
[13]    valid_0's binary_logloss: 0.682416
[14]    valid_0's binary_logloss: 0.682123
[15]    valid_0's binary_logloss: 0.681814
[16]    valid_0's binary_logloss: 0.681522
[17]    valid_0's binary_logloss: 0.681217
[18]    valid_0's binary_logloss: 0.680922
[19]    valid_0's binary_logloss: 0.680628
[20]    valid_0's binary_logloss: 0.680322
[21]    valid_0's binary_logloss: 0.680029
[22]    valid_0's binary_logloss: 0.679736
[23]    valid_0's binary_logloss: 0.679443
[24]    valid_0's binary_logloss: 0.679151
[25]    valid_0's binary_logloss: 0.678848
[26]    valid_0's binary_logloss: 0.678546
[27]    valid_0's binary_logloss: 0.678262
[28]    valid_0's binary_logloss: 0.677974
[29]    valid_0's binary_logloss: 0.677675
[30]    valid_0's binary_logloss: 0.677393
[31]    valid_0's binary_logloss: 0.677093........................
.....................
[997]   valid_0's binary_logloss: 0.537612
[998]   valid_0's binary_logloss: 0.537544
[999]   valid_0's binary_logloss: 0.537481
[1000]  valid_0's binary_logloss: 0.53741
Did not meet early stopping. Best iteration is:
[1000]  valid_0's binary_logloss: 0.53741

................................ and it goes on and on ...............

请帮帮忙!

问候谢林

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-27 12:33:27

你的问题和前面提到的绞刑不同。你训练了很多(3456)分类器,每一个(1000)非常深(叶子13.80)树。因此,训练时间是很长的。解决方案要么是对树的深度更适度(最实际的方法是将深度固定为-1,并在网格搜索中改变叶子的数量,对于您的数据集大小可能在10到40叶之间?),或者减少网格点的数量(860个网格点是A很大的),或者通过有意义的早期停止来减少树的数量(=迭代),或者通过有意义的早期停止来减少树的数量(=迭代)。

一个明显的问题:使用训练数据(X,y)作为早期停止准则(eval_set=[[X,y]],early_stopping_rounds=10)是没有意义的,目标函数将被无限优化,您的训练只会达到最大迭代次数(在您的情况下为1000棵树)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52025436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档