决策树

梯度提升树(GBDT)原理小结

你离开我真会死。 提交于 2020-04-26 19:13:48
    在 集成学习之Adaboost算法原理小结 中,我们对Boosting家族的Adaboost算法做了总结,本文就对Boosting家族中另一个重要的算法梯度提升树(Gradient Boosting Decison Tree, 以下简称GBDT)做一个总结。GBDT有很多简称,有GBT(Gradient Boosting Tree), GTB(Gradient Tree Boosting ), GBRT(Gradient Boosting Regression Tree), MART(Multiple Additive Regression Tree),其实都是指的同一种算法,本文统一简称GBDT。GBDT在BAT大厂中也有广泛的应用,假如要选择3个最重要的机器学习算法的话,个人认为GBDT应该占一席之地。 1. GBDT概述     GBDT也是集成学习Boosting家族的成员,但是却和传统的Adaboost有很大的不同。回顾下Adaboost,我们是利用前一轮迭代弱学习器的误差率来更新训练集的权重,这样一轮轮的迭代下去。GBDT也是迭代,使用了前向分布算法,但是弱学习器限定了只能使用CART回归树模型,同时迭代思路和Adaboost也有所不同。     在GBDT的迭代中,假设我们前一轮迭代得到的强学习器是$f_{t-1}(x)$, 损失函数是$L(y, f_{t-1

集成学习之Xgboost

余生颓废 提交于 2020-04-26 15:32:13
XGBoost全名叫(eXtreme Gradient Boosting)极端梯度提升,或者叫极值梯度提升算法,经常被用在一些比赛中,其效果显著。它是大规模并行boosted tree的工具,它是目前最快最好的开源boosted tree工具包。XGBoost 所应用的算法就是 GBDT(gradient boosting decision tree)的改进,既可以用于分类也可以用于回归问题中。GBDT和xgboost在竞赛和工业界使用都非常频繁,GBDT是以决策树(CART)为基学习器的GB算法,xgboost扩展和改进了GDBT,xgboost算法更快,准确率也相对高一些。现在Kaggle 大赛的情况基本是这样的,凡是非结构化数据相关,比如语音、图像,基本都是深度学习获胜,凡是结构化数据上的竞赛,基本都是 XGBoost 获胜。Xgboost可以说集成思想达到顶峰的一个模型,至少目前是这样,所以学习机器学习算法,掌握这个是很有必要的。 学习Xgboost之前,需要了解决策树,集成学习,GBDT等算法的概念,会帮助更好的去理解Xgboost。 Gradient boosting回顾 机器学习中学习算法的目标是为了优化或者说最小化loss Function, Gradient boosting的思想是迭代生多个(M个)弱的模型,然后将每个弱模型的预测结果相加,后面的模型$F_{m

特征工程二:特征抽象、特征衍生

断了今生、忘了曾经 提交于 2020-04-24 23:31:30
特征工程:特征抽象、特征衍生 特征抽象 这一步是针对有序和无序的文本分类型特征,采用不同的方法进行处理,将其类别属性数值化。 多值有序特征 的属性数值映射,这步也包含了降维处理(对于高维类别变量),把类别抽象成模型可以识别的特征值。有序特征的映射,使用的方法是先构建一个映射字典mapping,再用pandas的map()或者replace()函数进行映射转换。 #构建学历字典 mapping_dict ={ ' 博士 ' : 4 , ' 硕士 ' : 3 , ' 大学 ' : 2 , ' 大专及以下 ' : 1 } #调用map方法进行转换 data[ ' edu_level_map ' ]=data[ ' edu_level ' ].map(mapping_dict) 多值无序特征 的属性独热编码,使用pandas的get_dummies()方法创建虚拟特征,虚拟特征的每一列各代表变量属性的一个分类。比如,婚姻状态。 #调用get_dummies方法进行转换 dummies =pandas.get_dummies(data,columns=[ ' 婚姻状态 ' ],prefix=[ ' 婚姻状态 ' ],prefix_sep= ' _ ' ,dummy_na=False,drop_first=False) 特征衍生 特征衍生是指利用现有的特征进行某种组合生成新的特征

机器学习回顾篇(15):集成学习之GDBT

自闭症网瘾萝莉.ら 提交于 2020-04-24 23:26:30
1 引言 ¶ 梯度提升树算法(Gradient Boosting Decision Tree,GBDT)是一个非常经典的机器学习算法,和我们前面介绍过的Adaboost算法一样,都是提升学习系列算法中的一员。从“梯度提升树”这个算法名称中我们也可以看出,这又是一个决策树的集成算法,更进一步地说,这个算法是以CART决策树算法作为基学习算法的一种集成算法。对于CART决策树算法,在 之前的博客 中已经有详细的介绍,在阅读本文之前请务必先理解CART决策树算法。接下来,本文将会从提升树开始,逐渐深入的介绍GBDT算法。 2 提升树 ¶ 关于提升树,我们可以从字面上进行理解,可以认为提升树就是一种以决策树作为基学习算法的一种提升学习算法,可以用来解决分类问题,也可以用于解决回归问题。当用于分类问题时,提升树算法只需将AdaBoost算法中的基本学习器限制为二类分类树即可,可以说这时的提升树算法是AdaBoost算法的特殊情况,本文不再细述,且本文主要介绍的GBDT算法无论是在分类问题中还是回归问题汇总,都是从回归提升树的优化而来,所以下面叙述内容主要以回归提升树为主。 提升树模型可以看做是使用加法模型对决策树的线性组合: $${f_M}(x) = \sum\limits_{m = 1}^M {T(x;{\Theta _m})} \tag {1}$$ 式中,${f_M}(x)

梯度提升树之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算法在预测问题上的操作步骤

Boosting算法之Adaboost和GBDT

旧时模样 提交于 2020-04-24 23:04:33
  Boosting是串行式集成学习方法的代表,它使用加法模型和前向分步算法,将弱学习器提升为强学习器。Boosting系列算法里最著名的算法主要有AdaBoost和梯度提升系列算法(Gradient Boost,GB),梯度提升系列算法里面应用最广泛的是梯度提升树(Gradient Boosting Decision Tree,GBDT)。 一、Adaboost 1、Adaboost介绍   Adaboost算法通过在训练集上不断调整样本权重分布,基于不同的样本权重分布,重复训练多个弱分类器,最后通过结合策略将所有的弱分类器组合起来,构成强分类器。Adaboost算法在训练过程中,注重减少每个弱学习器的误差,在训练下一个弱学习器时,根据上一次的训练结果,调整样本的权重分布,更加关注那些被分错的样本,使它们在下一次训练中得到更多的关注,有更大的可能被分类正确。 Adaboost算法框架图 2、Adaboost算法过程 1)初始化样本权重,一共有n个样本,则每个样本的权重为1/n 2)在样本分布D t 上,训练弱分类器,for t=1,2,……T: a、训练分类器h t b、计算当前弱分类器的分类误差率 c、判断误差率是否小于0.5,是则继续,否则退出循环 d、计算当前弱分类器的权重系数alpha值 e、根据alpha值调整样本分布D t+1 如果样本被正确分类,则该样本的权重更改为

Java生鲜电商平台-商品基础业务架构设计-商品设计

纵然是瞬间 提交于 2020-04-24 14:18:48
Java生鲜电商平台-商品基础业务架构设计-商品设计 在生鲜电商的商品中心,在电子商务公司一般是后台管理商品的地方。在前端而言,是商家为了展示商品信息给用户的地方,它是承担了商品的数据,订单,营销活动的数据中心,在后端而言,商品中心则是运营者管理维护商品的地方,因此从商品的上传到发货,退货,整个闭环都离不开商品中心的支撑,因此商品中心的重要性毋庸置疑。本文将从三大模块去讲述商品中心的设计。 一.基本概念 在设计商品中心这一模块前,我们先弄清楚电商后台常用的一些关键词,有助于我们对业务的理解。 1.SPU :(stanrdard Product Unit,即标准化产品单元),是一组标准化的信息集合,例如:“iphone 8”就是一个SPU。 2.SKU :(Stock Keeping Uint,即库存量单位),库存控制的最小可用单位。例如:“iphone8plus256G金色”就是一个SKU。 3.前台类目(分类): 前台类目是为了方便用户筛选查找商品而设置的功能,运营可根据运营需求灵活调整前台类目,用户通过前台类目查找相应的商品时,自动从后台类目中检索相应的商品。 4.后台类目: 是为了方便运营者管理商品的库存,sku,商品规格属性的一个分类管理功能模块。后台类目与前台类目相互映射。后台类目一般不轻易变动。 5.属性:商品属性是描述商品信息的一组值

Bagging,stacking,blending

大城市里の小女人 提交于 2020-04-24 02:35:47
Bagging Bagging的代表算法是随机森林,简单说下随机森林的步骤: (1) 对训练样本进行bootstrap采样,即有放回的采样,获得M个采样集合; (2) 在这M个采样集合上训练处M个弱决策树。注意到,在决策树生成中还用到了列采样的技巧,原本决策树中节点分裂时,是选择当前节点中所有属性的最优属性进行划分的,但是列采样的技巧是在所有属性中的子集中选最优属性进行划分。这样做可以进一步降低过拟合的可能性; (3) 对这M个训练出来的弱决策树进行集成。 Stacking Stacking还没有代表性的算法,我姑且把它理解成一个集成的思想吧。具体做法是: (1) 先将训练集D拆成k个大小相似但互不相交的子集D1,D2,…,Dk; (2) 令Dj’= D - Dj,在Dj’上训练一个弱学习器Lj。将Dj作为测试集,获得Lj在Dj上的输出Dj’’; (3) 步骤2可以得到k个弱学习器以及k个相应的输出Dj’’,这个k个输出加上原本的类标构成新的训练集Dn; (4) 在Dn训练次学习器L,L即为最后的学习器。 Stacking是用新的模型(次学习器)去学习怎么组合那些基学习器,它的思想源自于 Stacked Generalization 这篇论文。如果把Bagging看作是多个基分类器的线性组合,那么Stacking就是多个基分类器的非线性组合。Stacking可以很灵活

GBDT 算法

纵然是瞬间 提交于 2020-04-23 21:03:18
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,...

数据挖掘篇——特征工程之特征降维

六月ゝ 毕业季﹏ 提交于 2020-04-22 03:45:28
在业界广泛流传着一句话:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。 由此可见,数据和特征是多么的重要,而在数据大多数场景下,数据已经就绪,不同人对于同样的数据处理得到的特征却千差万别,最终得到的建模效果也是高低立现。从数据到特征这就要从特征工程说起了... 0. 特征工程 首先介绍下,特征工程是什么:利用数据领域的相关知识来创建 能够使机器学习算法达到最佳性能的 特征的过程 [1.wiki] 。特征工程是一个较大领域,它通常包括特征构建、特征提取和特征选择这三个子模块,重要性排序:特征构建>特征提取>特征选择。 先来介绍几个术语: 特征构建:从原始数据中构建出特征,有时也称作特征预处理,包括缺失值处理、异常值处理、无量纲化(标准化/归一化)、哑编码等。 特征提取:将原特征转换为一组具有明显物理意义或统计意义或核的新特征。 特征选择:从特征集合中挑选一组最具统计意义的特征子集。 其中本文主要总结下可统一用于特征降维的特征提取和特征选择技术方法,特征构建涉及技术点较少,下回再分解。 1. 特征降维 WHAT :将高维空间的特征通过删减或变换转为低维空间特征 WHY :降低时间/空间复杂度、降低提取特征开销、降噪、提升鲁棒性、增强可解释性、便于可视化; HOW :主要有两种方式,即特征选择和特征提取。 1.1 特征选择(子集筛选): 特征选择方法主要分为三种: