gbdt

个性化排序算法实践(四)――GBDT+LR

匿名 (未验证) 提交于 2019-12-03 00:17:01
本质上GBDT+LR是一种具有 stacking 思想的二分类器模型,所以可以用来解决二分类问题。这个方法出自于Facebook 2014年的论文 Practical Lessons from Predicting Clicks on Ads at Facebook 。 GBDT+LR 使用最广泛的场景是CTR点击率预估,即预测当给用户推送的广告会不会被用户点击。 点击率预估模型涉及的训练样本一般是上亿级别,样本量大,模型常采用速度较快的LR。但LR是线性模型,学习能力有限,此时特征工程尤其重要。现有的特征工程实验,主要集中在寻找到有区分度的特征、特征组合,折腾一圈未必会带来效果提升。GBDT算法的特点正好可以用来发掘有区分度的特征、特征组合,减少特征工程中人力成本。 GBDT+LR 由两部分组成,其中GBDT用来对训练集提取特征作为新的训练输入数据,LR作为新训练输入数据的分类器。 GBDT首先对原始训练数据做训练,得到一个二分类器,当然这里也需要利用网格搜索寻找最佳参数组合。 与通常做法不同的是,当GBDT训练好做预测的时候,输出的并不是最终的二分类概率值,而是要把模型中的每棵树计算得到的预测概率值所属的叶子结点位置记为1,这样,就构造出了新的训练数据。 设GBDT有两个弱分类器,分别以蓝色和红色部分表示,其中蓝色弱分类器叶子结点个数为3,红色弱分类器叶子结点个数为2

GBDT

匿名 (未验证) 提交于 2019-12-02 23:57:01
1、GBDT模型介绍; 2、GBDT回归算法 3、GBDT分类算法 4、GBDT的损失函数 5、正则化 6、GBDT的梯度提升与梯度下降法的梯度下降的关系; 7、GBDT的优缺点 1、GBDT模型介绍; GBDT(Gradient Boosting Decision Tree) 又名:MART(Multiple Additive Regression Tree) 适用于分类和回归问题; 加法模型(基分类器的线性组合) 根据当前损失函数的负梯度信息来训练新加入的弱分类器,再将训练好的弱分类器以累加的形式结合到现有模型; 以决策树为基学习器的提升方法;一般会选择为CART(无论用于分类还是回归),也可以选择其他弱分类器的,选择的前提是低方差和高偏差,每次走一小步逐渐逼近结果的效果; 在训练过程中希望损失函数能够不断的减小,且尽可能快的减小。所以用的不是单纯的残差,而是损失函数的负梯度方向,这样保证每轮损失函数都在稳定下降,而且递减速度最快,类似于梯度下降法,来求损失函数的极小值; Shrinkage(缩减)的思想认为,每次走一小步逐渐逼近结果的效果,要比每次迈一大步很快逼近结果的方式更容易避免过拟合。即它不完全信任每一个棵残差树,它认为每棵树只学到了真理的一小部分,累加的时候只累加一小部分,通过多学几棵树弥补不足。 2、GBDT回归算法描述 步骤: 1、初始化

决策树

匿名 (未验证) 提交于 2019-12-02 23:42:01
一、随机森林RF与GBDT的区别 二者的共同点 ・ 都是由多棵树组成; ・ 最终的结果都由多棵树共同决定; ・ 生成样本集的时候都使用了boostrap; 二者的不同点 ・ 组成RF的可以是分类树也可以是回归树,但组成GBDT的只能是回归树; ・ RF可以并行,GBDT只能串行; ・ 对于输出结果,RF使用多数表决或简单平均,GBDT使用结果累加或加权平均RF对异常值不敏感,GBDT对异常值敏感(一个注重方差一个注重偏差) 方差和偏差的平衡技术 ・ RF注重减小模型方差来提高性能,GBDT通过减小模型偏差来提高性能RF不需要数据预处理,GBDT需要进行特征归一化(由于权重的问题)(待复查) 二、GBDT vs XGBOOST 二者的共同点 ・ XGBOOST作为GBDT应用层面的算法,基本构建在GB的思想上,在此就不讨论共同点了(太多了) ・ 但我们要知道一点:GBDT系算法在到XGBOOST为止,在生成决策树的时候是要求先对特征进行排序,再选出最显著的特征作为叶子结点进行分类的,这种特征选择方法为精确遍历,这一点在lightGRM上得到了改进。 二者的不同点(XGBOOST的改进) ・ 在优化上,GBDT只用了一阶泰勒展开,XGBOOST用了二阶泰勒展开・ ・ XGBOOST在损失函数中加入了正则项来控制过拟合:内含叶子结点个数、L2范式来代替剪枝 ・

微软开源可解释机器学习框架 interpret 学习实践

人走茶凉 提交于 2019-12-02 23:12:07
机器学习、深度学习往往给人一种黑盒的感觉,也就是它所表现出来的可解释性程度不高或者是很低,这就给学习使用带来了影响,如果能够对于机器学习的结果进行更好的解释那将会是很棒的。 今天基于微软开源的可解释机器学习框架interpret进行简单的学习实践,主要是想上手我刚刚配置好的jupyter环境来跑一波代码,下面先给出来GitHub地址,在 这里 。 使用基本的要求是python版本需要在3.5以上,在这里我正好使用的是3.6和kernel来进行实验的。 interpret的安装很简单,命令如下: pip install numpy scipy pyscaffold pip install -U interpret 安装方法虽然简单,但是安装的过程我个人觉得是比较漫长的,可能是我本地很多依赖的包版本比较低的缘故吧,在安装的过程中有10几个包都被卸载然后重新安装了新的版本了。 安装结束后我们就开始进行简单的实践【以波士顿房价数据为例】: 首先对数据集进行简单的探索可视化: 结果如下: 我们可以从summary的下拉框中选择不同的属性进行展示: 比如:这里我们选择第一个,结果如下: 接下来导入回归模型: 查看一下全局可解释性: 同样可以在下拉框中选择不同的信息进行查看,这里同样以第一个为例进行说明如下: 接下来查看一下局部的解释性: 我个人觉得这里还是很重要的

机器学习:集成学习

限于喜欢 提交于 2019-12-02 05:29:58
集成学习 基本概念 集成学习(Ensemble Learning)的 思想 是将若干个学习器(分类|回归)组合之后产生一个新的学习器, 如何产生“好而不同”的个体学习器,是集成学习研究的核心 ; 一般性用于集成的学习器都为 弱学习器 ,即学习器的预测精度不需要太高但是应该好于随机预测的结果; 集成学习 算法的成功 在于保证了弱分类器的多样性(Diversity),即学习器之间具有 差异性 弱分类器间存在一定的差异性,会导致分类的边界不同,即会存在错误;但当多个弱分类器合并后,就可以得到更加合理的边界,能减少错误率,实现更好的效果; 对于数据集过大/过小,可以进行划分/有放回抽样的操作产生不同的数据子集,然后使用数据子集训练不同的学习器,最后合并成一个大的学习器 若数据划分边界过于复杂,使用线性模式很难描述,可以训练多个模型,后将模型进行合并; 对于多个异构的特征集的时候,很难进行融合,那么可以考虑每个数据集构建一个学习器模型,然后将多个模型融合 常见的集成算法有: Bagging Boosting Stacking 按照集成方式划分: 串行集成方法:通过串行的方法生成基础模型(如AdaBoost);串行集成的 基本动机 是利用基础模型之间的依赖,给被错分的样本一个较大的权重来提升性能; 并行集成方法:并行的生成基础模型(若Random Forest);并行集成的 基本动机

集成学习(四):GBDT

怎甘沉沦 提交于 2019-12-01 15:41:40
GBDT算法: 所谓的GBDT(Gradient Boost Desicison Tree)就是值在每一步迭代时我们难以真正求得一个新的模型使得其加上原有模型得到的损失最小,但是我们可以用所谓的梯度下降法使得损失减小。 输入: 训练数据集$D+\lbrace(x_{1},y_{1}),...,(x_{N},y_{N})\rbrace$,$x_{i}\in\mathbb{R}^{P}$,$y_{i}\in\mathbb{R}$; 损失函数$l(f(x),y)$; 正整数$M$; 输出: 某回归模型 Step1. 令$f_{0}=argmin_{c}\sum_{i=1}^{N}l(y_{i},c)$ Step2. $m=1,...,M$, 执行: 1) 计算$g_{m,i}=\partial_{1} l(f_{m-1}(x_{i}),y_{i})$; 2) 对数据$\lbrace(x_{1},-g_{m,1}),...,(x_{N}-g_{m,N})\rbrace$ 用CART算法进行拟合,得到一回归树,并且对每个叶节点得到一个叶节点区域$R_{mj},$ $j=1,...,J$; 3) 计算: \begin{equation}c_{mj}=argmin_{c}\sum_{x_{i}\in R_{mj}}l(f_{m-1}(x_{i})+c)\end{equation} 4) 令:

集成学习个人学习总结

