lgb+随机搜索流程及代码

本文介绍了LightGBM的特性,包括训练效率高、内存占用少和准确率高等,并概述了随机搜索的基本思想,即通过随机取样找到最优超参数。接着详细阐述了RandomSearchCV在LightGBM调参中的应用,包括不同类型超参数的采样方式,最后给出了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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',

    
### Optuna与LightGBM集成方法 #### 3.1 集成概述 Optuna 和 LightGBM 的集成主要通过 `optuna.integration.lightgbm.LightGBMTuner` 及 `optuna.integration.lightgbm.LightGBMTunerCV` 来实现。这些工具允许自动调整 LightGBM 模型的超参数,从而提高模型性能并简化调参过程[^3]。 #### 3.2 超参数优化流程 Optuna 使用基于 TPE (Tree-structured Parzen Estimator) 算法的贝叶斯优化方法来寻找最优超参数组合。相比传统的方法如网格搜索和随机搜索,这种方法可以在更少的实验次数内找到更好的配置[^4]。 ```python import optuna from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split import lightgbm as lgb def objective(trial): data, target = load_breast_cancer(return_X_y=True) train_x, test_x, train_y, test_y = train_test_split(data, target, test_size=0.25) param = { 'objective': 'binary', 'metric': 'binary_logloss', 'verbosity': -1, 'boosting_type': 'gbdt', 'lambda_l1': trial.suggest_float('lambda_l1', 1e-8, 10.0), 'lambda_l2': trial.suggest_float('lambda_l2', 1e-8, 10.0), 'num_leaves': trial.suggest_int('num_leaves', 2, 256), 'feature_fraction': trial.suggest_float('feature_fraction', 0.4, 1.0), 'bagging_fraction': trial.suggest_float('bagging_fraction', 0.4, 1.0), 'bagging_freq': trial.suggest_int('bagging_freq', 1, 7), 'min_child_samples': trial.suggest_int('min_child_samples', 5, 100), } gbm = lgb.LGBMClassifier(**param) gbm.fit(train_x, train_y, eval_set=[(test_x, test_y)], early_stopping_rounds=100, verbose=False) return 1-gbm.best_score_['valid_0']['binary_logloss'] study = optuna.create_study(direction='maximize') study.optimize(objective, n_trials=100) ``` 这段代码展示了如何利用 Optuna 对 LightGBM 进行超参数优化。定义了一个目标函数 `objective()` ,该函数接受一个 Trial 对象作为输入,并返回要最小化的损失值。在这个例子中,选择了乳腺癌数据集来进行二元分类任务,并设置了多种可能影响模型表现的关键参数供 Optuna 探索最佳组合。 #### 3.3 效果评估 当完成一系列试验后,可以通过比较不同配置下的验证集上的指标变化情况来评价优化的效果。通常情况下,经过精心设计后的超参数可以显著提升最终预测精度或降低误差率。此外,还可以借助可视化手段进一步分析各参数之间的相互作用关系及其对整体性能的影响程度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值