集成学习思想

简介: **集成学习**是通过结合多个预测模型来创建一个更强大、更鲁棒的系统。它利用了如随机森林、AdaBoost和GBDT等策略。随机森林通过Bootstrap抽样构建多个决策树并用多数投票决定结果,增强模型的多样性。Boosting,如Adaboost,逐步调整样本权重,使后续学习器聚焦于前一轮分类错误的样本,减少偏差。GBDT则通过拟合残差逐步提升预测精度。这些方法通过组合弱学习器形成强学习器,提高了预测准确性和模型的鲁棒性。

概述


集成学习思想


  • 线性回归、逻辑回归、决策树都是单一模型预测
  • 我们想把多个相同模型、多个不同种类的模型组合起来,形成一个更强大的模型进行预测


集成学习概念:将多个学习器(也称为基学习器)组合成一个更强大的学习器的机器学习技术。

通过利用多个学习器的优势来提高预测的准确性和鲁棒性,从而达到更好的性能表现。



  • 集成学习通过构建多个模型来解决单一预测问题
  • 生成多基学习器,各自独立地学习和预测
  • 通过平权或者加权的方式,整合多个基学习器的预测输出


基学习器使用的方法:


  1. 可使用不同的学习模型,比如:支持向量机、神经网络、决策树整合到一起作为一个集成学习系统
  2. 也可使用相同的学习模型,比如,多个基学习器都使用决策树,倾向于使用相同的学习模型


集成分类策略


  • Bagging(集成、打包、袋装)
  • 代表算法:随机森林
  • Boosting提升树
  • 代表算法:Adaboost、GBDT、XGBoost、LightGBM


Bagging思想




  • 有放回的抽样(booststrap抽样)产生不同的训练集,从而训练不同的学习器
  • 通过平权投票、多数表决的方式决定预测结果,基学习器可以并行训练



Boosting思想



  • 每一个训练器重点关注前一个训练器不足的地方进行训练
  • 通过加权投票的方式,得出预测结果,串行的训练方式


栗子:



随着学习的积累从弱到强 ,每新加入一个弱学习器,整体能力就会得到提升。


随机森林算法

 

随机森林是一个包含多个决策树的分类器,并且其输出的类别是由多个树输出的类别的众数而定。



训练了5个树, 其中4个树的结果是True, 1个树的结果是False, 最终投票结果True ,弱学习器的训练样本既有交集也有差异数据,更容易发挥投票表决效果


随机森林算法 – API



import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
def fuc():
 
    titan = pd.read_csv(“train.csv”)
 
    x = titan[[“Pclass”, “Age”, “Sex”]].copy()
    y = titan[“Survived”]
 
    x[‘Age’].fillna(value=titan[“Age”].mean(), inplace=True)
 
 
    x = pd.get_dummies(x)
 
    x_train, x_test, y_train, y_test = \
    train_test_split(x, y, random_state=22, test_size=0.2)
 
dtc = DecisionTreeClassifier()
dtc.fit(x_train, y_train)
dtc_y_pred = dtc.predict(x_test)
accuracy = dtc.score(x_test, y_test)
 
rfc = RandomForestClassifier(max_depth=6, random_state=9)
rfc.fit(x_train, y_train)
rfc_y_pred = rfc.predict(x_test)
accuracy = rfc.score(x_test, y_test)


Adaboost算法


Adaptive Boosting(自适应提升)基于 Boosting思想实现的一种集成学习算法,常用于二分类。

核心思想是通过逐步提高那些被前一步分类错误的样本的权重来训练一个强分类器。



初始化训练数据(样本)权重相等,训练第 1 个学习器,根据预测结果更新样本权重、模型权重 。


迭代训练在前一个学习器的基础上,根据新的样本权重训练当前学习器。


假设已训练了3个基学习器,第1个/2个/3个基学器模型权重分别为:0.4236,0.64963,0.7514。当输入x=3,计算最后的输出类别:


根据投票公式:H(x) = sign(0.4236 * ℎ 1 (𝑥) + 0.64963 * ℎ 2 (𝑥) + 0.7515 * ℎ 3(𝑥) )


= 0.4236*(-1) + 0.64963*(1) + 0.7514*(-1) = -0.52537 < 0


预测结果小于零,所以x=3的样本(4号样本)归为负类。


  • Bagging分类中比如随机森林因采用随机抽样、随机抽特征,即使把模型训练的有一些过拟合,但是因为采用平权投票的方式,可以减少过拟合的发生。
  • 随机森林中决策树可以不剪枝,因过拟合模型输出会更多元化,增加了数据的波动程度。通过集成学习平权投票可以有效降低方差。


从偏差-方差的角度看,Boosting主要用于提高训练精度,Bagging中每一个基学习器都对上一个基学习器分类不正确的样本,进行重点关注,相当不断的提高模型的准确度,让模型预测的更准,打的更准。


GBDT


残差提升树


提升树概念: 通过拟合残差的思想来进行提升。


预测某人的年龄为100岁:


  1. 第1次预测:对100岁预测,因单模型在预测精度上有上限,只能预测成80岁;100 – 80 = 20(残差)
  2. 第2次预测:上一轮残差20岁作为目标值,只能预测成16岁;20 – 16 = 4 (残差)
  3. 第3次预测:上一轮的残差4岁作为目标值,只能预测成3.2岁;4 – 3.2 = 0.8(残差)
  4. 80 + 16 + 3.2 = 99.2
  5. 通过拟合残差可将多颗弱学习器组成一个强学习器。


GBDT 使用 CART 回归树,GBDT每次迭代要拟合的是梯度值是连续值,所以要用回归树,CART 回归树使用平方误差。


梯度提升树计算过程


  • 第1轮:拟合上一轮的负梯度(第1轮就是最原始的y目标值),然后计算负梯度(目标值 – 预测值=负梯度)
  • 第2轮:拟合上一轮的负梯度 ,然后计算负梯度,目标值(上一轮的负梯度) - 预测值(利用平方损失最小化,找到最优分裂点而产生的预测值) = 负梯度
  • 直到达到指定的学习器个数。


当输入未知样本时,将所有弱学习器的输出结果加起来作为强学习器的输出,最终的结

果 :7.31 + (-1.07) + 0.22 + 0.15 = 6.61  (为三个梯度)  


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