目录

介绍

AdaBoost模型

弱分类器

权重更新

分类

结论与分析


可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表。

介绍

AdaBoost是Boosting一种方法,它基于多分类器组合可以在复杂环境中获得更准确结果的原则。

AdaBoost模型

AdaBoost模型由弱分类器,权重更新和分类组成。

弱分类器

AdaBoost将弱分类器与某些策略相结合,以获得强大的分类器,如下所示。在每次迭代中,错误分类的样本的权重将增加以捕获分类器“注意”。例如,在图(a)中,虚线是分类器平面,并且存在两个错误分类的蓝色样本和一个红色样本。然后,在图(b)中,增加了两个蓝色样本和一个红色样本的权重。在每次迭代时调整权重后,我们可以组合所有弱分类器以获得最终的强分类器。

权重更新

在每次迭代时有两种类型的权重要更新,即每个样本 的权重和每个弱分类器的权重。一开始,初始化如下:

其中N,  M分别是样本数和弱分类器数。

AdaBoost在每次迭代中训练一个弱分类器,表示其训练误差计算为

然后,通过更新弱分类器的权重

更新样本的权重

其中

形成上述等式,我们可以得出结论

1.训练误差是错误分类样本的权重之和

2.当e m小于0.5,am 大于0,这意味着较低的训练误差的弱分类具有

弱分类器在最终分类器中扮演的更重要的角色。

3.权重更新可写为

这意味着正确的分类样本的权重减少,而错误的分类样本的权重增加。

AdaBoost的训练流程代码如下所示

def train(self, train_data, train_label):if self.norm_type == "Standardization":train_data = preProcess.Standardization(train_data)else:train_data = preProcess.Normalization(train_data)train_label = np.expand_dims(train_label, axis=1)sample_num = len(train_data)weak_classifier = []# initialize weightsw = np.ones([sample_num, 1])w = w/sample_num# predictionsagg_predicts = np.zeros([sample_num, 1]) # aggregate value of prediction# start trainfor i in range(self.iterations):base_clf, error, base_prediction = self.baseClassifier(train_data, train_label, w)alpha = self.updateAlpha(error)weak_classifier.append((alpha, base_clf))# update parameters in page of 139 Eq.(8.4)expon = np.multiply(-1 * alpha * train_label, base_prediction)w = np.multiply(w, np.exp(expon))w = w/w.sum()# calculate the total error rateagg_predicts += alpha*base_predictionerror_rate = np.multiply(np.sign(agg_predicts) != train_label, np.ones([sample_num, 1]))error_rate = error_rate.sum()/sample_numif error_rate == 0:breakself.classifier_set = weak_classifierreturn weak_classifier

分类

结合所有弱分类器以获得强分类器。分类规则是每个弱分类结果的加权和,由下式给出

结论与分析

AdaBoost可以作为使用前向步进算法的指数损失函数的加法模型。在AdaBoost中,弱分类器的类型可以不同或相同。在本文中,我们使用5个SVM分类器作为弱分类器,检测性能如下所示:

它可以是精度提高约5%,运行时间约为单个SVM的5倍。

可以在MachineLearning中找到本文中的相关代码和数据集  。

有兴趣的小伙伴可以查看上一篇或者下一篇。

原文地址:https://www.codeproject.com/Articles/4114375/Step-by-Step-Guide-to-Implement-Machine-Learning

实现机器学习的循序渐进指南VI——AdaBoost相关推荐

  1. 实现机器学习的循序渐进指南系列汇总

    之前曾尝试翻译了机器学习中的KNN和决策树,最近这段时间陆续看到这个系列的相关文章,并尝试翻译分析.由于此系列文章直接相对零散,所以有了这篇简单的汇总文章,以帮助有兴趣的小伙伴迅速找到想看的文章. 具 ...

  2. 实现机器学习的循序渐进指南XII——Apriori

    目录 介绍 Apriori模型 频繁项集 关联规则 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 Apriori是一种学习频繁项集和关联规则的算法.Aprio ...

  3. 实现机器学习的循序渐进指南XI——DBSCAN

    目录 介绍 DBSCAN模型 开始 聚类算法 参数估计 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 基于密度的噪声应用空间聚类(DBSCAN)是一种基于密度 ...

  4. 实现机器学习的循序渐进指南X——KMeans

    目录 介绍 KMeans模型 KMEANS 平分KMeans KMEANS ++ 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 KMeans是一种简单的聚类算 ...

  5. 实现机器学习的循序渐进指南VIII——线性回归

    目录 介绍 回归模型 线性回归 局部加权线性回归 岭回归 套索(Lasso)回归 逐步线性回归 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 通常存在变量之间 ...

  6. 实现机器学习的循序渐进指南IX ——树回归

    目录 介绍 回归模型 特征选择 回归树的生成 回归 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 在现实世界中,一些关系不是线性的.因此,应用线性回归分析这些 ...

  7. 实现机器学习的循序渐进指南VII——Blending Stacking

    目录 介绍 混合(Blending)模型 混合(Blending)架构 混合(Blending)实现 混合(Blending)分类 堆叠(Stacking)模型 堆叠(Stacking)架构 堆叠(S ...

  8. 实现机器学习的循序渐进指南V——支持向量机

    目录 介绍 SVM模型 优化问题 优化算法 分类 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 支持向量机(SVM)是一种基于特征空间最大边距的分类器.SVM ...

  9. 实现机器学习的循序渐进指南IV——逻辑回归

    目录 介绍 逻辑回归模型 参数估计 优化算法 分类 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 逻辑回归是统计学习中的经典方法,它计算条件概率P(Y|X)并 ...

最新文章

  1. 【bat脚本】使用ffmpeg工具剥离某一个声道
  2. httpd启动报错:httpd: apr_sockaddr_info_get() failed for jsp...
  3. pxe+kickstart实现无人值守网络安装rhel5.4
  4. C#中RichEdit控件,保存文本和图片到mysql数据库
  5. java找不到符号类socket,编译报错+解决方法:错误: 找不到符号
  6. 读懂python代码_Python面试|一文让你读懂if __name__==’__main__’的含义
  7. 使用VisualStudio或VisualStudio Code作为代码比较工具
  8. C语言连接MySql数据库(CodeBlocks)
  9. 3西格玛计算公式_西格玛和西格玛水平
  10. 色环电阻计算器_色环电感标示法_
  11. 毕业论文查重注意事项论文检测查重原理(以PaperPass为例)
  12. T5557卡读、写及EM4100 ID、HID卡复制函数说明
  13. 计算机无法识别u盘,电脑无法识别U盘怎么办?简单搞定
  14. 我所理解的闭包是酱紫的
  15. 推荐,Java Emoji Converter(Emoji表情转换工具)
  16. 不重启JVM动态添加日志(阿里Arthas)
  17. 微信支付-小程序支付全流程
  18. 【设计模式】之外观(Facade)模式
  19. JS回调函数——简单易懂有实例
  20. 第五篇Data Feeds(3)使用Pandas加载数据

热门文章

  1. android工控软件,基于Android的工业控制监控软件的设计和开发
  2. android 原生开发 3d地图 下载_arcgis api 3.x for js 入门开发系列二不同地图服务展示(附源码下载)...
  3. 电商页面设计排版没有思路?可临摹PSD分层模板,诠释基础版式大招帮你轻松搞定!
  4. java调用mq发送文件_谁有mq发送接收文件的java代码
  5. h5的fetch方法_HTML5 fetch API
  6. python中if控制语句_Python 极简教程(十二)逻辑控制语句 if else
  7. Python--Json数据简单解析(11.18)
  8. qt输出中文乱码处理(解决方法)
  9. Linux虚拟化KVM-Qemu分析(十一)之virtqueue
  10. Net-snmp开发流程:MG-SOFT套件生成C语言snmp set/get代码