LightGBM超参数实验


数据集

数据集:威斯康星州乳腺癌数据

代码

import numpy as np 
import pandas as pd 
import seaborn as sns
import matplotlib.pyplot as plt
from scipy import stats
import json
import sklearn
%matplotlib inline

#sklearn library
# 1.model_selection
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import cross_val_score, KFold
from sklearn.model_selection import StratifiedKFold

# 2.preprocessing
from sklearn.preprocessing import OrdinalEncoder
from sklearn.preprocessing import MinMaxScaler

# 3.metrics
from sklearn.metrics import roc_auc_score
from sklearn.metrics import mean_squared_error
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix

# 4.model
import lightgbm as lgb
from bayes_opt import BayesianOptimization

# 5.plot
import scikitplot as skplt

import warnings
warnings.filterwarnings('ignore')


font = {
   'family':'Helvetica, Ariel',
        'weight':'normal',
        'size':12}
plt.rc('font', **font)
sns.set_context('notebook')
sns.set_style("ticks")
FIG_FONT = dict(family="Helvetica, Ariel", weight="bold", color="#7f7f7f")
sns.set_palette("Spectral")


df = pd.read_csv('../input/breast-cancer-wisconsin-data/data.csv')
df

df.diagnosis=[1 if i =='M' else 0 for i in df.diagnosis.values]
df.drop(['Unnamed: 32','id'],axis=1,inplace=True)

fig,ax = plt.subplots(figsize=(18, 18))
axes = sns.heatmap(df.corr(), annot=True, linewidths=.5, fmt= '.1f',ax=ax)

#Simply select the features with a correlation>0.5 with diagnosis
features = list(df.corr()[df.corr()['diagnosis']>0.5].index)
X=df[features]

fig, axes = plt.subplots(4,4,figsize=(20,20))

cnt = 0
for i in range(4):
    for j in range(4):
        feature_element = features[cnt]
        cnt+=1
        plt.sca(axes[i,j])
        sns.kdeplot(df[df.diagnosis==1][feature_element],shade=True,alpha=0.2,legend=True,label='diagnosis:M')
        sns.kdeplot(df[df.diagnosis==0][feature_element],shade=True,alpha=0.2,legend=True,label='diagnosis:B'
内容概要:本文介绍了在MATLAB环境中基于LightGBM算法实现的多指标数据回归预测项目。文章从项目背景出发,阐述了传统回归方法的局限性和LightGBM算法的优势,详细解析了该项目的各个阶段和技术要点。项目的核心步骤包括:数据预处理、使用LightGBM算法训练回归模型、通过多种评估指标对模型性能进行评估。文中强调了项目的目标在于提升预测准确性、提高训练速度与效率、并实现多个领域的广泛应用。此外,还讨论了在项目实施过程中可能遇到的挑战及其应对策略,如超参数调优和处理大规模数据集。为了直观展示模型效果,文中提供了预测值与真实值对比图及误差分布图的设计思路及相应代码示例。最后,文章还概述了模型的整体架构及具体实现过程,包括模型训练、预测和评估的具体代码实例。 适合人群:具有一定编程经验和数据分析基础的数据科学家、科研工作者及研究生;从事金融、环境、医疗、营销、能源等行业且希望利用先进机器学习算法改进业务流程的专业人士。 使用场景及目标:适用于涉及大量非线性数据的多元回归预测应用场景。主要目标包括:(1)提升回归预测的准确性和可靠性;(2)加快大规模数据集的处理速度,优化计算资源利用率;(3)提供一套完整的多指标评估体系,为模型性能提供全面的量化反馈。 其他说明:由于LightGBM算法具备良好的泛化能力和可解释性,它在不同行业的广泛应用前景广阔。不过需要注意的是,尽管该模型能有效应对大多数非线性回归任务,但在某些特定条件下可能会出现过拟合或难以满足极高水平解释性的需求。此外,为了更好地理解和掌握该模型的应用,建议结合提供的完整代码案例深入学习与实验
### XGBoost与LightGBM参数对比 #### 学习速率(`learning_rate`) 两者都具备学习速率这一超参数,该参数控制每次迭代的学习步长。较小的学习速率通常能带来更精确的结果,但也可能导致更多的迭代次数才能达到最优解。 #### 树的数量(`n_estimators` 或 `num_iterations`) 此参数决定构建决策树的最大数目,在XGBoost中称为`n_estimators`,而在LightGBM里则是通过`num_iterations`来设定。更多棵树往往意味着更强的表现力,不过也增加了过拟合的风险[^1]。 #### 正则化参数 - **XGBoost**: 提供了两个正则化选项——L1(`alpha`) 和 L2 (`lambda`) 来惩罚复杂的模型结构,从而帮助预防过拟合现象的发生。 - **LightGBM**: 同样支持类似的正则化机制,即`reg_alpha`(对应于L1) 和 `reg_lambda`(对应于L2),并且默认情况下这些值被设为0表示不启用任何额外的约束条件[^2]. #### 并行处理能力 LightGBM设计之初就特别强调高效利用硬件资源的能力,比如它允许指定CPU核心数来进行多线程运算(`num_threads`),这使得即使面对非常庞大的数据集也能保持良好的性能表现。相比之下,尽管XGBoost同样可以配置成并行模式运行,但在实际应用中的加速效果可能不如前者显著. #### 特征子采样比例(`colsample_bytree`, `feature_fraction`) 这两个框架均提供了按一定概率选取部分特征参与每棵新树生长的功能,以此作为减少过拟合并加快训练过程的一种手段。具体来说,XGBoost使用的是`colsample_bytree`,而LightGBM对应的名称叫做`feature_fraction`. #### 行采样子集大小(`subsample`) 无论是哪个库,都可以通过对输入样本进行随机抽取的方式来实现bagging的效果,进而增强整体系统的稳定性和鲁棒性。在XGBoost里面这是由`subsample`所控制;而对于LightGBM而言,则是依靠同名参数完成相同功能. ```python import lightgbm as lgb from xgboost import XGBClassifier # LightGBM example parameter tuning params_lgb = { 'objective': 'binary', 'metric': 'auc', 'boosting_type': 'gbdt', 'max_depth' : -1, 'num_leaves': 31, 'min_data_in_leaf': 20, 'learning_rate': 0.05, 'feature_fraction': 0.9, } # XGBoost example parameter tuning params_xgb = { 'objective':'binary:logistic', 'eval_metric':'auc', 'booster':'gbtree', 'max_depth':6, 'eta':0.3, 'gamma':0, 'subsample':0.8, } ``` ### 参数调整建议 当涉及到具体的调参实践时,推荐采用网格搜索(Grid Search)或贝叶斯优化(Bayesian Optimization)等自动化工具辅助寻找最佳组合方案。此外,考虑到两者的内部工作原理存在差异,因此针对特定应用场景下的最优参数可能会有所不同,所以最好基于实验结果做出最终的选择[^4].
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值