集成学习思想

概述 

集成学习思想 

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

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

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

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

基学习器使用的方法:

  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  (为三个梯度) 

  • 39
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
周志华老师是机器学习领域的知名专家,他提出的集成学习思想是指通过组合多个学习器来提高整体的学习性能。其中,Bagging、Boosting和Stacking是集成学习中最为常见的三种方法。 1. Bagging(bootstrap aggregating):这是一种基于自助采样(bootstrap sampling)的集成学习方法,即从原始数据集中有放回地采样得到多个采样集,然后在每个采样集上训练一个基学习器,最后将这些基学习器的预测结果进行平均或投票等方式来得到最终结果。Bagging方法的优点是可以减小模型的方差,提高模型的泛化能力。 2. Boosting:这是一种基于加权多数表决(weighted majority voting)的集成学习方法,即在每次训练中对错分类的样本进行加权,使得基学习器对错分类的影响不同,最终将多个基学习器的预测结果进行加权平均来得到最终结果。Boosting方法的优点是可以减小模型的偏差,提高模型的准确性。 3. Stacking:这是一种基于模型组合的集成学习方法,即将多个不同的基学习器的预测结果作为样本特征,再通过一个元学习器来进行最终的预测。Stacking方法的优点是可以将不同的基学习器的优点进行组合,提高模型的性能。 总之,Bagging、Boosting和Stacking是集成学习中常用的三种方法,它们都可以通过组合多个基学习器来提高整体的学习性能,具有广泛的应用价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小森( ﹡ˆoˆ﹡ )

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值