EL之AdaBoost:集成学习之AdaBoost算法的简介、应用、经典案例之详细攻略


幸福踢抽屉
幸福踢抽屉 2022-09-19 14:41:37 67069
分类专栏: 资讯

EL之AdaBoost:集成学习之AdaBoost算法的简介、应用、经典案例之详细攻略

目录

AdaBoost算法的简介

1、理解AdaBoost算法

1.1、从前向逐步递增角度来看理解AdaBoost:要找到最优的f很难→每次递增。

1.2、前向逐步递增的损失函数—L2Boosting

2、AdaBoost M1算法证明过程

AdaBoost算法的经典案例

1、预测马疝病是否死亡的数据集


AdaBoost算法的简介

        Adaptive Boosting或称为AdaBoost,是多种学习算法的融合。Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。
        算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器融合起来,作为最后的决策分类器。使用adaboost分类器可以排除一些不必要的训练数据特征,并放在关键的训练数据上面

        AdaBoost是最常用的算法。它可用于回归或者分类算法。相比其他机器学习算法,它克服了过拟合的问题,通常对异常值和噪声数据敏感。为了创建一个强大的复合学习器,AdaBoost使用了多次迭代。因此,它又被称为“Adaptive Boosting”。通过迭代添加弱学习器,AdaBoost创建了一个强学习器。一个新的弱学习器加到实体上,并且调整加权向量,作为对前一轮中错误分类的样例的回应。得到的结果,是一个比弱分类器有更高准确性的分类器。
        AdaBoost有助于将弱阈值的分类器提升为强分类器。上面的图像描述了AdaBoost的执行,只用了简单易于理解的代码在一个文件中就实现了。这个函数包含一个弱分类器和boosting组件。弱分类器在一维的数据中尝试去寻找最理想的阈值来将数据分离为两类。boosting组件迭代调用分类器,经过每一步分类,它改变了错误分类示例的权重。因此,创建了一个级联的弱分类器,它的行为就像一个强分类器。
        目前,对Adaboost算法的研究以及应用大多集中于分类问题,同时近年也出现了一些在回归问题上的应用。Adaboost系列主要解决了:两类问题、多类单标签问题、多类多标签问题、大类单标签问题和回归问题。它用全部的训练样本进行学习。
以上主要参考:《2019中国人工智能发展报告》—清华大学中国工程院知识智能中心—201912

1、理解AdaBoost算法

1.1、从前向逐步递增角度来看理解AdaBoost:要找到最优的f很难→每次递增。


1.2、前向逐步递增的损失函数—L2Boosting

2、AdaBoost M1算法证明过程

(1)、证明过程





 

AdaBoost算法的经典案例

相关文章机器学习实战之AdaBoost算法

1、预测马疝病是否死亡的数据集

  1. 自适应加载数据
  2. def loadDataSet(filename):
  3. 创建数据集矩阵,标签向量
  4. dataMat=[];labelMat=[]
  5. 获取特征数目(包括最后一类标签)
  6. readline():读取文件的一行
  7. readlines:读取整个文件所有行
  8. numFeat=len(open(filename).readline().split('\t'))
  9. 打开文件
  10. fr=open(filename)
  11. 遍历文本每一行
  12. for line in fr.readlines():
  13. lineArr=[]
  14. curLine=line.strip().split('\t')
  15. for i in range(numFeat-1):
  16. lineArr.append(float(curLine[i]))
  17. 数据矩阵
  18. dataMat.append(lineArr)
  19. 标签向量
  20. labelMat.append(float(curLine[-1]))
  21. return dataMat,labelMat
  22. 自适应加载数据
  23. def loadDataSet(filename):
  24. 创建数据集矩阵,标签向量
  25. dataMat=[];labelMat=[]
  26. 获取特征数目(包括最后一类标签)
  27. readline():读取文件的一行
  28. readlines:读取整个文件所有行
  29. numFeat=len(open(filename).readline().split('\t'))
  30. 打开文件
  31. fr=open(filename)
  32. 遍历文本每一行
  33. for line in fr.readlines():
  34. lineArr=[]
  35. curLine=line.strip().split('\t')
  36. for i in range(numFeat-1):
  37. lineArr.append(float(curLine[i]))
  38. 数据矩阵
  39. dataMat.append(lineArr)
  40. 标签向量
  41. labelMat.append(float(curLine[-1]))
  42. return dataMat,labelMat
  43. 训练和测试分类器
  44. def classify():
  45. 利用训练集训练分类器
  46. datArr,labelArr=loadDataSet('horseColicTraining2.txt')
  47. 得到训练好的分类器
  48. classifierArray=adaBoostTrainDS(datArr,labelArr,10)
  49. 利用测试集测试分类器的分类效果
  50. testArr,testLabelArr=loadDataSet('horseClicTest2.txt')
  51. prediction=adaClassify(testArr,classifierArray)
  52. 输出错误率
  53. num=shape(mat(labelArr))[1]
  54. errArr=mat(ones((num,1)))
  55. error=errArr[prediction!=mat(testLabelArr).T].sum()
  56. print("the errorRate is: %.2f",errorRate=float(error)/float((num)))

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=3050
赞同 0
评论 0 条
幸福踢抽屉L0
粉丝 0 发表 10 + 关注 私信
上周热门
Kingbase用户权限管理  1999
信刻全自动光盘摆渡系统  1728
信刻国产化智能光盘柜管理系统  1400
银河麒麟添加网络打印机时,出现“client-error-not-possible”错误提示  987
银河麒麟打印带有图像的文档时出错  888
银河麒麟添加打印机时,出现“server-error-internal-error”  682
麒麟系统也能完整体验微信啦!  637
统信桌面专业版【如何查询系统安装时间】  600
统信操作系统各版本介绍  598
统信桌面专业版【全盘安装UOS系统】介绍  570
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

添加我为好友,拉您入交流群!

请使用微信扫一扫!