gbdt

GBDT与XGBOOST

情到浓时终转凉″ 提交于 2020-01-25 19:56:59
Boosting方法实际上是采用加法模型与前向分布算法。在上一篇提到的Adaboost算法也可以用加法模型和前向分布算法来表示。以决策树为基学习器的提升方法称为提升树(Boosting Tree)。对分类问题决策树是CART分类树,对回归问题决策树是CART回归树。 1、前向分布算法   引入加法模型      在给定了训练数据和损失函数L(y,f(x))L(y,f(x)) 的条件下,可以通过损失函数最小化来学习加法模型      然而对于这个问题是个很复杂的优化问题,而且要训练的参数非常的多,前向分布算法的提出就是为了解决模型的优化问题,其核心思想是因为加法模型是由多各模型相加在一起的,而且在Boosting中模型之间又是有先后顺序的,因此可以在执行每一步加法的时候对模型进行优化,那么每一步只需要学习一个模型和一个参数,通过这种方式来逐步逼近全局最优,每一步优化的损失函数:      具体算法流程如下:   1)初始化f0(x)=0f0(x)=0;   2)第m次迭代时,极小化损失函数      3)更新模型,则$f_m (x)$:      4)得到最终的加法模型       Adaboost算法也可以用前向分布算法来描述,在这里输入的数据集是带有权重分布的数据集,损失函数是指数损失函数。 2、GBDT算法   GBDT是梯度提升决策树(Gradient Boosting

LightGBM 训练及调参

一曲冷凌霜 提交于 2020-01-19 23:22:22
LightGBM是微软开源的一个快速的,分布式的,高性能的基于决策树算法的梯度提升算法,对比于XGBoost算法来说准确率在大部分情况下相较无几,但是在收敛速度,内存占用情况下相较于XGBoost来说较为优秀。详细的算法原理可见LightGBM官方文档。 在已经有了训练值和label的情况下可以创建lightgbm进行训练了,这里我是先对数据集进行划分得到了X_train,X_test, y_train, y_test from sklearn . model_selection import train_test_split X_train , X_test , y_train , y_test = train_test_split ( train , target_train , test_size = 0.3 , random_state = 0 ) 然后将X_train在用K-Fold划分进行训练,训练的代码: from sklearn . metrics import r2_score import lightgbm as lgb from lightgbm import LGBMRegressor from sklearn . model_selection import KFold , cross_val_score , GridSearchCV import

集成算法之GBDT和xgboost

大兔子大兔子 提交于 2020-01-18 01:47:57
大家知道,我们在进行建模时,会求解一个目标函数;目标函数又称代价函数,在机器学习中普遍存在,一般形式为: o b j ( θ ) = L ( θ ) + Ω ( θ ) obj(\theta)=L(\theta)+\Omega(\theta) o b j ( θ ) = L ( θ ) + Ω ( θ ) ; 其中: L ( θ ) L(\theta) L ( θ ) 为训练误差,衡量模型在训练集上的表现; Ω ( θ ) \Omega(\theta) Ω ( θ ) 是正则化惩罚,衡量模型的复杂度。 训练集误差: L = ∑ i = 1 n l ( y i , y i ^ ) L=\sum_{i=1}^{n}l(y_i,\hat{y_i}) L = ∑ i = 1 n ​ l ( y i ​ , y i ​ ^ ​ ) square loss: l ( y i , y i ^ ) = ( y i − y i ^ ) 2 l(y_i,\hat{y_i})=(y_i-\hat{y_i})^2 l ( y i ​ , y i ​ ^ ​ ) = ( y i ​ − y i ​ ^ ​ ) 2 logistic loss: l ( y i , y i ^ ) = y i l n ( 1 + e − y i ^ ) + ( 1 − y i ) l n ( 1 + e y i ^ ) l(y

【技术分享】GBDT算法-原理篇

ぃ、小莉子 提交于 2020-01-15 17:28:19
本文原作者:蒋凯,经授权后发布。 原文链接: https://cloud.tencent.com/developer/article/1509000 导语 :工业界机器学习大杀器解读。 GBDT是常用的机器学习算法之一,因其出色的特征自动组合能力和高效的运算大受欢迎。 这里简单介绍一下GBDT算法的原理,后续再写一个实战篇。 1、决策树的分类 决策树分为两大类,分类树和回归树。 分类树用于分类标签值,如晴天/阴天/雾/雨、用户性别、网页是否是垃圾页面; 回归树用于预测实数值,如明天的温度、用户的年龄、网页的相关程度; 两者的区别: 分类树的结果不能进行加减运算,晴天+晴天没有实际意义; 回归树的结果是预测一个数值,可以进行加减运算,例如20岁+3岁=23岁。 GBDT中的决策树是回归树,预测结果是一个数值,在点击率预测方面常用GBDT,例如用户点击某个内容的概率。 2、GBDT概念 GBDT的全称是Gradient Boosting Decision Tree,梯度提升决策树。 要理解GBDT,首先就要理解这个B(Boosting)。 Boosting是一族可将弱学习器提升为强学习器的算法,属于集成学习(ensemble learning)的范畴。Boosting方法基于这样一种思想:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断

FM算法解析及Python实现

女生的网名这么多〃 提交于 2020-01-14 02:13:18
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位置进行埋点,拿到业务数据 预处理

GBDT与LR融合提升广告点击率预估模型

£可爱£侵袭症+ 提交于 2020-01-14 02:12:11
1GBDT和LR融合 LR模型是线性的,处理能力有限,所以要想处理大规模问题,需要大量人力进行特征工程,组合相似的特征,例如user和Ad维度的特征进行组合。 GDBT天然适合做特征提取,因为GBDT由回归树组成所以, 每棵回归树就是天然的有区分性的特征及组合特征,然后给LR模型训练,提高点击率预估模型(很多公司技术发展应用过,本人认为dnn才是趋势)。 例如,输入样本x,GBDT模型得到两颗树tree1和tree2,遍历两颗树,每个叶子节点都是LR模型的一个维度特征,在求和每个叶子*权重及时LR模型的分类结果。 2广告长尾性 1)gbdt和随机森林rf的对比: rf主要选择对大多数样本有区分度的特征;gbdt的过程,前面树针对大多数样本有区分 ,后面树针对残差依然较大的样本,即针少数的对长尾样本。更适合ctr模型预估。 2)针对广告的长尾性,广告id这个特征就很重要,比如:某少量长尾用户就喜欢点某类广告主的广告。 方案:分别针对ID类和非ID类建树,ID类树:用于发现曝光充分的ID对应的有区分性的特征及组合特征;非ID类树:用于曝光较少的广告。 3gbdt得到的特征维度 维度会降低,总维度是所有叶子节点数之和。 4gdbt模型原理 1)BT回归树 年龄预测:简单起见训练集只有4个人,A,B,C,D,他们的年龄分别是14,16,24,26。其中A、B分别是高一和高三学生;C

