【机器学习】-LightGBM 解读(持续更新)

老规矩这篇文章讲的什么先列出来,如果觉得自己都了解,就不要在这里浪费时间,研究别的技术,如果。(我只有一个要求禁止转载,发文章是为了让大家学习,最讨厌抄的满网都是,你可以不喜欢吃这个蛋糕但请你不要弄脏它)本文是持续更新的,我会慢慢的看,然后慢慢的写,也就是看到哪写到哪

API解读

简单的来说,LightGBM是一个基于决策树学习算法的梯度增强框架,它的优点有:

  • 拥有更快的训练速度和更高效率
  • 低内存使用
  • 更好的准确率
  • 支持并行学习和GPU学习
  • 能够处理大规模的数据

不废话先给个API地址:https://lightgbm.readthedocs.io/en/latest/
顺便说下我的环境,我用的python3 IDE是Pycharm

API解读

这里我们也不过多的废话,直接进入API,我们用的是Python所以我就看的Python API。

Dataset(data, label=None, reference=None, weight=None, group=None, init_score=None, silent=False, feature_name=‘auto’, categorical_feature=‘auto’, params=None, free_raw_data=True)

参数 含义
data 传入的数据类型
label 数据标签,根据标签的数据类型可将这个参数的值设置成one-column DataFrame or None, optional (default=None)
reference 可以设置 Dataset or None, optional (default=None),如果这个数据集是用于验证那么要用训练的数据集
weight 每个实力的权重
group 分组或者查询数据块的大小
init_score 数据集的初始值
silent 是否在构建期间打印信息
feature_name 特征值的名字
categorical_feature 分类特征。如果列表中有int,则解释为索引。如果字符串列表,解释为特性名称(也需要指定feature_name)。如果“auto”和数据是panda DataFrame,则使用panda无序分类列。所有类别特征值应小于int32 max值(2147483647)。大的值可能会消耗内存。考虑使用从零开始的连续整数。所有类别特征中的负值将被视为缺失值。相对于一个范畴特征,输出不可能是单调约束的。
params 其他数据集的参数
free_raw_data 如果为真,则在构造内部数据集之后释放原始数据

一般情况下我们都是不会去更改这个参数的,除非你真的很清楚里面每个参数都是干什么的。我们在使用的时候一般就是如下这样的操作

import lightgbm as lgb
#这里的Xtrain(要训练的数据集),Ztrain(目标值的数据集)
train_set = lgb.Dataset(Xtrain, Ztrain, silent=False)
#同理 xval(验证的数据集),Zval(验证数据集的目标值)
valid_set = lgb.Dataset(Xval, Zval, silent=False)

其实很好理解就是把一个累的参数进行初始化,然后封装到一个Dataset对象之中

train(params, train_set, num_boost_round=100, valid_sets=None, valid_names=None, fobj=None, feval=None, init_model=None, feature_name=‘auto’, categorical_feature=‘auto’, early_stopping_rounds=None, evals_result=None, verbose_eval=True, learning_rates=None, keep_training_booster=False, callbacks=None)

这是LightGBM自带的一个训练方法

参数 含义
params 训练用的相关参数
train_set 需要训练的数据集
num_boost_round 增强迭代的次数
valid_sets 验证数据集,也就是目标值数据集
valid_names vaild_sets数据集的名字(我也不知道干啥的)
fobj 定制目标函数。它是需要接收两个参数的,一个是预测的值(preds),一个是训练的数据集(train_data)。它的返回值也是两个,一个是每个样本的一阶导数(grad),一个是每个样本的二阶导数(hess)
feval 定制评估函数。它的入参与fobj一样(preds,train_data)。它的返回值有所不同,它的返回值有三个,一个是评估函数的名字(eval_name),一个是评估值(eval_result),最后一个是这个评估函数是否很好(is_higher_better),也就是eval_result越高越好
init_model 用于持续训练的LightGBM名或者是增强实例名
feature_name 特征值的名字,如果是’auto’并且数据是pandas的Dataframe类型,那么这个数据的名就会被使用
categorical_feature 分类特征,这里不再赘述,之前讲过了
early_stopping_rounds 有多少次分数没有提高则停止
evals_result 评价结果
verbose_eval 迭代多少次打印
learning_rates 每个提升回合的学习率列表或learning_rate 根据当前回合数计算的自定义函数(例如,产生学习率衰减)
keep_training_booster 是否使用返回的Booster进行训练
callbacks 在每次迭代中应用的回调函数的列表
发布了14 篇原创文章 · 获赞 14 · 访问量 297

猜你喜欢

转载自blog.csdn.net/weixin_43071838/article/details/104306483