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/