全部版块 我的主页
论坛 数据科学与人工智能 人工智能 机器学习
1080 0
2024-08-01

LightGBM 是一种基于梯度提升决策树(GBDT)的高效机器学习算法,主要用于处理大规模数据和高维特征的学习任务。它采用了一系列优化策略,使得训练速度更快、内存占用更低,并能够处理大量的数据和特征。算法步骤如下:

  • 第一:初始化,构建一个初始的学习器(树)作为基础模型;

  • 第二:迭代训练,通过迭代的方式,依次构建更多的学习器,每个学习器都试图纠正前一个学习器的错误;

  • 第三:梯度优化,每次迭代根据梯度信息优化模型,使得模型在训练集上的损失函数最小化;

  • 第四:叶子节点分裂,根据分裂增益,选择最优的特征和分裂点,逐步生成更复杂的决策树结构;

  • 第五:提升学习,通过累积多个简单模型的预测结果,来提升整体模型的预测能力。



LightGBM模型案例
  • 1、背景

    当前有一项关于‘信用卡交易欺诈’的数据科学研究,已整理好数据共为1000条,其包括六项,分别是换设备次数,支付失败次数,换IP次数,换IP国家次数,交易金额和欺诈标签,欺诈标签时,数字1表示欺诈,数字0表示没有欺诈行为,现希望通过LightGBM进行模型构建,并且做一些预测工作,部分数据如下图所示:



  • 2、理论

    在进行LightGBM模型时,其涉及参数如下表所述:

    参数

    说明

    参数值设置

    提升器类型

    构建模型的算法方式,通常使用默认参数值即可。

    gbdt: 传统梯度提升决策树方法,适用于大多数场景。
    dart: 类似神经网络的dropout方法,通过随机忽略一些树来防止过拟合。
    goss: 基于梯度的一侧采样方法,通过保留高梯度样本和随机采样低梯度样本来加速训练。
    rf: 随机森林方法,通过多棵树的平均或投票来提高性能。

    学习器数量

    用于构建的树的数量。

    默认是100。

    学习率

    学习率即模型参数更新步长,越小收敛越快,但迭代次数越多。

    范围(0.0, 1.0] 默认0.1。

    树最大深度

    树的深度越大,则对数据的拟合程度越高(过拟合程度也越高)。

    默认是-1表示不限制。

    树最大叶子数

    树中叶子节点的最大数量,用于控制每棵决策树的复杂度和灵活性。

    默认是31。

    子节点最小样本数

    限定一个叶子节点中包含的最小样本数目。

    默认是20。

    子节点最小权重

    树的每个叶子节点上的所有样本的权重和最小值。

    默认是0.001。

    节点分裂最小增益

    控制树分裂时的最小增益值,用于防止树过度生长和过拟合,越小树越复杂越容易过拟合。

    默认是0.00。

    样本采样率

    训练每个学习器时所使用的样本的比例。

    范围(0.0, 1.0],默认1.0。

    单树采样率

    用于每课树的子样本比例。

    默认是1。

    采样频率

    每隔多少次迭代进行一次采样。

    默认是1。

    任务类型

    包括自动判断,分类和回归任务。

    系统会结合Y的不同数字个数自动判断分类或回归任务,当然可自行选择分类或回归任务。


    除此之外,与其它的机器学习算法类似,SPSSAU提供训练集比例参数(默认是训练集占0.8,测试集占0.2),数据归一化参数(默认不进行),以及保存预测值(LightGBM时会生成预测类别,但不会生成预测概率),保存训练测试标识(生成一个标题来标识训练集和测试集数据的标识)。


  • 3、操作

    本例子操作截图如下:


    将欺诈标签放入Y框中,其余5个特征项作为自变量X。与此同时,训练集比例默认为0.8,暂不进行数据归一化,当然当前数据也可考虑做标准化处理,因为涉及数据的量纲不同。更多参数设置暂保持为默认值。


  • 4、SPSSAU输出结果

    SPSSAU共输出5项结果,依次为基本信息汇总,特征权重值,训练集或测试集模型评估结果,测试集结果混淆矩阵,模型汇总表和模型代码,如下说明:

    说明

    基本信息汇总

    因变量Y(标签项)的数据分布情况等。

    特征权重值

    展示各个X(特征)对于模型的贡献力度。

    训练集或测试集模型评估结果

    分析训练集和测试集数据的模型效果评估,非常重要。

    测试集结果混淆矩阵

    测试集数据的进一步效果评估,非常重要。分类任务时提供,如果是回归任务则没有该矩阵。

    模型汇总表

    模型参数及评估汇总表格。

    模型代码

    模型构建的核心python代码。


    上述表格中,基本信息汇总展示出因变量Y(标签项)的分类分布情况,模型评估结果(包括训练集或测试集)用于模型的拟合效果判断,尤其是测试集的拟合效果,以及提供测试集数据的混淆矩阵结果(如果是分类任务则提供,如果是回归任务则无该表格);模型汇总表格将各类参数值进行汇总,并且在最后附录模型构建的核心代码。


  • 5、文字分析

    首先针对特征的权重即重要性情况进行说明,如下图:


    上图可以看到:交易金额对于判断是否欺诈行为有着非常重要的作用,其作用力度明显高于其余四项。接下来针对最重要的模型拟合情况进行说明,如下表格:


    上表格中分别针对训练集和测试集,提供四个评估指标,分别是精确率、召回率、f1-scrore、准确率,以及平均指标和样本量指标等,整体来看,模型效果较好,因为无论是训练集还是测试集,F1-score值均高于0.9,其它指标比如精确率或者召回率指标,均接近或明显高于0.9,整体上意味着模型构建较优。

    接着进一步查看测试数据的‘混淆矩阵’,即模型预测和事实情况的交叉集合,如下图:


    ‘混淆矩阵’时,右下三角对角线的值越大越好,其表示预测值和真实值完全一致。上图中显示测试集时,真实值为1(即欺诈)但预测为0(即不欺诈)的数量为21,以及真实值为0(即不欺诈)但预测为1(即欺诈)的数量为2,仅测试集共有200条,但预测出错为23条,出错率为11.5%。最后SPSSAU输出模型参数信息值,如下表格:


    模型汇总表展示模型各项参数设置情况,最后SPSSAU输出使用python中slearn包构建本次LightGBM模型的核心代码如下:

    model = LGBMClassifier(boosting_type='gbdt', n_estimators=100, learning_rate=0.1, max_depth=-1, num_leaves=31, min_child_samples=20, min_child_weight=0.001, min_split_gain=0.0, max_depth=-1, subsample=1.0, subsample_freq=1, colsample_bytree=1.0')

    model.fit(x_train, y_train)





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群