首先是配置文件参数。参考自https://lightgbm.apachecn.org/#/docs/6

配置参数实在是太多了,大家还是去原文档查表吧orz

参数名 可选参数 作用
config= 自填,string类型 配置文件的路径
task= trainpredictconvert_model 训练;预测;转化为if-else 模型
 

regressionregression_l1huberfairpoissonquantilequantile_l2;

binarymulticlassmulticlassova,;

xentropyxentlambda;

lambdarank

回归

分类

交叉熵

lambdarank:标签是离散的整数,且数值越高品质越好。

boosting= gbdtrfdartgoss 提升器:梯度提升决策树;随机森林;dart;基于梯度的单面采样
data= 自填 训练数据
valid= 自填,支持多组测试数据一起输入,输入时用‘,’隔开 测试数据
num_iterations= 自填,int类型,默认100 迭代次数
num_leaves= 自填,double型,默认31 单棵树的叶子数
tree_learner= serialfeaturedatavoting 决定是否并行学习:不并发;按特征并行学习;按数据并行学习;按投票并行学习。
num_threads= 自填,整数,默认OpenMP_default

LightGBM 的线程数,按cpu的核数填。4核就填4.

device= cpu,gpu

选择使用哪种设备训练模型

learning_rate= 自填,double型,默认0.1 学习率
max_depth= 自填,整数,默认-1(无限制)

单棵树的最大深度限制,用于处理过拟合。数值越大拟合能力越强

min_data_in_leaf= 自填,整数,默认20

一个叶子中的最小数据量。用于处理过拟合。数值越小拟合能力越强

min_sum_hessian_in_leaf 自填,duoble型,默认1e-3

和叶子的纯度有关,用于处理过拟合,越小拟合能力越强

feature_fraction= 自填,double型,默认1,数值范围(0,1]

训练前随机保留的特征比例。每次迭代都会重新选择。类似dropout.数值越大拟合能力越强,可以防止过拟合

feature_fraction_seed= 自填,整型,默认2。

feature_fraction的随机种子

bagging_fraction=  自填,double型,默认1,数值范围(0,1]

每次从训练随机抽取的样本比例(不放回抽样)

数值越大拟合能力越强。可以用来处理过拟合

bagging_freq=  自填,double型,默认0(禁用)

每次bagging_freq次迭代重新抽样,生成新的训练集。

bagging_seed= 自填,整型,默认3。

bagging 随机数种子

early_stopping_round= 自填,整型,默认0(禁用)。

如果一个验证集的度量在

early_stopping_round 次循环中没有提升, 将提前停止训练

min_split_gain=  自填,double型,默认0(禁用)

执行切分的最小增益

 min_data_per_group=  default=100, type=int 

每个categorical_feature组的最小数据量。

max_cat_threshold= default=32, type=int

categorical_feature的足底啊类别数

cat_smooth= default=10, type=double

这可以降低噪声categorical_feature中的影响, 尤其是对数据很少的类别

input_model= 自填,string类型

要导入模型的路径

is_unbalance= default=false, type=bool

只适用于二分问题,推荐在样本不平衡时使用。

度量函数metric:太多了不列了 参考

定义标签,特征名和类别特征:

train_data = lgb.Dataset(data, label=label, feature_name=['c1', 'c2', 'c3'], categorical_feature=['c3'])
label 要学习的类别标签,feature_name按列赋特征名,
指定哪些列为categorical_feature(如职业:学生,教师。这样的特征是categorical_feature)。
categorical_featured的隔室
  • 用数字做索引, e.g. categorical_feature=0,1,2 意味着 column_0, column_1 和 column_2 是分类特征
  • 为列名添加前缀 name:, e.g. categorical_feature=name:c1,c2,c3 意味着 c1, c2 和 c3 是分类特征
  • Note: 只支持分类与 int type. 索引从 0 开始. 同时它不包括标签栏
  • Note: 负值的值将被视为 missing values

