LightGBM简介

        LightGBM是一个梯度Boosting框架,使用基于决策树的学习算法,他的特点是分布和高效的,他主要有以下优势:


  1)更快的训练效率

  2)低内存使用

  3)更高的准确率

  4)支持并行化学习

  5)可以处理大规模数据

随机搜索简介

        随机搜索的思想和网格搜索比较相似,只是不再测试上界和下界之间的所有值,只是在搜索范围中随机取样本点。它的理论依据是,如果随即样本点集足够大,那么也可以找到全局的最大或最小值,或它们的近似值。通过对搜索范围的随机取样,随机搜索一般会比网格搜索要快一些。

        RandomSearchCV随机搜索策略为:

        (a)对于搜索范围是distribution的超参数,根据给定的distribution随机采样;
        (b)对于搜索范围是list的超参数,在给定的list中等概率采样;
        (c)对a、b两步中得到的n_iter组采样结果,进行遍历。
        (d)如果给定的搜索范围均为list,则不放回抽样n_iter次。

lgb+RandomSearchCV使用代码:

"""
配置固定的参数
"""
other_params = {'boosting_type' : 'gbdt',

                'objective': 'binary', 

                'n_estimators': 275,
                'max_depth': 6,
                'min_child_samples': 20,
                'reg_lambd': 0.1,
                'reg_alpha': 0.1,
                'metric': 'rmse',
                'colsample_bytree': 1,
                'subsample': 0.8,
                'num_leaves' : 40,
                'random_state': 2018}
   
 """
RandomizedSearchCV 参数
 """
rds_params = {'n_estimators': range(100, 400, 10),
                      'min_child_weight': range(3, 20, 2),
                      'colsample_bytree': np.arange(0.4, 1.0),
                      'max_depth': range(5, 15, 2),
                      'subsample': np.arange(0.5, 1.0, 0.1),
                      'reg_lambda': np.arange(0.1, 1.0, 0.2),
                      'reg_alpha': np.arange(0.1, 1.0, 0.2),
                      'min_child_samples': range(10, 30)}
  
"""
调用lgb模型
"""
model = lgb.LGBMClassifier(**other_params)
"""
RandomizedSearchCV迭代模型
"""
optimized_GBM = RandomizedSearchCV(model , rds_params, n_iter=50, cv=5, n_jobs=4)
optimized_GBM.fit(train_X, train_y) 
"""
获取RandomizedSearchCV迭代的最佳参数即得分
"""
print('参数的最佳取值:{0}'.format(optimized_GBM.best_params_))

print('最佳模型得分:{0}'.format(optimized_GBM.best_score_))

原创文章,转载请注明出处:http://124.221.219.47/article/randomsearchlgb/