博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
L2R 三:常用工具包介绍之 XGBoost与LightGBM
阅读量:6996 次
发布时间:2019-06-27

本文共 3568 字,大约阅读时间需要 11 分钟。

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为0num_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

  

  

  

转载于:https://www.cnblogs.com/zidiancao/p/8746921.html

你可能感兴趣的文章
array_filter
查看>>
[CC-ANUCBC]Cards, bags and coins
查看>>
Riemann-Stieltjes积分存在的充分条件(按照Tom M.Apostol的《数学分析》上的定义)
查看>>
[转]前端开发十日谈 下
查看>>
ahjesus —— javascript命名规范1.10
查看>>
caller 和 callee的对比
查看>>
使用GDB调试gp(转载)
查看>>
用Python给你的博客加上水印
查看>>
线性微分方程与常数变异法
查看>>
选夫婿1 结构体
查看>>
最少硬币数目的问题
查看>>
算法之折半查找
查看>>
webpack实用小功能介绍
查看>>
OpenStack high-level Functionsenabled
查看>>
深入理解Linux内核-内核同步
查看>>
zabbix实现mysql数据库的监控(三)
查看>>
外观模式-多了个办事处
查看>>
laravel 文件上传
查看>>
《寻路算法第二篇》A*寻路的路径平滑、静态合并、生成格子工具自动化、
查看>>
求职防骗指南
查看>>