提升树算法

news/2024/7/9 8:44:55 标签: 算法, 机器学习, sklearn

一:提升树模型

提升树是以分类树或回归树为基分类器的提升方法,提升树被认为是统计学习中性能最好的方法之一
提升方法实际采用前向分步算法和加法模型(即基函数的限行组合),以决策树为基函数的提升方法称为提升树,对分类问题的决策树是二叉分类树,对回归问题的决策树是二叉回归树。提升树的模型可以表示为决策树的加法模型:
在这里插入图片描述
二:提升树算法
提升树算法采用前向分步算法,首先确定初始提升树Fo(x) = 0,第m步的模型为:
在这里插入图片描述
通过经验风险最小化,那么决策树的参数θm可表示为:
在这里插入图片描述

二:不同的提升树学习算法

针对不同问题的提升树学习算法,其主要区别在于使用的损失函数不同。主要有
1,使用平方误差损失函数的回归问题
2,使用指数损失函数的分类问题
3,使用一般损失函数的一般决策问题

(一)使用指数损失函数的分类问题提升树:对于二分类问题,只需要将Adaboost算法中的基分类器限定为二分类树即可。可以说这时候的提升树算法是adaboost算法的特殊情况
(二)使用平方误差的回归问题提升树:
输入:训练数据集T = {(x1,y1),(x2,y2)…(xn,yn)},x,y都属于实数,即树可以表示为:
在这里插入图片描述

输出:提升树fm(x)
(1)初始化f0(x) = 0
(2)对于m = 1,2,…M.:
a:按照树公式,计算残差Rmi:(详情看证明)
在这里插入图片描述
b:拟合残差Rmi学习一个回归树,得到T(x, θm)
c:更新fm(x) = fm-1(x)+T(x, θm)
(3)得到回归问题提升树
在这里插入图片描述
证明:回归问题的提升树只需要拟合当前模型fm-1(x)的残差
回归问题提升树采用前向分步算法
在这里插入图片描述
(三)使用一般损失函数的一般决策问题的提升树–梯度提升树大名鼎鼎的GBDT
提升树采用加法模型和前向分步算法实现学习的优化过程,当损失函数为指数或者平方损失函数时候,其优化过程是简单的,但对于一般损失函数而言,其优化过程尤为复杂。针对这个问题,FREIDMAN提出了梯度提升树(gradient boosting decition tree ),这是利用最速下降法的近似方法,其关键是利用损失函数的负梯度在当前模型的值:
在这里插入图片描述

来作为回归问题提升树算法中的残差的近似值,从而拟合一个回归树。
回归问题的GBDT实现步骤
在这里插入图片描述
算法过程的特点:

  1. 算法每次迭代生成一颗新的决策树
  2. 计算损失函数对每个样本的一阶导和二阶导
  3. 通过贪心算法生成新的决策树,同时计算每个叶子节点的权重w
  4. 把新生成的决策树f(x)添加到模型中

GBDT的正则化方法:
1,第一种就是和adboost算法一样的正则化项,即设置步长,定义为v,对于弱学习器的迭代:
在这里插入图片描述
加上正则化项以后则有:
在这里插入图片描述
在同样的训练集上,较小的v就意味着弱学习器需要更多的迭代次数,通常我们用步长和最大迭代次数来决定算法的拟合效果。
2,第二种就是通过子采样比例,取值范围为(0,1】注意这里的采样和随机森林采样方式不同,随机森林是有放回的采样,这里是不放回抽样。设取值为x,当x= 1时候,即所有样本都可参与训练,等于没抽样,相同,如果x = 0,也等于没抽样,当0<x<1时,则只有部分样本会参与GBDT的决策树拟合。当x<1时候,会减少模型的方差,防止过拟合,但是会增加模型的偏差,因此取值不能太低,通常取值为【0.5,0.8】
使用了子采样的GBDT有时也称作随机梯度提升树(Stochastic Gradient Boosting Tree, SGBT)。由于使用了子采样,程序可以通过采样分发到不同的任务去做boosting的迭代过程,最后形成新树,从而减少弱学习器难以并行学习的弱点。
3,第三种就是对cart进行正则化剪枝。
GBDT的优缺点:
GBDT的主要优点有
1,能灵活的拟合各类数据,连续值和离散值都行
2,当采用一些健壮的损失函数时,对异常值的鲁棒性较强,比如 Huber损失函数和Quantile损失函数。更多损失函数可参考该文档
3,在相对较少的调参时间情况下,预备的准确率也较高。这个问题有一个经典的面试问答
GBDT的主要缺点有:
  1)由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行