[亡魂溺海] 提交于 2019-12-01 05:49:18
说明 :本科普也是借助诸多集成学习文章学习总结而来。 集成学习 一般我们常说的集成学习的方法都是指的同质个体学习器。而同质个体学习器使用最多的模型是CART决策树和神经网络。同质个体学习器按照个体学习器之间是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是boosting系列算法,第二个是个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是bagging和随机森林(Random Forest)系列算法。 集成学习之boosting Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器。1. 根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器。2. 如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。 Boosting系列算法里最著名算法主要有AdaBoost算法和提升树(boosting tree)系列算法。提升树系列算法里面应用最广泛的是梯度提升树(Gradient Boosting Tree)。 AdaBoost算法原理 Boosting需要解决如下几个问题:

GBDT 算法

陌路散爱 提交于 2019-11-30 18:54:08
GBDT (Gradient Boosting Decision Tree) 梯度提升迭代决策树。GBDT 也是 Boosting 算法的一种,但是和 AdaBoost 算法不同(AdaBoost 算法上一篇文章已经介绍);区别如下:AdaBoost 算法是利用前一轮的弱学习器的误差来更新样本权重值,然后一轮一轮的迭代;GBDT 也是迭代,但是 GBDT 要求弱学习器必须是 CART 模型,而且 GBDT 在模型训练的时候,是要求模型预测的样本损失尽可能的小。 GBDT 直观理解:每一轮预测和实际值有残差,下一轮根据残差再进行预测,最后将所有预测相加,就是结果。 GBDT 模型可以表示为决策树的加法模型: 其中,T(x;θm)表示决策树;θm 为决策树的参数; M为树的个数。 采用前向分布算法, 首先确定初始提升树 fo(x) = 0, 第 m 步的模型是: 通过经验风险极小化确定下一棵树的参数:(其实就是让残差尽可能的小找到最优划分点) 这里的 L() 是损失函数,回归算法选择的损失函数一般是均方差(最小二乘)或者绝对值误差;而在分类算法中一般的损失函数选择对数函数来表示 GBDT 既可以做回归也可以做分类,下面先描述一下做回归的算法流程: 已知一个训练数据集 T = {(x1,y1),(x2,y2),...,(xn,yn)}, 如果将训练集分为不同的区域 R1,R2,...

GBDT

£可爱£侵袭症+ 提交于 2019-11-30 10:39:34
转自: https://blog.csdn.net/zpalyq110/article/details/79527653 【尊重原创,转载请注明出处】 http://blog.csdn.net/zpalyq110/article/details/79527653 写在前面: 去年学习GBDT之初,为了加强对算法的理解,整理了一篇笔记形式的文章,发出去之后发现阅读量越来越多,渐渐也有了评论,评论中大多指出来了笔者理解或者编辑的错误,故重新编辑一版文章,内容更加翔实,并且在GitHub上实现了和本文一致的GBDT简易版(包括回归、二分类、多分类以及可视化),供大家交流探讨。感谢各位的点赞和评论,希望继续指出错误~    Github: https://github.com/Freemanzxp/GBDT_Simple_Tutorial 简介:   GBDT 的全称是 Gradient Boosting Decision Tree,梯度提升树,在传统机器学习算法中,GBDT算的上TOP3的算法。想要理解GBDT的真正意义,那就必须理解GBDT中的Gradient Boosting 和Decision Tree分别是什么? 1. Decision Tree:CART回归树   首先,GBDT使用的决策树是CART回归树,无论是处理回归问题还是二分类以及多分类

GBDT(未完成)

◇◆丶佛笑我妖孽 提交于 2019-11-30 09:39:49
一、目标函数 结构风险最小: 目标函数=损失函数(loss function/cost function代价函数)+lamda*正则项 经验风险最小: 目标函数=损失函数(loss funciton/cost function代价函数) 二、GB理论 用损失函数的负梯度来拟合本轮损失的近似值,进而拟合一个CART回归树。 为什么要去拟合负梯度,而不是直接拟合差值呢? 三、GBDT理论 1.当基函数为DT时,首先正则项为0。第二、损失函数是均方损失函数,它的梯度值是残差的2倍,貌似和残差一致。 所以容易产生问题二的疑问。 2.对于每棵决策树叶子结点y值,貌似不是直接和前面的值相加,具体怎么加的还没搞清楚。??? 四、GBDT步骤 变量说明: i=1...N,训练样本 拟合的函数,m表示拟合m棵树,或者进行了m次迭代 第m次拟合的函数,第m棵树, 第m次拟合时第i个样本的目标变量,是根据负梯度值计算得到的 ,这些样本构成第m棵树的训练样本 来源: https://www.cnblogs.com/ironan-liu/p/11576929.html