lightgbm 学习笔记
首先是配置文件参数。参考自https://lightgbm.apachecn.org/#/docs/6
配置参数实在是太多了,大家还是去原文档查表吧orz
| 参数名 | 可选参数 | 作用 |
| config= | 自填,string类型 | 配置文件的路径 |
| task= | train, predict, convert_model |
训练;预测;转化为if-else 模型 |
|
|
回归 分类 交叉熵 lambdarank:标签是离散的整数,且数值越高品质越好。 |
|
| boosting= | gbdt, rf, dart, goss |
提升器:梯度提升决策树;随机森林;dart;基于梯度的单面采样 |
| data= | 自填 | 训练数据 |
| valid= | 自填,支持多组测试数据一起输入,输入时用‘,’隔开 | 测试数据 |
| num_iterations= | 自填,int类型,默认100 | 迭代次数 |
| num_leaves= | 自填,double型,默认31 | 单棵树的叶子数 |
| tree_learner= | serial, feature, data, voting |
决定是否并行学习:不并发;按特征并行学习;按数据并行学习;按投票并行学习。 |
| 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(禁用)。 |
如果一个验证集的度量在
|
| 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: 只支持分类与
inttype. 索引从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 学习笔记的更多相关文章
- 学习笔记之Data Science
Data science - Wikipedia https://en.wikipedia.org/wiki/Data_science Data science, also known as data ...
- CTR预估模型演变及学习笔记
[说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] [再啰嗦一下]如果你对智能推荐感兴趣,欢迎先浏览我的另一篇随笔:智能推荐算法演 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
随机推荐
- 一个操作轻松截取长图,Win10上网截长图小技巧!
截屏的方法有很多,但是有时候我们会遇到比电脑屏幕还大的图,比如网站上的长图.N条引用的评论...你要怎么截取呢?是不是最多只能截全屏?还是要做到第三方的截图软件呢? 下面介绍一种win10电脑自带的滚 ...
- 第二章习题 C++
1.编写一个程序,显示您的姓名和地址. #include<iostream> using namespace std; int main() { ]; cout << &quo ...
- 开放定址法——平方探测(Quadratic Probing)
为了消除一次聚集,我们使用一种新的方法:平方探测法.顾名思义就是冲突函数F(i)是二次函数的探测方法.通常会选择f(i)=i2.和上次一样,把{89,18,49,58,69}插入到一个散列表中,这次用 ...
- html_outputer.py
coding=UTF-8 # HTML输出器 import sys class htmlOutputer(): def __init__(self): self.data = [] def colle ...
- Wind Of Change
Wind of change until the end 变革的风一直吹直至最后 You will see that I will be your friend 你会看见我成为你的朋友 If you ...
- bitset学习
bitset是个好东西.嗯.贼sao~ 很早就讲过但是我并没有弄懂.(现在也不敢说明白) 首先bitset是有常数的,而且常数并不能忽略不计——$(\frac{1}{32})$ 目前我也只是会bits ...
- svn TortoiseSVN 回滚版本
原文链接: http://keenwon.com/1072.html SVN是一个版本管理工具,在工作中经常使用,尤其是多人合作开发的时候,版本管理显得更加重要.需要使用回退的场景往往都比较" ...
- Android 人脸识别
Android人脸识别技术,可以参考下面的网站. http://www.faceplusplus.com.cn/ 本项目使用的就是该网站的api. 项目具体使用的技术代码 /** * 用来压缩图片的方 ...
- Java-JNA使用心得2
自5月初第一次尝试使用Java封装调用C的dll之后,已经先后经历了3次小项目了. 上月末是最近的一次项目实际,任务来的急时间又少,还好在加班加点后还是完成了任务,并把第二次没有实现的功能给实现了(C ...
- adb logcat 日志过滤
方法 1.采用wpa_supplicant:s *:v 排除wpa_supplicant标签 adb -s 01d32e89cb94d599 logcat -v time -s wpa_suppl ...