http://www.niftyadmin.cn/n/1802216.html

相关文章

TF-IDF与TextRank

这两个可以说自然语言处理当中比较经典的关键词提取算法&#xff0c;虽然简单&#xff0c;但是应用还是相当广泛&#xff0c;面试中被问起这两个&#xff0c;不能说清楚也是一件很尴尬的事情。废话不多说&#xff0c;直接开始。 1. TF-IDF简介 TF-IDF&#xff08;Term Freque…

协同过滤浅析

一&#xff1a;协同过滤基础知识 1&#xff0c;概念&#xff1a;“协同”指的是和周围群体合作&#xff08;共线矩阵&#xff09;&#xff0c;利用群体智慧&#xff08;相似度&#xff09;&#xff0c;来发现与自己相似的用户。根据他们的喜好来过滤得到我们感兴趣的信息&…

协同过滤的进化--矩阵分解算法(MF)

一&#xff1a; MF基础知识 线性代数&#xff0c;机器学习&#xff0c;梯度下降等内容需要各位看官在了解本文之前进行一定基础学习。MF解决的主要问题在两点&#xff0c;这两点也是协同过滤的主要缺点&#xff0c;第一是协同过滤处理稀疏矩阵的能力较弱&#xff08;共现矩阵稀…

bandit算法与推荐系统

导语 首先声明&#xff0c;本文基本转载于陈开江先生的《Bandit 算法与推荐系统》一文&#xff0c;加上笔者自己的结合目前推荐项目的理解。不准确之处&#xff0c;愿诸君指正。拜谢。 推荐系统中经常会遇到EE问题和冷启动问题&#xff0c;在笔者项目过程中&#xff0c;无可厚…

从FM到FFM--自动特征交叉的解决方案

一&#xff1a;特征交叉的由来–LR推荐模型的缺陷 1&#xff0c;逻辑回归推荐模型出现的原因&#xff1a;矩阵分解的缺陷 无法加入物品、用户、上下文信息等场景信息和补充策略&#xff0c;使得矩阵分解丧失了很多利用信息的机会&#xff0c;当缺乏用户和物品历史信息时无法进…

推荐系统中的GBDT+LR

一&#xff1a;GBDT模型&#xff08;Gradient Boosting Decision Tree&#xff09; 前言&#xff1a;在研究GBDT模型之前&#xff0c;我们需要知道什么是提升树算法&#xff0c;回归问题的提升树为什么要拟合当前模型的残差&#xff0c;模型的大致训练过程&#xff0c;为什么可…

GBDT总结

一&#xff1a;声明 本文基本转自刘建平先生的该篇文章&#xff0c;原文写的很好&#xff0c;读者可以去看看。本文中&#xff0c;作者将根据自己实际项目和所学结合该文章&#xff0c;阐述自己的观点和看法。 二&#xff1a;GBDT概述 GBDT也是集成学习Boosting家族的成员&a…

推荐系统中的AutoRec

一&#xff1a;前言 笔者最近在总结推荐系统主流模型&#xff0c;从十多年前的经典的协同过滤算法开始&#xff0c;一直到现有的各大企业所用的推荐模型&#xff0c;笔者一直在思考一个问题&#xff0c;那就是神经网络在计算机领域内的大热&#xff0c;是如何承上启下&#xf…