机器学习之集成学习(实验记录)

一、实验目标

了解集成学习的基本结构、训练方法、实现方法,并通过随机森林与Adaboost算法加深理解。

二、实验内容

概念
集成学习(Ensemble learning)通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统、基于委员会的学习等,集成学习通常可以获得比单一学习模型更好的泛化性。
基本结构
先产生多个“个体学习器”,也叫做“基学习器”,再用某种策略将它们结合起来,集成中只包含同种类型的个体学习器叫做同质,包含不同类型的个体学习器叫做异质。要获得好的集成就应该找到“好而不同”的个体学习器,这就是集成学习的研究核心。
理论理解
在这里插入图片描述

图1.分类错误率
在这里插入图片描述

图2.投票法
sign:表示输入小于零时,结果为0;当输入大于零时,结果为1.
在这里插入图片描述
图3.hoeffding不等式
通过分析可知,随着集成的个体分类模型的个数T增加,集成模型的错误率呈指数级下降,且个体分类模型的错误率ε越小,集成模型的错误率也越小。
所以我们可以通过增加T,即增加个体学习器的个数,和减小ε,来得到更好的效果。
在集成学习中,如果个体学习模型之间的差异很小,集成之后的模型与个体模型之间的并没有明显的差别,集成的效果不明显。下图所示的是个体分类模型对集成结果的影响
在这里插入图片描述
图4.效果对比
通过上述例子我们可以看出,要想获得更好的集成性能,基学习器要满足两个条件

  • 基学习器的准确率不低于50%
  • 基学习器要有差异,不能完全相同

Boosting
Boosting是一簇可将弱学习器提升为强学习器的算法。其工作机制为:

  • 先从初始训练集训练出一个基学习器
  • 再根据基学习器的表现对样本分布进行调整,使得先前的基学习器做错的训练样本在后续收到更多的关注
  • 然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到实现指定的值T,或整个集成结果达到退出条件
  • 然后将这些学习器进行加权结合。

AdaBoost
AdaBoost是Boosting中的经典算法,其主要应用于二分类问题。
Adaboost 算法采用调整样本权重的方式来对样本分布进行调整,即提高前一轮个体学习器错误分类的样本的权重,而降低那些正确分类的样本的权重,这样就能使得错误分类的样本可以受到更多的关注,从而在下一轮中可以正确分类,使得分类问题被一系列的弱分类器“分而治之”。对于组合方式,AdaBoost采用加权多数表决的方法,具体地,加大分类误差率小的若分类器的权值,减小分类误差率大的若分类器的权值,从而调整他们在表决中的作用。
其算法流程
AdaBoost算法流程如下:
在这里插入图片描述
图5.AdaBoost算法流程
Bagging
Bagging是一种个体学习器之间不存在强依赖关系、可同时生成的并行式集成学习方法。
bagging基于自助采样法(bootstrap sampling),也叫又放回重采样法。即给定包含m个样本的数据集,先随机从样本中取出一个样本放入采样集中,再把该样本返回初始数据集,使得下次采样时该样本仍可以被选中,这样,经过m次随机采样操作,就可以得到包含m个样本的采样集,初始数据集中有的样本多次出现,有的则未出现,其中,初始训练集中约有63.2%的样本出现在采样集中。照上面的方式进行T次操作,采样出T个含有m个训练集的采样集,然后基于每个采样集训练出T个基学习器,再将这些基学习器进行结合,即可得到集成学习器。在对输出进行预测时,Bagging通常对分类进行简单投票法,对回归使用简单平均法。若出现形同,则任选其一
在这里插入图片描述

图6.bagging算法流程
随机森林
随机森林(Random Forest,简称RF)是Bagging集成学习方法的一个扩展变体。随机森林以决策树作为Bagging集成学习的基学习器,与经典的决策树不同,随机森林在构建决策树模型的时候不是在所有的属性上去选择最优划分属性,而是在数据集属性的一个随机子集上进行最优划分属性的选择。由于基学习器的训练数据以及特征属性都不完全相同,随机森林构造的基学习器具有较大的差异,使得随机森林不仅简单、计算开销小,而且在很多实际任务中展现出强大的性能。

三、实验任务及步骤

如今越来越多的人在消费时使用信用卡进行支付,各大银行纷纷投入更多资源拓展信用卡业务,信用卡产业飞速发展。因为市场竞争激烈,信用卡产品同质化严重,商业银行迫切需要更有效的方式扩大客户规模,实现精准营销,从而降低陈本,提高效益。此次实践任务要求根据1000条信用卡营销的客户数据(详见“信用卡精准营销模型.csv”),使用本章实现的AdaBoost和随机森林算法,构建信用卡精准营销模型。
代码理解:
np.ones 返回一个全为一的数组
np.multiply 数组和矩阵对应位置相乘,输出与相乘数组/矩阵的大小一致
np.exp(x) e的x次方
AdaBoost
操作步骤:
1)数据处理:前四列属性作为训练数据集,最后一列为标签,其中训练数据集中按9:1划分训练集和测试集。
2)函数补全:
在这里插入图片描述

3)结果分析:
以最后10%的数据来预测
在这里插入图片描述

这是取11个分类器的预测结果,其中有87个标签预测正确,通过不断额尝试,我发现当分类器的数量太少时预测效果不好,大概预测正确在60个左右,当分类器的数量在10个左右时效果最好,能预测正确85个左右,当分类器的数量太多时,效果会下降。
随机森林
操作步骤:
1)数据处理:读入数据集,然后按9:1划分训练集和测试集,然后将数据集的前五列最为训练样本,最后一列为标签,同时将dataframe类型转换为array类型。
2)函数补全:
在这里插入图片描述在这里插入图片描述
3)结果分析:
在这里插入图片描述

一共100个预测结果,其中预测正确的有88个,这是我选择的结果比较好的例子,通过不断的改变森林中决策树的个数,每次选取的特征个数,树的最大高度可以得到不同的结果,我选择决策树的个数为4,每次选取特征的个数为5,树的最大高度为6,这时效果较好。

四、实验总结

在本次实验中,我学会了numpy库中的一些函数,同时也学会了将数学表达式转换成代码,理解了随机森林和AdaBoost的相关内容。但在实验过程中也遇到了很多问题,大部分集中在输入的数据格式不对,我通过上网查询资料和询问老师的方式解决了这些问题,在思考解决问题的过程中,自己的思维方式发生了改变,解决问题的能力也得到了提升。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会赚钱的AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值