集成学习:XGBoost, lightGBM

简介: 集成学习:XGBoost, lightGBM

目录

分类树

仅仅分类

信息熵

信息熵是用来衡量信息不确定性的指标,不确定性是一个事件

出现不同结果的可能性。计算方法如下所示:


条件熵:y是条件 计算x的不确定性

实例:

基尼指数

定义:

基尼指数(Gii不纯度)表示在样本集合中一个随机选中的样本被分错的概率。

注意:Gii指数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高,反之,集合越不纯。当集合中所有样本为一个类时,基尼指数为0

基尼指数的计算方法:

确定最佳分割点,基尼指数越小越好

回归树

与分类树区别:

包括打分,比如判断苹果的成色

回归树(regression tree),就是用树模型做回归问题,每片叶子都输出一个预测值。预测值一般是叶子节点所含训练集元素输出的均值。

回归树的分支标准

标准方差(Standard Deviation)。回归树使用某一特征将原集合分为多个子集,用标准方差衡量子集中的元素是否相近,越小表示越相近。首先计算根节点的标准方差

变化系数=标志方差/平均方差

当变化系数小于10%,停止分支,生成叶节点

集成学习

Bagging:基学习器之间无强依赖关系,可同时生成的并行化方法

Boosting:基学习器之间存在强烈的依赖关系,必须串行生成基分类器的方法

加法模型

加法模型就是说强分类器由一系列弱分类器线性相加而成。一般组合形式如

其中,h(x;am)是弱分类器,am是弱分类器学习到的最优参数,Pm是弱学习在强分类器中所占比重,P是所有am和βm的组合。这些弱分类器线性相加组成强分类器。

前向分步算法

前向分步是在训练过程中,下一轮迭代产生的分类器是在上一轮的基础上训练得来的。即:


2.1.bagging:

随机森林

定义:

同时训练多个决策树,预测时综合考虑多个结果进行预测,例如取多个节点的均值(回归),或者是众数(分类)。

优势:

1.消除了决策树容易过拟合的缺点

2.减小了预测的方差,预测值不会因训练数据的小变化而剧烈变

随机性体现在两点:

1.从原来的训练数据集随机(带放回bootstrap)取一个子集作为森林中某一个决策树的训练数据集

2.每一次选择分叉的特征时,限定为在随机选择的特征的子集中寻找一个特征

ROC曲线和AUC曲线和RC曲线(精确率召回率曲线)

TPR=TP/(TP+FN) 也叫召回率

所有真实类别为1的样本中,预测类别为1的比例

FPR=FP/(FP+TN)

所有真实类别为0的样本中,预测类别为1的比例

ROC曲线和AUC曲线

AUC指标(在上面图中就是黑色线以下的面积)

AUC的概率意义是随机取一对正负样本,正样本得分大于负样本的概率,AUC的最小值为0.5,最大值为1,取值越高越好

AUC=1,完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。0.5<AUC<1,优于随机猜测。

这个分类器(模型)妥善设定阈值的话,能有预测价值。最终AUC的范围在[0.5,1]之间,并且越接近1越好

PR曲线

名词解释

一条PR曲线要对应一个阈值(统计学的概率)。通过选择合适的阈值(比如K%)对样本进行合理的划分,概率大于K%的样本为正例,小于K%的样本为负例,样本分类完成后计算相应的精准率和召回率,最后我们会得到对应关系,如下图所示。

PR和ROC曲线对比

https://zhuanlan.zhihu.com/p/34655990

1.ROC曲线由于兼顾正例与负例,所以适用于评估分类器的整体性能,相比而言PR曲线完全聚焦于正例。

2.如果有多份数据且存在不同的类别分布,比如信用卡欺诈问题中每个月正例和负例的比例可能都不相同,这时候如果只想单纯地比较分类器的性能且剔除类别分布改变的影响,则ROC曲线比较适合,因为类别分布改变可能使得PR曲线发生变化时好时坏,这种时候难以进行模型比较:反之,如果想测试不同类别分布下对分类器的性能的影响,则PR曲线比较适合。

3.如果想要评估在相同的类别分布下正例的预测情况,则宜选PR曲线。

4.类别不平衡问题中,ROC曲线通常会给出一个乐观的效果估计,所以大部分时候还是PR曲线更好。

5.最后可以根据具体的应用,在曲线上找到最优的点,得到相对应的precision,recall,f1 score等指标,去调整模型的阈值,从而得到一个符合具体应用的模型。

2.2.boosting:

adaboost

·Adaboost的思想是将关注点放在被错误分类的样本上,减小上一轮被正确分类的样本权值,提高被错误分类的样本权值

·Adaboost采用加权投票的方法,分类误差小的弱分类器的权重大,而分类误差大的弱分类器的权重小。

Adaboost可以看作是加法模型、损失函数为指数损失函数、学习算法为前向分布算法时的二分类学习方法。接下来我们使用sklearn中AdaBoost的接口进行实践:

https://github.com/BackyardofAbela/EnsembleLearning

GBDT

BDT(提升树)


提升树为什么分类用指数损失,而回归用平方误差损失?

表格:

GBDT(梯度提升树)



