Python--AdaBoost 与 GBDT模型

机器学习

  • AdaBoost算法
    • 基本原理
    • 数学原理
    • 代码实现

大数据


AdaBoost算法

基本原理

 AdaBoost算法 (Adaptive Boosting) 是一种有效而实用的Boosting算法,它以一种高度自适应的方法顺序地训练弱学习器。
 AdaBoost根据前一次的分类效果调整数据的权重,上一个弱学习器中错误分类样本的权重会在下一个弱学习器中增加,正确分类样本的权重会相应减少,并且在每一轮迭代时会向模型加入一个新的弱学习器。不断重复调整权重和训练弱学习器的过程,直到误分类数低于预设值或迭代次数达到指定最大迭代次数时,我们会得到一个强分类器。
  简单来说,AdaBoost算法的核心思想就是调整错误样本的权重,进而迭代升级

用下图来理解
步骤一:中先切一刀对数就进行划分,此时将小三角形错误的划分到了圆形类别中,步骤二:便调整这一分类错误的小三角形的权重,使它变成一个大三角形,这样它和三角形类型的数据就更加接近了,因此重新分类时,它便能准确的分类到三角形类别
Python--AdaBoost 与 GBDT模型_第1张图片
预先设定AdaBoost算法在误分类数为0时终止迭代,即全部分类正确时(即误差率为0)停止迭代,并定义误差率为错误划分类别的样本权重之和,例如对于9个样本,每个样本的权重为1/9,若此时有2个样本划分错误,那么此时的误差率就是1/9 + 1/9=2/9

进一步理解
Python--AdaBoost 与 GBDT模型_第2张图片
Python--AdaBoost 与 GBDT模型_第3张图片

数学原理

有点难,感兴趣就了解一下
算法流程
Python--AdaBoost 与 GBDT模型_第4张图片
Python--AdaBoost 与 GBDT模型_第5张图片
(1)初始化各个样本点权重,各权重相等

Python--AdaBoost 与 GBDT模型_第6张图片

在这里插入图片描述
Python--AdaBoost 与 GBDT模型_第7张图片
这里的误差率就是刚才提到的误差率(错误划分类别的样本权重之和),这里是一个更加学术的写法,其中是样本i的权重,是弱学习器所预测的样本i的分类,也即预测值,是样本i的实际值,是一个指示函数 (Indicator Function),当括号内的条件成立时(也即预测失败)函数取值为1,否则(也即预测成功)取值为0。

(3) 调整弱学习区权重
Python--AdaBoost 与 GBDT模型_第8张图片
(4) 更新样本点权重
有了弱学习器的权重后,就可以更新原来样本点的权重。增大错误分类点的权重,减少正确分类点的权重,从而再之后的分类中实现较为准确的分类:
Python--AdaBoost 与 GBDT模型_第9张图片
Python--AdaBoost 与 GBDT模型_第10张图片
(5) 反复迭代
将上面的过程反复迭代,代直到误分类数达到阈值或达到最大迭代次数。
M次迭代后得到最终强学习器:
Python--AdaBoost 与 GBDT模型_第11张图片
(6)正则化项
Python--AdaBoost 与 GBDT模型_第12张图片

代码实现

AdaBoost模型既可以做分类分析,也可以做回归分析,分别对应的模型为:
AdaBoost分类模型(AdaBoostClassifier
AdaBoost回归模型(AdaBoostRegressor

你可能感兴趣的:(Python,python,机器学习,开发语言)