机器学习(5)之集成学习(RF\\AdaBoost\\GBDT)

╄→гoц情女王★ 提交于 2020-01-03 12:35:23
目录 1 集成学习的思想 1.1 Bagging简介 1.2 Boosting简介 1.3 Stacking简介 2 随机森林(Random Forest) 2.1 算法流程 2.3 TRTE 2.4 Isolation Forest(IForest) 2.5 RF随机森林的优缺点 3 AdaBoost 3.1 算法原理 3.2 算法的构建过程 3.3 总结 4 GBDT 4.1 算法原理 4.2 GBDT回归算法和分类算法 4.3 总结 1 集成学习的思想 集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新学习器。弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测的分类器(errorrate < 0.5)。 集成算法的成功在于保证弱分类器的多样性(Diversity)。而且集成不稳定的算法也能够得到一个比较明显的性能提升。 常见的集成学习思想有:Bagging、Boosting、Stacking 1.1 Bagging简介 Bagging方法又叫做自举汇聚法(Bootstrap Aggregating), 思想 :在原始数据集上通过 有放回的抽样 的方式,重新选择出S个新数据集来分别训练S个分类器的集成技术。也就是说这些模型的训练数据中允许存在重复数据。 Bagging方法训练出来的模型在预测新样本分类的时候,会使用 多数投票或者求均值

【机器学习基础算法系列】【肆】全面详解GBDT(Gradient Boosting Decision Tree)

