Python3机器学习实践:集成学习
ee.png
这个时代,假如你觉得自己不够强,那就找几个人联合起来。机器学习亦如此。
image
集成学习是一种将几种机器学习模型组合成一个模型的元算法(meta-algorithm),以减小方差(例如:Bagging),偏差(例如:Boosting),或者者改进预测(例如:Stacking)。
- 集成方法分类
串行集成方法:多个模型顺序生成。此方法是利用模型之间的依赖关系。算法可以通过提高被分错样本的权重来提高性能。具体参见Bagging。
并行集成方法:多个模型并行生成。此方法是利用模型之间的独立性,由于可以通过平均来降低误差。具体参见Boosting。
树行集成方法:这种方法可分多层,每一层可包括多种模型,下层的训练数据集为上一层的训练结果,相似于树。具体参见Stacking。
image
一、Bagging
Bagging:也就是自举汇聚法(Bootstrap Aggregating),步骤如下:
在包含N个样本的数据集中采用有放回的抽样方式随机抽取肯定数量(可以为N)的样本,构成一个数据集;
按照步骤1中的方式得到M个数据集;
利用机器学习的方法(例如:SVM,决策树,神经网络……)对得到的M个数据集,训练出M个弱模型(比随机模型效果好);
集成M个弱模型的结果作为最终结果;
Bagging就是通过M个弱模型的结果,通过并行集成的方式来取得最终结果。由于M个数据集是相互独立的,因而这M个弱模型之间也是相互独立的,在最终的集成结果时,每个模型的权重是一样的。这是和下文的Boosting所不同的。
Bagging集成方式
回归问题
M个模型结果的均值;分类问题
对M个模型的结果进行投票决定,票数多的作为结果;票数一样,随机决定;代表方法
随机森林(Random Forest)
image
二、Boosting
Boosting步骤如下:
- 每一次都根据上一次训练得到的模型结果,调整数据集样本分布,而后再生成下一个模型;
- 直到生成M个模型;
- 根据M个模型的结果集成得到最终的结果;
Boosting集成方式
每个模型的重要度作为每个模型结果的权重,而后加权计算得出结果。可以看出Boosting中生成多个模型的方式并不是和Bagging一样并行生成,而是串行生成,因而也决定了多个模型结果的集成是串行集成,也就是每个模型的结果权重并不是一样的。如何来调整样本分布以及计算模型的重要度,不同方法有不同的定义,介绍参见具体方法。代表方法
AdaBoost
GBDT
XGBoost
image
三、Stacking
Stacking步骤如下:
将训练好的所有基模型对整个训练集进行预测,第j个基模型对第i个训练样本的预测值将作为新的训练集中第i个样本的第j个特征值,最后基于新的训练集进行训练。同理,预测的过程也要先经过所有基模型的预测形成新的测试集,最后再对测试集进行预测。
- 代表方法
Stacking
image
实例代码:随机森林,其余方法陆续升级。扫描下方二维码或者者微信公众号直接搜索”Python范儿“,关注微信公众号pythonfan, 获取更多实例和代码。
pythonfan.jpg
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Python3机器学习实践:集成学习