adaboost算法_sklearn(十) adaboost

2426a95763cc88e4beb68312ef37d581.png

AdaBoost (Adaptive Boosting 自适应增强)

是什么:

该方法是一种迭代算法,在每轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率。每个数据集都被赋予一个权重,表明被分类器选入训练集的概率。如果某个样本点已经被分类,在构造下一个训练集中,被选中的概率会降低;某个样本点没有被准确的分类,权重会得到提高,将聚焦于那些较难分的样本上。在最终时,权重是相等的。在不断的迭代后,根据不同的权重选取样本点,训练分类器,训练完该分类器后,提高被分错的样本的权重,降低正确分类的权重,不断的迭代。到达一个最佳分类效果(针对同一个训练集训练不同的分类器,然后把这些弱分类器集合起来,构成一个最终的分类器,把比随机猜度略高的弱学习器增强为预测精度高的强学习器。)

该方法的自适应在于:前一个分类器分错的样本会被用来训练下一个分类器。

该方法对于噪声数据和异常数据很敏感。

该方法相对其他学习算法而言,不会很容易出现过拟合现象。

该方法中使用的分类器可能很弱(比如出现很大错误率),但是只要该方法的分类效果比随机好一点(以百分之五十作为分界点),就能够改善最终得到的模型;如果出现错误率高于随机分类器的弱分类器也是有用的,在结果为多个分类器的线性组合中,可以通过把弱分类器赋予负系数(权重),也能提升分类效果。

Boosting:称为增强学习或提升法。几乎可以应用于目前流行的机器学习算法以进一步加强算法的预测精度(是一种训练思路,并不是某种具体的方法或算法,把已有的算法进行结合,从而得到更好的效果)。AdaBoost是其中最成功的代表。AdaBoost让Boosting从最初的猜想编程一种真正的具有价值的算法;采用的一些技巧,为其他统计学习算法的设计带来了重要的启示;相关理论的研究极大促进了集成学习的发展。

Bagging(bootstarp aggregating )

和Boosting组装基础模型的另外一种思路是bagging

应用范围:两类问题,多类单标签问题,多类多标签问题,大类单标签问题,回归问题。

算法流程:

  1. 先通过对n个训练样本的学习得到一个分类器
  2. 将分错的样本和其他的新数据一起构成一个新的N个的训练样本,通过对这个样本的学习得到第二个弱分类器。
  3. 将1和2都分错了的样本加上其他的新的样本构成另一个新的n个的训练样本,通过对这个样本的学习得到第三个弱分类器
  4. 最终经过提升的强分类器。即在后续的数据分类中,确定分为哪一类要由各分类器权值决定(即综合所有分类器的投票得到最终的一个分类结果)。

Adaboost的优缺点

优点:

  1. 利用弱分类器进行级联
  2. 可以将不同的分类算法作为弱分类器
  3. 具有很高的精度
  4. 充分考虑每个分类器的权重

缺点:

  1. adaboost迭代次数(弱分类器数目)不太好设定,设定的方式是通过交叉验证来确定
  2. 数据不平衡导致分类精度下降
  3. 训练比较耗时,每次重新选择当前分类器最好切分点。

Sklearn adaboost

from sklearn.ensemble import AdaBoostClassifier
import csv
from sklearn.cross_validation import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report
data=[]
traffic_feature=[]
traffic_target=[]
csv_file = csv.reader(open('packSize.csv'))//读取数据集
for content in csv_file:
    content=list(map(float,content))
    if len(content)!=0:
        data.append(content)
        traffic_feature.append(content[0:6]) //存放6个统计特征
        traffic_target.append(content[-1]) //存放样本标签
print('data=',data)
print('traffic_feature=',traffic_feature)
print('traffic_target=',traffic_target)
feature_train, feature_test, target_train, target_test = train_test_split(traffic_feature, traffic_target, test_size=0.3,random_state=0)
AB = AdaBoostClassifier(n_estimators=1000)
AB.fit(feature_train,target_train)
predict_results=AB.predict(feature_test)
print(accuracy_score(predict_results, target_test))
conf_mat = confusion_matrix(target_test, predict_results)
print(conf_mat)
print(classification_report(target_test, predict_results))

参考:

https://www.wikiwand.com/zh-hans/AdaBoost​www.wikiwand.com adaboost_百度百科​baike.baidu.com
53ceb467c2f1065f715d5570b04665d8.png
一文看懂 Adaboost 算法 (与bagging算法对比 + 7 个优缺点)​easyai.tech
d6d569e2dd8518f7e95a668183487d33.png
Adaboost 算法的原理与推导​blog.csdn.net
f927d736f29b03bafbc70e12a80399ae.png
Eureka:AdaBoost算法​zhuanlan.zhihu.com
ade23e2f366436548c0758b190fa0228.png
AdaBoost | 数据挖掘十大算法详解​wizardforcel.gitbooks.io
1e5f542bae6f96f4a7f2654f3869e473.png
集成学习之Adaboost算法原理小结 - 刘建平Pinard - 博客园​www.cnblogs.com
0e9250548fb9b83f9b2534d0cb68a7c4.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值