实现机器学习的循序渐进指南VI——AdaBoost
目录
介绍
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相关推荐
- 实现机器学习的循序渐进指南系列汇总
之前曾尝试翻译了机器学习中的KNN和决策树,最近这段时间陆续看到这个系列的相关文章,并尝试翻译分析.由于此系列文章直接相对零散,所以有了这篇简单的汇总文章,以帮助有兴趣的小伙伴迅速找到想看的文章. 具 ...
- 实现机器学习的循序渐进指南XII——Apriori
目录 介绍 Apriori模型 频繁项集 关联规则 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 Apriori是一种学习频繁项集和关联规则的算法.Aprio ...
- 实现机器学习的循序渐进指南XI——DBSCAN
目录 介绍 DBSCAN模型 开始 聚类算法 参数估计 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 基于密度的噪声应用空间聚类(DBSCAN)是一种基于密度 ...
- 实现机器学习的循序渐进指南X——KMeans
目录 介绍 KMeans模型 KMEANS 平分KMeans KMEANS ++ 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 KMeans是一种简单的聚类算 ...
- 实现机器学习的循序渐进指南VIII——线性回归
目录 介绍 回归模型 线性回归 局部加权线性回归 岭回归 套索(Lasso)回归 逐步线性回归 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 通常存在变量之间 ...
- 实现机器学习的循序渐进指南IX ——树回归
目录 介绍 回归模型 特征选择 回归树的生成 回归 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 在现实世界中,一些关系不是线性的.因此,应用线性回归分析这些 ...
- 实现机器学习的循序渐进指南VII——Blending Stacking
目录 介绍 混合(Blending)模型 混合(Blending)架构 混合(Blending)实现 混合(Blending)分类 堆叠(Stacking)模型 堆叠(Stacking)架构 堆叠(S ...
- 实现机器学习的循序渐进指南V——支持向量机
目录 介绍 SVM模型 优化问题 优化算法 分类 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 支持向量机(SVM)是一种基于特征空间最大边距的分类器.SVM ...
- 实现机器学习的循序渐进指南IV——逻辑回归
目录 介绍 逻辑回归模型 参数估计 优化算法 分类 结论与分析 可访问 实现机器学习的循序渐进指南系列汇总,获取本系列完成文章列表. 介绍 逻辑回归是统计学习中的经典方法,它计算条件概率P(Y|X)并 ...
最新文章
- 【bat脚本】使用ffmpeg工具剥离某一个声道
- httpd启动报错:httpd: apr_sockaddr_info_get() failed for jsp...
- pxe+kickstart实现无人值守网络安装rhel5.4
- C#中RichEdit控件,保存文本和图片到mysql数据库
- java找不到符号类socket,编译报错+解决方法:错误: 找不到符号
- 读懂python代码_Python面试|一文让你读懂if __name__==’__main__’的含义
- 使用VisualStudio或VisualStudio Code作为代码比较工具
- C语言连接MySql数据库(CodeBlocks)
- 3西格玛计算公式_西格玛和西格玛水平
- 色环电阻计算器_色环电感标示法_
- 毕业论文查重注意事项论文检测查重原理(以PaperPass为例)
- T5557卡读、写及EM4100 ID、HID卡复制函数说明
- 计算机无法识别u盘,电脑无法识别U盘怎么办?简单搞定
- 我所理解的闭包是酱紫的
- 推荐,Java Emoji Converter(Emoji表情转换工具)
- 不重启JVM动态添加日志(阿里Arthas)
- 微信支付-小程序支付全流程
- 【设计模式】之外观(Facade)模式
- JS回调函数——简单易懂有实例
- 第五篇Data Feeds(3)使用Pandas加载数据
热门文章
- android工控软件,基于Android的工业控制监控软件的设计和开发
- android 原生开发 3d地图 下载_arcgis api 3.x for js 入门开发系列二不同地图服务展示(附源码下载)...
- 电商页面设计排版没有思路?可临摹PSD分层模板,诠释基础版式大招帮你轻松搞定!
- java调用mq发送文件_谁有mq发送接收文件的java代码
- h5的fetch方法_HTML5 fetch API
- python中if控制语句_Python 极简教程(十二)逻辑控制语句 if else
- Python--Json数据简单解析(11.18)
- qt输出中文乱码处理(解决方法)
- Linux虚拟化KVM-Qemu分析(十一)之virtqueue
- Net-snmp开发流程:MG-SOFT套件生成C语言snmp set/get代码