数据接口

LightGBM Python 模块能够使用以下几种方式来加载数据:

  • libsvm/tsv/csv txt format file(libsvm/tsv/csv 文本文件格式)
  • Numpy 2D array, pandas object(Numpy 2维数组, pandas 对象)
  • LightGBM binary file(LightGBM 二进制文件)

指定权重

train_data = lgb.Dataset(data, label=label, weight=w) 或者 train_data = lgb.Dataset(data, label=label) train_data.set_weight(w)

train_data = lgb.Dataset(data, label=label, weight=w)

每行数据的训练权重?

参数的设置

参数可以通过字典设置

param = {'num_leaves':31, 'num_trees':100, 'objective':'binary'}
param['metric'] = 'auc'

调参说明

https://lightgbm.apachecn.org/#/docs/7

缺失值的处理

  • LightGBM 通过默认的方式来处理缺失值,你可以通过设置 use_missing=false 来使其无效。
  • LightGBM 通过默认的的方式用 NA (NaN) 去表示缺失值,你可以通过设置 zero_as_missing=true 将其变为零。
  • 当设置 zero_as_missing=false (默认)时,在稀疏矩阵里 (和LightSVM) ,没有显示的值视为零。
  • 当设置 zero_as_missing=true 时, NA 和 0 (包括在稀疏矩阵里,没有显示的值)视为缺失。

lightgbm 学习笔记的更多相关文章

  1. 学习笔记之Data Science

    Data science - Wikipedia https://en.wikipedia.org/wiki/Data_science Data science, also known as data ...

  2. CTR预估模型演变及学习笔记

    [说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] [再啰嗦一下]如果你对智能推荐感兴趣,欢迎先浏览我的另一篇随笔:智能推荐算法演 ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  5. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  6. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  7. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  8. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  9. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

随机推荐

  1. Hacker Cups and Balls Gym - 101234A 二分+线段树

    题目:题目链接 题意:有编号从1到n的n个球和n个杯子. 每一个杯子里有一个球, 进行m次排序操作,每次操作给出l,r. 如果l<r,将[l,r]范围内的球按升序排序, 否则降序排, 问中间位置 ...

  2. POJ:3126-Prime Path

    题目链接:http://poj.org/problem?id=3126 Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submiss ...

  3. [Noip2016]组合数(数论)

    题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...

  4. Json的用处一

    今天,我们用到了json的的用处,其实也就是一个很简单的用处,就是点击一个按钮,触发一个事件,然后调用json, 之后我们就可以进行异步操作,其实只是针对于后台的操作,其实我们并没有对数据库进行刷新, ...

  5. 如何让button保持点击状态

    http://blog.csdn.net/u010957508/article/details/38385207 他的原理就是在代码里面: view.setSelected(true); 而其他的: ...

  6. Java中的初始化详细解析

    今天所要详细讲解的是Java中的初始化,也就是new对象的过程中,其程序的行走流程. 先说没有静态成员变量和静态代码块的情况. public class NormalInit { public sta ...

  7. 【转】Git命令解说

    3.12. Git branch  3.12.1. 总述  当第一次执行git init时,系统就会创建一个名为“master”的分支. 而其它分支则通过手工创建.  下面列举一些常见的分支策略:  ...

  8. 使用Html5shiv.js让ie支持html5

    ie低版本不支持html5标签,可以引入一段脚本,在ie浏览器中创建html5的标签. 1,可以在网上下载html5shiv的压缩包,引入压缩版的html5shiv.min.js即可. 脚本引用要在h ...

  9. 修改MySQL数据库字符集

      Preface       I've demonstrated how to change character set in Oracle database in my previous blog ...

  10. paramiko类Fabric主机管理

    环境:Linux python3.5 要求:类 Fabric 主机管理程序开发:1. 运行程序列出主机组或者主机列表2. 选择指定主机或主机组3. 选择让主机或者主机组执行命令或者向其传输文件(上传/ ...