集成学习笔记--Boosting&Bagging,Adaboost,随机森林

目录

笔记

Boosting

Bagging&Boosting对比

Adaboost

Adaboost算法整体流程:

优缺点:

Adaboost的api


集成学习概述

2 决策树

3 随机森林


4  Bagging和boosting

 


Boosting

原理:随着学习的积累从弱到强

实现过程:

  1. 初始化训练数据权重,初始权重相等
  2. 通过学习器计算错误率
  3. 计算学习器的投票权重
  4. 对每个样本进行重新赋权
  5. 重复1-4
  6. 对构建好的最后的学习器进行加权投票


Bagging&Boosting对比

1.数据方面:

       Bagging数据随机放回,重新采样

       Boosting:对数据进行权重调整

2.投票方面:

       Bagging 平权投票

       Boosting 加权投票

3.学习顺序方面:

       Bagging 并行(训练多个弱分类器)

       Boosting 串行(迭代生成弱分类器)

4.主要作用:

       Bagging 解决过拟合问题

       Boosting 欠拟合


Adaboost

前向分布算法:

弱学习器—决策树

通过将迭代生成弱学习器,并将产生的弱学习器与当前已有的学习器加和,最终产生一个强学习器。

Gm(x)是第m次迭代产生的弱学习器,最后将Sign(Fm(x))作为x的输出类别。

损失函数:

(1)

损失函数大,权重小;反之权重大。

所以我们可以从损失函数推导出样本权重w和学习器权重afa的推导公式。

损失函数L取:

现在将(1)式代入上式进行推导:

令Wmi=/

可以转换成+-1alpham,所以

预测错误的时候是正的,预测对的时候是负的。

最终推导得到如下Wmi的递推公式:

Adaboost算法整体流程:

优缺点:


Adaboost的api

# -*- coding:utf-8 -*-

from sklearn.ensemble import AdaBoostClassifier
from sklearn.datasets import make_classification
from sklearn.svm import SVC

X, y = make_classification(n_samples=1000, n_features=4,
                           n_informative=2, n_redundant=0,
                           random_state=0, shuffle=False)

# 弱学习器更改为svm,需要设置algorithm为SAMME
cl=SVC()
# 默认决策树,max_depth=1,集成学习,本来弱,集成后结果反而更好;本来强,集成后结果不一定好。
clf = AdaBoostClassifier(base_estimator=cl,n_estimators=100, random_state=0,algorithm='SAMME')

clf.fit(X, y)
cl.fit(X,y)

print(clf.predict([[0, 0, 0, 0]]))

print(clf.score(X, y))
print(cl.score(X, y))#单个强的话效果更好

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值