因为残差是负梯度的公式,所以可以用负梯度来表示


分类问题

XGBoost

XGBoost是GBDT的一种,也是加法模型和前向优化算法。

在监督学习中,可以分为:模型,参数,目标函数和学习方法

模型:给定输入x后预测输出y的方法,比如说回归,分类,排序等。

参数:模型中的参数,比如线性回归中的权重和偏置

目标函数:即损失函数,包含正则化项

定义目标函数,包含正则项:

如何优化这个目标函数呢?因为是决策树,而不是数值型的向量,我们不能使用梯度下降的算法进行优化

又因为XGBoost是前向分布算法,我们通过贪心算法寻找局部最优解


复杂度

树的复杂度可以用如树的深度,内部节点个数,叶节点个数等来衡量

XGBoost中正则项用来衡量树的复杂度:树的叶子节点个数T和每棵树的叶子节点输出分数W的平方和(相当于L2正则化):

XGBoost的目标函数改写为:

学习方法:给定目标函数后求解模型和参数的方法,比如:

梯度下降法,数学推导等

采用贪心算法,每次尝试分裂一个叶节点

计算分裂后的增益选择增益最大的。类似于在ID3中的信息增益,和CART树中的基尼指数,那XGBoost中怎么计算增益呢?损失函数是:

其中红色部分衡量了叶子节点对总体损失的贡献,目标函数越小越好,则红色部分就越大越好

XGBoost中增益计算方法是:

Gain值越大,说明分裂后能使目标函数减小的越多,也就是越好

实现:https://www.bilibili.com/video/BV1Ca4y1t7DS?p=13&spm_id_from=pageDriver

LightGBM

相关文章
|
2月前
|
测试技术
软件质量保护与测试(第2版)学习总结第十三章 集成测试
本文是《软件质量保护与测试》(第2版)第十三章的学习总结,介绍了集成测试的概念、主要任务、测试层次与原则,以及集成测试的不同策略,包括非渐增式集成和渐增式集成(自顶向下和自底向上),并通过图示详细解释了集成测试的过程。
61 1
软件质量保护与测试(第2版)学习总结第十三章 集成测试
|
2月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
112 1
|
2月前
|
Java Spring
springboot 学习十一:Spring Boot 优雅的集成 Lombok
这篇文章是关于如何在Spring Boot项目中集成Lombok,以简化JavaBean的编写,避免冗余代码,并提供了相关的配置步骤和常用注解的介绍。
105 0
|
2月前
|
机器学习/深度学习 算法 前端开发
集成学习任务七和八、投票法与bagging学习
集成学习任务七和八、投票法与bagging学习
21 0
|
2月前
|
机器学习/深度学习 算法
【机器学习】迅速了解什么是集成学习
【机器学习】迅速了解什么是集成学习
|
4月前
|
机器学习/深度学习 运维 算法
【阿里天池-医学影像报告异常检测】3 机器学习模型训练及集成学习Baseline开源
本文介绍了一个基于XGBoost、LightGBM和逻辑回归的集成学习模型,用于医学影像报告异常检测任务,并公开了达到0.83+准确率的基线代码。
71 9
|
4月前
|
人工智能
LLama+Mistral+…+Yi=? 免训练异构大模型集成学习框架DeePEn来了
【8月更文挑战第6天】DeePEn是一种免训练异构大模型集成学习框架,旨在通过融合多个不同架构和参数的大模型输出概率分布,提升整体性能。它首先将各模型输出映射至统一概率空间,然后进行聚合,并最终反转回单一模型空间以生成输出。实验证明,在知识问答和推理任务上,DeePEn相比单一大模型如LLaMA和Mistral有显著提升,但其效果受模型质量和数量影响,并且计算成本较高。[论文: https://arxiv.org/abs/2404.12715]
44 1
|
4月前
|
机器学习/深度学习
【机器学习】模型融合Ensemble和集成学习Stacking的实现
文章介绍了使用mlxtend和lightgbm库中的分类器,如EnsembleVoteClassifier和StackingClassifier,以及sklearn库中的SVC、KNeighborsClassifier等进行模型集成的方法。
58 1
|
5月前
|
机器学习/深度学习 算法 前端开发
集成学习的力量:Sklearn中的随机森林与梯度提升详解
【7月更文第23天】集成学习,作为机器学习中一种强大而灵活的技术,通过结合多个基础模型的预测来提高整体预测性能。在`scikit-learn`(简称sklearn)这一Python机器学习库中,随机森林(Random Forest)和梯度提升(Gradient Boosting)是两种非常流行的集成学习方法。本文将深入解析这两种方法的工作原理,并通过代码示例展示它们在sklearn中的应用。
197 10
|
5月前
|
机器学习/深度学习 算法 前端开发
集成学习(Ensemble Learning)是一种机器学习技术,它通过将多个学习器(或称为“基学习器”、“弱学习器”)的预测结果结合起来,以提高整体预测性能。
集成学习(Ensemble Learning)是一种机器学习技术,它通过将多个学习器(或称为“基学习器”、“弱学习器”)的预测结果结合起来,以提高整体预测性能。

热门文章

最新文章

相关实验场景

更多
下一篇
无影云桌面