考虑一个简单的例子来演示GBDT算法原理

下面是一个二分类问题,1表示可以考虑的相亲对象,0表示不考虑的相亲对象

特征维度有3个维度,分别对象
身高,金钱,颜值

 
 

cat dating.txt

#id,label,hight,money,face

_0,1,20,80,100

_1,1,60,90,25

_2,1,3,95,95

_3,1,66,95,60

_4,0,30,95,25

_5,0,20,12,55

_6,0,15,14,99

_7,0,10,99,2

 
 

这个例子仅仅为了试验,数据量很小没有更多统计意义。

 
 

0,1,2,3对应可以考虑的相亲对象

4,5,6,7 对应不考虑的相亲对象

 
 

先看一下gbdt训练的结果

mlt dating.txt -cl gbdt -ntree 2 -nl 3 -lr 0.1 -mil 1 -c train -vl 1 -mjson=1

设置2棵树,叶子节点最多3个
也就是最多2次分裂,learning rate设置为0.1,
叶子节点中的最少样本数设置为1(仅供试验,一般不会设置为1,避免过拟合)

为了打印二叉树设置输出json格式的模型

 
 

Per feature gain:

0:face 1

1:hight 0.730992

2:money 0.706716

Sigmoid/PlattCalibrator calibrating [ 8 ] (0.00011 s)100% |******************************************|

I0324 16:57:53.240083 17630 time_util.h:113] Train! finished using: [1.486 ms] (0.001486 s)

I0324 16:57:53.240094 17630 time_util.h:102] Test itself! started

 
 

TEST POSITIVE RATIO:        0.5000 (4/(4+4))

 
 

Confusion table:

||===============================||

|| PREDICTED ||

TRUTH || positive | negative || RECALL

||===============================||

positive|| 4 | 0 || 1.0000 (4/4)

negative|| 0 | 4 || 1.0000 (4/4)

||===============================||

PRECISION 1.0000 (4/4) 1.0000(4/4)

LOG LOSS/instance:                0.2981

TEST-SET ENTROPY (prior LL/in):        1.0000

LOG-LOSS REDUCTION (RIG):        70.1854%

 
 

OVERALL 0/1 ACCURACY:        1.0000 (8/8)

POS.PRECISION:                1.0000

PPOS.RECALL:                1.0000

NEG.PRECISION:                1.0000

NEG.RECALL:                1.0000

F1.SCORE:                 1.0000

AUC: [1.0000]

 
 

对应这个例子,训练结果是perfect的,全部正确,
特征权重可以看出,对应这个例子训练结果颜值的重要度最大,看一下训练得到的树。

print-gbdt-tree.py --tree -1

Tree 0:

Tree 1:

 
 

 
 

 
 

GBDT原理实例演示 1的更多相关文章

  1. GBDT原理实例演示 2

        一开始我们设定F(x)也就是每个样本的预测值是0(也可以做一定的随机化) Scores = { 0, 0, 0, 0, 0, 0, 0, 0}     那么我们先计算当前情况下的梯度值     ...

  2. 审核流(3)低调奢华,简单不凡,实例演示-SNF.WorkFlow--SNF快速开发平台3.1

    下面我们就从什么都没有,结合审核流进行演示实例.从无到有如何快速完美的实现,然而如此简单.低调而奢华,简单而不凡. 从只有数据表通过SNF.CodeGenerator代码生成器快速生成单据并与审核流进 ...

  3. JAVA之旅(十二)——Thread,run和start的特点,线程运行状态,获取线程对象和名称,多线程实例演示,使用Runnable接口

    JAVA之旅(十二)--Thread,run和start的特点,线程运行状态,获取线程对象和名称,多线程实例演示,使用Runnable接口 开始挑战一些难度了,线程和I/O方面的操作了,继续坚持 一. ...

  4. ASP.NET Core 6框架揭秘实例演示[01]: 编程初体验

    作为<ASP.NET Core 3框架揭秘>的升级版,<ASP.NET Core 6框架揭秘>提供了很多新的章节,同时对现有的内容进行大量的修改.虽然本书旨在对ASP.NET ...

  5. ASP.NET Core 6框架揭秘-实例演示版[持续更新中…]

    作为<ASP.NET Core 3框架揭秘>的升级版,<ASP.NET Core 6框架揭秘>提供了很多新的章节,同时对现有的内容进行大量的修改.虽然本书旨在对ASP.NET ...

  6. ASP.NET Core 6框架揭秘实例演示[28]:自定义一个服务器

    作为ASP.NET Core请求处理管道的"龙头"的服务器负责监听和接收请求并最终完成对请求的响应.它将原始的请求上下文描述为相应的特性(Feature),并以此将HttpCont ...

  7. SSO之CAS单点登录实例演示

    本文目录: 一.概述 二.演示环境 三.JDK安装配置 四.安全证书配置 五.部署CAS-Server相关的Tomcat 六.部署CAS-Client相关的Tomcat 七. 测试验证SSO 一.概述 ...

  8. Thrift入门及Java实例演示<转载备用>

    Thrift入门及Java实例演示 作者: Michael 日期: 年 月 日 •概述 •下载配置 •基本概念 .数据类型 .服务端编码基本步骤 .客户端编码基本步骤 .数据传输协议 •实例演示(ja ...

  9. 原生JS编写的照片墙效果实例演示特效

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. WEB前端知识在乱花渐欲迷人眼的当下,如何分清主次和学习优先级呢?

    从正美的吐槽开始,我回了下,说对盲目跟风的大众失去信心了.然后一些同学说我固步自封,另一些同学估计想说倚老卖老啥的.我想说清楚一点,我从 未停止过学习,只是对知识的重要程度和精力分配有自己的观点.具体 ...

  2. php中发送email

    一.使用PHP内置的mail()函数 看了一下手册,就直接开始写代码了,如下 <?php $to = "test@163.com"; //收件人 $subject = &qu ...

  3. HDU 1083 网络流之二分图匹配

    http://acm.hdu.edu.cn/showproblem.php?pid=1083 二分图匹配用得很多 这道题只需要简化的二分匹配 #include<iostream> #inc ...

  4. python gui之tkinter语法杂记

    随手写的,后续整理. 1. Entry如何调用父类的__init__? 以下错,原因后续分析 super(Your_Entry_Class, self).__init__(self,**kw) 报错: ...

  5. maven package

    maven package test包下执行test 的配置文件 生成target目录,编译.测试代码,生成测试报告,生成jar/war文件 maven 配置文件详解 http://blog.csdn ...

  6. ModelState.IsValid

    model内的设置如下所示: /// <summary> /// 取得或设置邮编 /// </summary> [RegularExpression(@"(^[1-9 ...

  7. Storm集成Kafka应用的开发

    我们知道storm的作用主要是进行流式计算,对于源源不断的均匀数据流流入处理是非常有效的,而现实生活中大部分场景并不是均匀的数据流,而是时而多时而少的数据流入,这种情况下显然用批量处理是不合适的,如果 ...

  8. filter 简介

    概述 filter() 方法使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组. 语法 var new_arrary = arr.filter(callback[, thisArg] ...

  9. ajax+json+Struts2实现list传递实例讲解

    由于学习需要,需要通过ajax来获取后台的List集合里面的值.由于前面没有接触过,所以今天就来研究下了. 一.首先需要下载JSON依赖的jar包.它主要是依赖如下: json-lib-2.2.2-j ...

  10. python2.7之MySQLdb模块 for linux安装

    1.下载:MySQL-pythonhttp://sourceforge.net/projects/mysql-python/files/mysql-python-test/1.2.3b1/MySQL- ...