集成学习之boosting中Adaboost算法

前言

Bagging方法:通过bootstrap方式对全样本集进行抽样,然后根据抽取出的每一个样本集,使用同一种基本模型进行拟合,然后投票得出最终的预测。基本思想是通过降低方差来提高预测精度。
Boosting方法:通过使用同一组数据集进行反复学习,得到一系列简单模型,然后组合这些模型构成一个预测性能十分强大的机器学习模型进行预测。基本思想是通过不断减少偏差的形式来提高预测精度。
Boosting 的核心思路是——挑选精英
Boosting 和 bagging 最本质的差别在于他对基础模型不是一致对待的,而是经过不停的考验和筛选来挑选出「精英」,然后给精英更多的投票权,表现不好的基础模型则给较少的投票权,然后综合所有人的投票得到最终结果。
大部分情况下,经过 boosting 得到的结果偏差(bias)更小。
有两类常用的Boosting方式:Adaptive Boosting 和 Gradient Boosting 以及它们的变体Xgboost、LightGBM以 及Catboost。

boosting方法

boosting中,不同的分类器通过串行训练来获得的,每个新分类器都根据已训练出的分类器的性能来进行训练。boosting是通过关注被已有分类器错分的那些数据来获得新的分类器。其中有两个问题需要解决
一是训练新分类器时,如何根据已经训练出的分类器确定新分类器。
二是如果对样本概率分布进行更改,实现更加关注被已有分类器错分的样本。

Adaboost算法原理

(1)初始化训练数据(每个样本)的权值分布:如果有N个样本,则每一个训练的样本点最开始时都被赋予相同的权重:1/N。
(2)训练弱分类器。具体训练过程中,如果某个样本已经被准确地分类,那么在构造下一个训练集中,它的权重就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。同时,得到弱分类器对应的话语权。然后,更新权值后的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
(3)将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,分类误差率小的弱分类器的话语权较大,其在最终的分类函数中起着较大的决定作用,而分类误差率大的弱分类器的话语权较小,其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的比例较大,反之较小。
原文链接:https://blog.csdn.net/fuqiuai/article/details/79482487

算法步骤

第一步初始化样本权重

在这里插入图片描述
D1表示第一次迭代时N个样本各自的权重

第二步迭代生成分类器

a)使用具有权值分布Dm(m=1,2,3…N)的训练样本集进行学习,得到弱的分类器。
在这里插入图片描述

该式子表示,第m次迭代时的弱分类器,将样本x要么分类成-1,要么分类成1
弱分类器的确定准则是根据分类误差最小来进行参数确定。分类误差如下:
在这里插入图片描述
其中xn为样本特征,tn为第n个样本的类别,wn为样本权重。
b)计算弱分类器Gm(x)的话语权,话语权am表示Gm(x)在最终分类器中的重要程度。其中em,为上步中的εm(误差函数的值)
在这里插入图片描述
c)更新训练样本集的权值分布。用于下一轮迭代。其中,被误分的样本的权值会增大,被正确分的权值减小。
在这里插入图片描述
在这里插入图片描述
被基本分类器 G m ( x ) G_m(x) Gm(x)错误分类的样本的权重扩大,被正确分类的样本权重减少

其中,yi代表第i个样本对应的类别(1或-1),Gm(xi)表示弱分类器对样本xi的分类(1或-1)。若果分对,yi*Gm(xi)的值为1,反之为-1。其中Zm是归一化因子,使得所有样本对应的权值之和为1.
在这里插入图片描述

第三步组成分类器

在这里插入图片描述
加个sign函数,该函数用于求数值的正负。数值大于0,为1。小于0,为-1.等于0,为0.得到最终的强分类器G(x)
在这里插入图片描述

优缺点

AdaBoost算法优点:
可以将不同的分类算法作为弱分类器;
具有较小偏差,有很高的精度;
相对于bagging算法AdaBoost充分考虑的每个分类器的权重;

Adaboost算法缺点:
AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定;
数据不平衡导致分类精度下降;
训练比较耗时,每次重新选择当前分类器最好切分点;

sklearn算法实现

数据读取

# 引入数据科学相关工具包:
import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
plt.style.use("ggplot")
%matplotlib inline
import seaborn 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值