L2R 三:常用工具包介绍之 XGBoost与LightGBM
L2R最常用的包就是XGBoost 和LightGBM,xgboost因为其性能及快速处理能力,在机器学习比赛中成为常用的开源工具包, 2016年微软开源了旗下的lightgbm(插句题外话:微软的人真是够谦虚的,开源的包都是light前缀,公司更是micro),对标xgboost,在结果相差不大的前提下,显著缩短了训练时间。
先占个坑,等有空展开写写。
下面分别介绍下两者:
一、XGBoost
1.git地址:https://github.com/dmlc/xgboost 参数说明:http://xgboost.readthedocs.io/en/latest/python/python_api.html
2.改进思想
2.1 算法方面
2.1.1 SPLIT FINDING ALGORITHMS
2.2 系统实现
2.2.1 Column Block for Parallel Learning
2.2.2 Cache-aware Access
3.参数说明
xgboost参数
params = {'seed':0, 'objective':'reg:tweedie', 'eval_metric':'tweedie-nloglik@1.2', 'tweedie_variance_power':1.2}
params = {'seed':0, 'objective':'reg:linear', 'eval_metric':'rmse'} param = {
'eta':0.1,
#为了防止过拟合,更新过程中用到的收缩步长。在每次提升计算之后,算法会直接获得新特征的权重。 eta通过缩减特征的权重使提升计算过程更加保守。
#缺省值为0.3 'max_depth':3,
#数的最大深度。缺省值为6 'silent':0,
#取0时表示打印出运行时信息,取1时表示以缄默方式运行,不打印运行时信息。缺省值为0 'objective':'reg:gamma', 'tweedie_variance_power':1.7,
#parameter that controls the variance of the Tweedie distribution var(y) ~ E(y)^tweedie_variance_power
#取值range: (1,2) 2为gamma分布、1为Poisson分布 "tree_method":"approx", "colsample_bytree":1.0,
#在建立树时对特征采样的比例。缺省值为1 "subsample":1,
#用于训练模型的子样本占整个样本集合的比例。如果设置为0.5则意味着XGBoost将随机的冲整个样本集合中随机的抽取出50%的子样本建立树模型,
这能够防止过拟合。 'sketch_eps':0.03, (默认值) "updater":'grow_histmaker,prune',
#‘grow_histmaker’: distributed tree construction with row-based data splitting based on global proposal of histogram counting.
#‘prune’: prunes the splits where loss < min_split_loss (or gamma). 'lambda': 0.1
#Parameter for Linear Booster L2 正则的惩罚系数 default为0
"alpha":0.5,
#Parameter for Linear Booster L1 正则的惩罚系数 default为0 num_round = tree_num train阶段进行设置
#The number of rounds for boosting
二、LightGBM
1.git地址:https://github.com/Microsoft/LightGBM 入门安装文档:https://lightgbm.readthedocs.io/en/latest/ 中文文档:http://lightgbm.apachecn.org/cn/latest/Quick-Start.html
2. 改进思想
2.1 histgram 算法
2.2 GOSS
3.lightgbm模型文件解析
配置文件备注1: 配置文件根据不同任务在examples中各个子文件夹中都有示例,额外的参数是可以指定categorical_column,这个主要是区别于连续变量,这两种类型的变量在lightgbm中可以都只占一列,而不需特别进行离散化。
配置文件备注2: categorical特征和continuous特征的缺失值分别用'NA'和‘-1’表示。
首先,模型文件主要分三部分:模型基本概况 、各个子树的信息以及各个特征重要性说明。
3.1 模型基本概况
主要包括:
num_class=1(二分类与listwise均为1,转换成概率),
label_index(目标所在的列序号),
max_feature_idx(特征最大列数,从0开始计数,和feature_names呼应)
feature_infos(列出每个特征的取值范围,连续变量用中括号区间表示, 离散值用冒号分隔,挨个枚举列出来, 没有发挥作用就用none表示)
tree_sizes(每棵树的size)
version=v2
配置信息:
categorical_column = 12,13,14,15,16,17,19,21,23,26,28,30,32,33,34,36,37,40,41,42,43,44,45,46,47,48,49,50,51,52,66,67,160,164,202,203,214,230,231,233,236,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,276,277
3.2 各子树基本信息
Tree = 0 :第一棵树
num_leaves=128: 叶子节点数,N个。
num_cat:切分特征中,属于categorical特征的总数,多次切分计多次。M个。
split_feature:每次分裂时的特征,128个叶子节点便有127次分裂,N-1个
split_gain: 每次分裂的信息增益,127次分裂便有127个分裂增益值,N-1个数值,且逐渐减小。
threshold :每个特征分裂的阈值, 127次分裂便有127个阈值,N-1个。
decision_type:N-1
left_child:处于左节点的节点编号,N-1个。
right_child:处于右节点的节点编号, N-1个。
// 这两个共同表明了树的结构,节点主要分为两种:内部节点+叶子节点。
// 内部节点的范围主要是1-N-2 (N-2个), 叶子节点以负号开头,主要是-N -- -1 (N个),合起来刚好2N-2个。
leaf_value:各个叶子节点的预测值,N个。
leaf_count: 每个叶子节点的样本数目,N个。加起来的数目应该是训练样本的数量 * bagging_fraction
internal_value:N-1个。各个中间节点(即内部节点)的预测值。
internal_count:N-1个。 各个中间节点(即内部节点)上的样本数目。
//internal 表示中间节点, leaf为叶子节点
cat_boundaries:M+1个,
cat_threshold:大小为cat_boundaries最后一个元素
shrinkage: 配置文件中设置,学习率。
3.3 特征重要性
Column_8=50, 所有特征中最重要的,后面的数值表示在所有树中,作为分裂特征的总次数。
Column_10=48
L2R 三:常用工具包介绍之 XGBoost与LightGBM的更多相关文章
- Linux下查看某个进程打开的文件数-losf工具常用参数介绍
Linux下查看某个进程打开的文件数-losf工具常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在linux操作系统中,一切皆文件.通过文件不仅仅可以访问常规数据,还 ...
- webpack基础+webpack配置文件常用配置项介绍+webpack-dev-server
一.webpack基础 1.在项目中生成package.json:在项目根目录中输入npm init,根据提示输入相应信息.(也可以不生成package.json文件,但是package.json是很 ...
- 3.Nginx常用功能介绍
Nginx常用功能介绍 Nginx反向代理应用实例 反向代理(Reverse Proxy)方式是指通过代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并且从内部网络服 ...
- 以太坊智能合约 Solidity 的常用数据类型介绍
目录 目录 1.数组 1.1.对数组的增删改查操作. 2.String.Bytes.Mapping的使用 3.Enums 和 Structs 的简单应用 4.Ether 单位和 Time 单位 5.A ...
- LINUX服务器搭建和常用配置介绍
服务器搭建 : 搭建私有CA服务器 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_011_ca.html搭建samba服务器 : h ...
- Ansible常用模块介绍及使用(week5_day1_part2)--技术流ken
Ansible模块 在上一篇博客<Ansible基础认识及安装使用详解(一)--技术流ken>中以及简单的介绍了一下ansible的模块.ansible是基于模块工作的,所以我们必须掌握几 ...
- MySQL常用函数介绍
MySQL常用函数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.操作符介绍 1>.操作符优先级 mysql; +----------+ | +----------+ ...
- Java基础-考察JVM内部结构的常用工具介绍
Java基础-考察JVM内部结构的常用工具介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们可以通过jvisualvm.exe考察jvm内部结构.而jvisualvm.exe ...
- Hadoop生态圈-zookeeper本地搭建以及常用命令介绍
Hadoop生态圈-zookeeper本地搭建以及常用命令介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.下载zookeeper软件 下载地址:https://www.ap ...
随机推荐
- 搭建的一套vue打包方案,方便记录一下
package.json 配置如下: { "name": "rise-vue", "version": "1.0.0", ...
- 计蒜客 38228. Max answer-线段树维护单调栈(The Preliminary Contest for ICPC China Nanchang National Invitational I. Max answer 南昌邀请赛网络赛) 2019ICPC南昌邀请赛网络赛
Max answer Alice has a magic array. She suggests that the value of a interval is equal to the sum of ...
- 初识 Python 作业及默写
1.简述变量量命名规范 2.name = input(“>>>”) name变量是什么数据类型? 3.if条件语句的基本结构? 4.用print打印出下面内容: 文能提笔安天下, 武 ...
- Spring AOP的实现记录操作日志
适用场景: 记录接口方法的执行情况,记录相关状态到日志中. 注解类:LogTag.java package com.lichmama.spring.annotation; import java.la ...
- Linux系统学习(一)一Linux介绍
一.Linux初识 1.1 Linux是什么 Linux是一种自由和开放源码的类UNIX操作系统,使用Linux内核.目前存在着许多不同的Linux发行版,可安装在各种各样的电脑硬件设备,从手机.平板 ...
- 使用OSCache优化性能,及JPA二级缓存
1.使用静态化页面技术: 要统计产品的浏览次数: 在<body> <img src="http://www.site.com/data/count.do?productId ...
- 多线程 fork/join 并行计算
1. 什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架. 我们再通过 ...
- 剑指offer:删除链表中重复的结点
题目描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理 ...
- IDEA版本控制忽略文件或目录
写在前面 废话不多说了, 新创建了个helloworld, 见图: 这谁受得了啊 修改配置 在上图红框内部的后面添加: *.iml;*.idea;*.gitignore;*.sh;*.classpat ...
- 解决Ubuntu系统“无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系”的有效方法
ubuntu系统下安装东西,很多时候会出现版本冲突的情况: 有效的解决方法是使用aptitude来帮助降级. 首先安装aptitude 而后使用aptitude来安装前面有冲突的构建,同样也是要使用r ...