泄露秘密 提交于 2019-12-26 15:43:41
文章目录 算法流程 常见问题 算法流程 回归树的生成【参考李航书, CART决策树算法浅谈(回归树部分) 讲的也比较好】: 1)穷举扫描每一个属性特征及其取值,选取使均方误差最小的特征进行分枝; 2)根据划分到两个分枝的数据子集对应的y的平均值获得c1和c2,分别计算两个数据子集的平均绝对误差,选取可以使均方误差最小的特征和取值对作为节点,并确定子节点处的预测值为对应的c1和c2; 3)对子节点重复1)2)直到满足停止条件,递归地将数据集分割为更小的部分,直到总均方差的下降值小于某阈值或者数据集中只剩下一类数据为止; 4)将输入空间分为M个区域R 1 R M~,生成决策树; 前向分步算法,拟合残差直到分类完成或达到预设的终止条件,实现决策树的递归构建。 常见问题 gbdt 如何选择特征 ? CART回归树用平方误差最小化选择特征 gbdt 如何构建特征 ? GBDT的叶子节点编号可以与LR融合使用,落在的叶子为1,没有落到的为0 gbdt 如何用于分类? 对于多分类任务,训练时对N类都训练一个分类回归树,然后对于这N个输出计算交叉熵 gbdt 通过什么方式减少误差 ? 通过前向分步算法:即每棵树都是在拟合当前模型的预测值和真实值之间的误差,通过不断迭代减小误差 gbdt的效果相比于传统的LR,SVM效果为什么好一些 ? GBDT基于树模型,继承了树模型的优点 :对异常点鲁棒

机器学习:集成学习:随机森林.GBDT

一曲冷凌霜 提交于 2019-12-25 00:45:05
集成学习(Ensemble Learning) 集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新学习器.弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测的分类器(error rate < 0.5); 集成算法的成功在于保证弱分类器的多样性(Diversity).而且集成不稳定的算法也能够得到一个比较明显的性能提升 常见的集成学习思想有: Bagging Boosting Stacking Why need Ensemble Learning? 1. 弱分类器间存在一定的差异性,这会导致分类的边界不同,也就是说可能存在错误。那么将多个弱分类器合并后,就可以得到更加合理的边界,减少整体的错误率,实现更好的效果; 2. 对于数据集过大或者过小,可以分别进行划分和有放回的操作产生不同的数据子集,然后使用数据子集训练不同的分类器,最终再合并成为一个大的分类器; 3. 如果数据的划分边界过于复杂,使用线性模型很难描述情况,那么可以训练多个模型,然后再进行模型的融合; 4. 对于多个异构的特征集的时候,很难进行融合,那么可以考虑每个数据集构建一个分类模型,然后将多个模型融合。 Bagging方法 Bagging方法又叫做自举汇聚法(Bootstrap Aggregating),思想是:在原始数据集上通过有放回的抽样的方式

#Paper Reading# DeepGBM: A Deep Learning Framework Distilled by GBDT for Online Prediction Tasks

自闭症网瘾萝莉.ら 提交于 2019-12-22 08:34:14
论文题目: DeepGBM: A Deep Learning Framework Distilled by GBDT for Online Prediction Tasks 论文地址: https://dl.acm.org/citation.cfm?id=3330858 论文发表于: KDD 2019 论文大体内容: 本文主要提出了DeepGBM模型,来整合NN与GBDT的优势,支持sparse特征和dense特征,并且是end2end的训练流程,也适用于online training。经过实验,该模型在常见的数据集(如Criteo等)上取得state-of-art的效果。 Motivation: GBDT是传统的方法,对dense特征特别有效,目前也在工业届/比赛广泛使用,但是它不能很好处理sparse特征,而NN对sparse特征处理的特别好,如何将它们结合起来以取得更好的效果,是特别重要的。 Contribution: 本文作者提出DeepGBM模型,通过对sparse特征和dense特征分别使用2个不同的模型来处理,CatNN(任意处理sparse特征的模型,在这里直接使用DeepFM)来处理sparse特征,GBDT2NN(NN版GBDT)来处理dense特征,最后将两者结合以达到更好的效果; 1. DeepGBM的framework如下图