集成学习

集成学习:

一种思想,指导着一套算法的学习

弱学习器 60%

强学习器 99%
多个弱学习器组合在一起,最终达到比单独一个强学习器还要好的效果
一个算法 80%

boosting: 弱弱增强,解决欠拟合的问题
bagging: 每一个模型都容易过拟合,相互遏制,稳定性变强(robust),泛化能力增强

3个  分类结果

建立几个模型来解决单一预测问题
这些预测最后结合成组合预测,因此优于任何一个单分类的做出预测。

未来数据上,做出很好的预测
训练数据集合上表现很好,测试数据集合上表现很好

欠拟合:训练数据集合上表现不好,测试数据集合上表现不好
过拟合:训练数据集合上表现好,测试数据集合上表现不好
模型的泛化性能差

分类为例:

每个弱学习器单独训练,单独预测,预测结果组合,解决欠拟合
bagging

先训练一个弱学习器,下一个学习器在上一个学习器的错误数据上进行训练
boosting

5.2 Bagging
每个弱学习器单独训练,单独预测,平权组合预测结果,做预测【分类问题,平权投票;回归问题,取平均值】

​ N个样本随机有放回的抽取N次 (66%)

每个学习器对数据做随机抽样(保证每个学习器都能拿到尽可能多的数据,每一个学习器拿到的数据集不能完全相同)
单独训练
单独预测
预测结果组合(平权)即看这个部分那个类别多,咱们的结果就选择这个类别

随机森林构造过程
随机:指咱们的学习器随机采样的过程
多个子学习器(决策树) + bagging 风格
100个特征 20 100颗

  1. 随机抽样数据
  2. 随机抽样特征
  3. 每个决策树单独训练
  4. 每个数都有预测能力
  5. 平均投票(回归问题:取平均值)

3 随机森林api介绍
sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion=’gini’, max_depth=None, bootstrap=True, random_state=None, min_samples_split=2)

    .fit(x_train, y_train
    .predict(x_test)

    .score(x_test, y_test)

5 bagging集成优点
简单, 方便, 通用

先训练一个弱学习器,

下一个学习器在上一个学习器做错的数据上进行重点的学习

下一个学习器在上一个学习器做错的数据上进行重点的学习

下一个学习器在上一个学习器做错的数据上进行重点的学习 。。。

多个学习器之间进行加权组合

Boosting

关键点:

如何确认投票权重?

如何调整数据分布?

​ 随着学习的积累从弱到强
​ Adaboost,GBDT,XGBoost

1.2 实现过程:
准确率: 100

调整权重:  50 个预测对的    50个预测错
    50 / (50 + 50 * 2)



boosting的过程:
    第一个弱学习期在数据集合上进行训练
        调整数据权重(预测错误的数据权重增加,预测正确的数据权重减小)
    下一个学习器就在上一个学习器调整过权重的数据集上在进行训练
        调整数据分布
    下一个学习器就在上一个学习器调整过权重的数据集上在进行训练
        调整数据分布
        。
        。
        。

    所有学习器加权组合在一起(预测结果加权组合作为最终结果)


如何调整数据权重?  (咱们每一次都是在上一次的基础上进行权重更新)
咱们的回归问题中  --> 权重之和为1 
如何调整学习器的权重?
    = 1/2 * ln((1 - 错误率)/错误率)


m     1/m


10     1/10
    3个错的
    7的对的

    错误率= 0.3
    学习器的权重 alpha1 = 1/2 * ln((1 - 0.3) / 0.3)
                    = 0.5 * ln(7/3)


    调整数据的权重
        预测对的样本
            0.1 * e^(- 0.5 * ln(7/3))
        预测错的样本
            0.1 * e^(0.5 * ln(7/3))


        0.1 * e^(- 0.5 * ln(7/3)) * 7 + 0.1 * e^(0.5 * ln(7/3)) * 3
adaboost

True, False

  1. 全部的训练数据,初始化成平权,训练学习器
  2. 计算学习器在训练数据上的错误率(调整训练数据的权重)
  3. 根据错误率调整数据权重
  4. 下一轮的学习器的训练
  5. 上面做循环m次,训练出率m个学习器
  6. 所有的学习器加权投票
GBDT(了解)

GBDT = 梯度下降 + Boosting + 决策树

回归问题用方差作为咱们决策树的度量

分类则是 信息增益、信息增益率或者基尼指数

h0(x) = 1.475

连续值怎么衡量纯不纯粹,一不一致, 方差

h1(x) = -0.275 (年龄<21) 0.275 (年龄>=21)

h2(x) = -0.1 (体重<30) 0.03 (体重>=30)

H(x) = h0(x) + h1(x) + h2(x)
= 1.475 + 0.275 + 0.03
= 1.78

1.使用梯度下降法优化代价函数;

2.使用一层决策树作为弱学习器,负梯度作为目标值;(梯度的负值是函数下降最快的方向)

3.利用boosting思想进行集成。

XGBoost【了解】

GBDT = 梯度下降 + Boosting + 决策树
XGBoost= 二阶泰勒展开+boosting+决策树+正则化

w, f(w)
w0, f(w0)

f’(w0) = 1

f(w0 + 0.000001) = f(w0) + 0.000001 * f’(w0)

XGBoost= 二阶泰勒展开+boosting+决策树+正则化

  • 面试题:了解XGBoost么,请详细说说它的原理

回答要点:二阶泰勒展开,boosting,决策树,正则化

Boosting:XGBoost使用Boosting提升思想对多个弱学习器进行迭代式学习

二阶泰勒展开:每一轮学习中,XGBoost对损失函数进行二阶泰勒展开,使用一阶和二阶梯度进行优化。

决策树:在每一轮学习中,XGBoost使用决策树算法作为弱学习进行优化。

正则化:在优化过程中XGBoost为防止过拟合,在损失函数中加入惩罚项,限制决策树的叶子节点个数以及决策树叶子节点的值。

bagging集成与boosting集成的区别:

区别一:数据方面

Bagging:对数据进行采样训练;

Boosting:根据前一轮学习结果调整数据的重要性。(对整体的数据进行训练)

区别二:投票方面

Bagging:所有学习器平权投票;

Boosting:对学习器进行加权投票。

区别三:学习顺序

Bagging的学习是并行的,每个学习器没有依赖关系;

Boosting学习是串行,学习有先后顺序。

区别四:主要作用

Bagging主要用于提高泛化性能(解决过拟合,也可以说降低方差)

Boosting主要用于提高训练精度 (解决欠拟合,也可以说降低偏差)

数据分析

机器学习

深度学习: 图像

名字
算法分类
思路
怎么用api

细致数学原理
实现步骤
优化

具有快速的业务理解及学习能力,逻辑思维、自我驱动、抗压能力强

ACL、 EMNLP 、NIPS、ICLR、ICML等会议

百词斩
100天阅读

深度学习 图像
CNN LeCun LeNet-5

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值