机器学习算法之——梯度提升(Gradient Boosting)上

简介: 由于每个子模型要使用全部的数据集进行训练,因此 Ada Boosting 算法中没有 oob 数据集,在使用 Ada Boosting 算法前,需要划分数据集:train_test_split;

前言


上星期写了Kaggle竞赛的详细介绍及入门指导,但对于真正想要玩这个竞赛的伙伴,机器学习中的相关算法是必不可少的,即使是你不想获得名次和奖牌。那么,从本周开始,我将介绍在Kaggle比赛中的最基本的也是运用最广的机器学习算法,很多项目用这些基本的模型就能解决基础问题了。


那么,今天就开始更新集成学习之Gradient Boosting梯度提升。


一、集成学习的思路


共 3 种思路:

  • Bagging:独立的集成多个模型,每个模型有一定的差异,最终综合有差异的模型的结果,获得学习的最终的结果;
  • Boosting(增强集成学习):集成多个模型,每个模型都在尝试增强(Boosting)整体的效果;
  • Stacking(堆叠):集成 k 个模型,得到 k 个预测结果,将 k 个预测结果再传给一个新的算法,得到的结果为集成系统最终的预测结果;


640.png

                                                                      图1 集成模型


学习Gradient Boosting之前,我们先来了解一下增强集成学习(Boosting)思想:


  • 先构建,后结合
  • 个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,然后使用组合策略,得到最终的集成模型,这就是boosting的思想

640.jpg
                                                               图2 增强集成学习思想图示


二、增强集成学习(Boosting)


1. 基础理解


  • Boosting 类的集成学习,主要有:Ada BoostingGradient Boosting 两类;
  • 由于每个子模型要使用全部的数据集进行训练,因此 Ada Boosting 算法中没有 oob 数据集,在使用 Ada Boosting 算法前,需要划分数据集:train_test_split;
  • 每个 Ada Boosting 集成学习算法的模型只使用一个基本算法进行训练子模型;
  • 相对于集成学习方法,决策树算法、SVM 算法、逻辑回归算法等,称为基本的学习方法;


2. Ada Boosting 集成学习算法


AdaBoost详细学习可参考机器学习----集成学习(Boosting)https://blog.csdn.net/love_wanling/article/details/70238403


2.1 思想


640.png

                图3 Ada Boosting算法思想图示


  1. 假设是一个回归问题:图的最下层代表全部的训练数据集,深色的点为模型预测错误的点,定义为权重高样本,需要下一次生成的子模型时被重点对待;浅色的点为模型预测成功的点,定义为权重低样本
  2. 图的中间层代表一种基本算法;
  3. 图的最上层代表算法根据拥有不同权重的样本的数据集,所训练出的模型;
  4. 箭头表示不同的子模型按一定规律生成;



解释上图过程(Ada Boosting 的思路):第一次进行学习得到第一个子模型,根据第一子模型的预测结果重新定义数据集——将预测错误的点(深色点)划分较高权重,将预测成功的点(浅色点)划分较低权重;第二次进行学习时,使用上一次学习后被重新定义的数据集进行训练,再根据模型的预测结果重新定义数据集——将预测错误的点(深色点)划分较高权重,将预测成功的点(浅色点)划分较低权重;以此类推,最终得到 n 个子模型;


640.jpg


主要原理: 通过给已有模型预测错误的样本更高的权重,不断更新样本数据分布,每轮训练中(根据训练后的分类对错,调整样本权重)为每个训练样本重新赋予一个权重。


2.2 特点:


  1. 每一次生成的子模型都在想办法弥补上一次生成的子模型没有成功预测到的样本点,或者说是弥补上一子模型所犯的错误;也可以说,每一个子模型都在想办法推动(Boosting)整个基础系统,使得整个集成系统准确率更高;
  2. 每一个子模型都是基于同一数据集的样本点,只是样本点的权重不同,也就是样本对于每一个子模型的重要程度不同,因此每份子模型也是有差异的;最终以所有子模型综合投票的结果作为 Ada Boosting 模型的最终学习结果;


怎么为样本赋权值,让下一子模型对不同权值的样本区别对待?


2.3 Python实现


scikit-learn 中封装的 Ada Boosting 集成学习算法:

AdaBoostClassifier(): 解决分类问题;

AdaBoostRegressor(): 解决回归问题;


使用格式:


import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split
X, y = datasets.make_moons(n_samples=500, noise=0.3, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
ada_clf = AdaBoostClassifier(DecisionTreeClassifier(max_depth=2), n_estimators=500)
ada_clf.fit(X_train, y_train)


注:AdaBoostingClassifier() 的参数的使用可查文档;


请接下文继续阅读,讲解集成学习GBDT(Gradient Boosting Decision Tree)。


参考文献:

————————————————

[1] 机器学习之集成学习(四)GBDT 原文链接:https://blog.csdn.net/ivy_reny/article/details/79290745

[2] 集成学习,adaboosting与Gradient Boosting 原理解析 原文链接:

https://blog.csdn.net/zhuimeng999/article/details/80387078

[3] 机器学习:集成学习(Ada Boosting 和 Gradient Boosting) 原文链接:

https://www.cnblogs.com/volcao/p/9490651.html

[4] 机器学习集成学习算法——boosting系列 原文链接:https://blog.csdn.net/myy1012010626/article/details/80793074

[4] 机器学习相关知识整理系列之三:Boosting算法原理,GBDT&XGBoost 原文链接:

https://www.cnblogs.com/csyuan/p/6537255.html

目录
打赏
0
0
0
0
3
分享
相关文章
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
147 4
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
90 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
23天前
|
PAI下面的gbdt、xgboost、ps-smart 算法如何优化?
设置gbdt 、xgboost等算法的样本和特征的采样率
45 2
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
56 1
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
111 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
深入探索机器学习中的决策树算法
深入探索机器学习中的决策树算法
46 0
机器学习入门:理解并实现K-近邻算法
机器学习入门:理解并实现K-近邻算法
43 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等