XGB

XGBoost类库使用小结

半腔热情 提交于 2020-08-09 13:59:49
    在 XGBoost算法原理小结 中,我们讨论了XGBoost的算法原理,这一片我们讨论如何使用XGBoost的Python类库,以及一些重要参数的意义和调参思路。     本文主要参考了 XGBoost的Python文档 和 XGBoost的参数文档 。 1. XGBoost类库概述     XGBoost除了支持Python外,也支持R,Java等语言。本文关注于Python的XGBoost类库,安装使用"pip install xgboost"即可,目前使用的是XGBoost的0.90版本。XGBoost类库除了支持决策树作为弱学习器外,还支持线性分类器,以及带DropOut的决策树DART,不过通常情况下,我们使用默认的决策树弱学习器即可,本文也只会讨论使用默认决策树弱学习器的XGBoost。     XGBoost有2种Python接口风格。一种是XGBoost自带的原生Python API接口,另一种是sklearn风格的API接口,两者的实现是基本一样的,仅仅有细微的API使用的不同,主要体现在参数命名上,以及数据集的初始化上面。 2. XGBoost类库的基本使用方式     完整示例参见我的 Github代码 。 2.1 使用原生Python API接口     XGBoost的类库的2种接口风格,我们先来看看原生Python API接口如何使用。    

spark-xgboost8.1 java 例子

旧时模样 提交于 2020-05-06 10:18:02
第一个xgb的例子,还算顺利 public class Xgb2 implements Serializable{ /** * */ private static final long serialVersionUID = 1L; public static void main(String[] args) throws Exception { Long start=System.currentTimeMillis(); SparkSession s= SparkSession.builder().appName("XgbTrain").getOrCreate(); Xgb2 main=new Xgb2(); main.udf(s); main.read(s); HttpClientUtil.sendDingMessage("耗时:"+(System.currentTimeMillis()-start)/1000+"s"); } public void udf(SparkSession s) { s.udf().register("strToDouble", new UDF1<String, Double>() { private static final long serialVersionUID = 1L; @Override public Double call(String

梯度提升树之DBDT算法的介绍

落花浮王杯 提交于 2020-04-24 23:10:05
主要内容: 1.梯度提升决策树(GBDT)原理 1.1模型介绍 2.GBDT算法步骤 2.1GBDT算法在分类问题上的操作步骤 2.2GBDT算法在预测问题上的操作步骤 2.3GBDT函数介绍 3.GBDT示例 4.GBDT特点及应用 5.GBDT算法的应用——信用卡是否违约的识别 1.梯度提升决策树(GBDT)原理 决策树分为回归树与分类树,分类树的结果不能进行加减运算,回归树的结果是数值,可以进行加减运算,比如身高和年龄等。分类树的损失函数一般用最大熵,回归树的损失函数一般永均方差。GBDT中的决策树是回归树。 如何在不改变原有模型的结构的基础上提升模型的拟合能力?增加一个新的模型,拟合其残差。 1.1模型介绍 梯度提升树算法实际上是提升算法的扩展版,在原始的提升算法中,如果损失函数为平方损失或指数损失,求解损失函数的最小值问题会非常简单,但如果损失函数为更一般的函数(如绝对值损失函数或Huber损失函数等),目标值的求解就会相对复杂很多。 梯度提升算法,是在第𝑚轮基础模型中,利用损失函数的负梯度值作为该轮基础模型损失值的近似,并利用这个近似值构建下一轮基础模型。利用损失函数的负梯度值近似残差的计算就是梯度提升算法在提升算法上的扩展,这样的扩展使得目标函数的求解更为方便。 2.GBDT算法步骤 2.1GBDT算法在分类问题上的操作步骤 2.2GBDT算法在预测问题上的操作步骤

GBDT+LR算法解析及Python实现

孤街醉人 提交于 2020-04-24 23:07:05
1. GBDT + LR 是什么 本质上GBDT+LR是一种具有stacking思想的二分类器模型,所以可以用来解决二分类问题。这个方法出自于Facebook 2014年的论文 Practical Lessons from Predicting Clicks on Ads at Facebook 。 2. GBDT + LR 用在哪 GBDT+LR 使用最广泛的场景是CTR点击率预估,即预测当给用户推送的广告会不会被用户点击。 点击率预估模型涉及的训练样本一般是上亿级别,样本量大,模型常采用速度较快的LR。但LR是线性模型,学习能力有限,此时特征工程尤其重要。现有的特征工程实验,主要集中在寻找到有区分度的特征、特征组合,折腾一圈未必会带来效果提升。GBDT算法的特点正好可以用来发掘有区分度的特征、特征组合,减少特征工程中人力成本。 从知乎 https://zhuanlan.zhihu.com/p/29053940 上看到了一个关于CTR的流程,如下图所示: 如上图,主要包括两大部分:离线部分、在线部分,其中离线部分目标主要是训练出可用模型,而在线部分则考虑模型上线后,性能可能随时间而出现下降,弱出现这种情况,可选择使用Online-Learning来在线更新模型: 2.1 离线部分 数据收集:主要收集和业务相关的数据,通常会有专门的同事在app位置进行埋点,拿到业务数据 预处理

矩池云 | 使用LightGBM来预测分子属性

末鹿安然 提交于 2020-03-27 09:36:18
3 月,跳不动了?>>> 今天给大家介绍提升方法(Boosting), 提升算法是一种可以用来减小监督式学习中偏差的机器学习算法。 面对的问题是迈可·肯斯(Michael Kearns)提出的:一组“弱学习者”的集合能否生成一个“强学习者”? 弱学习者一般是指一个分类器,它的结果只比随机分类好一点点。强学习者指分类器的结果非常接近真值。 大多数提升算法包括由迭代使用弱学习分类器组成,并将其结果加入一个最终的成强学习分类器。加入的过程中,通常根据它们的分类准确率给予不同的权重。加和弱学习者之后,数据通常会被重新加权,来强化对之前分类错误数据点的分类。 提升算法有种三个臭皮匠顶个诸葛亮的意思。在这里将使用微软的LightGBM这个提升算法,来预测分子的一个属性,叫做耦合常数。 导入需要的库 import os import time import datetime import json import gc from numba import jit import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline from tqdm import tqdm_notebook from sklearn.preprocessing import StandardScaler