《AI安全之对抗样本入门》—
1.5 集成学习
集成学习(Ensemble Learning)是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得比单个学习器更好的学习效果的一种机器学习方法。如图1-34所示,集成学习的思路是在对新的实例进行分类的时候,把若干个单个分类器集成起来,通过对多个分类器的分类结果进行某种组合来决定最终的分类,以取得比单个分类器更好的性能。如果把单个分类器比作一个决策者的话,集成学习的方法就相当于多个决策者共同进行一项决策。如果使用的分类器相同,称为同质,反之则称为异质。综合判断的策略常见的有两种:加权平均和投票。
图1-34 集成学习基本原理
集成学习粗略可以分为两类,第一类是个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是Boosting系列算法。第二类是个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是Bagging算法和随机森林(Random Forest)系列算法。本章以分类问题来介绍常见的Boosting算法和Bagging算法。
1.5.1 Boosting算法
Boosting系列算法的原理是在训练集用初始权重训练出一个分类器,根据分类器的表现来更新训练样本的权重,使得这些错误率高的样本在后面的训练中得到更多的重视。如此重复进行,直到分类器的数量达到事先指定的数目,最终将全部分类器通过集合策略进行整合,得到新的分类器。
Boosting系列算法里最著名的算法主要有AdaBoost算法和梯度提升决策树GBDT(Gradient Boosting Decision Tree) 算法,我们以AdaBoost和GBDT为例,介绍如何在Scikit-Learn中使用它们。
以AdaBoost为例,数据集使用随机生成的数据,使用AdaBoostClassifier,分类器个数设置为100:
x, y = datasets.make_classification(n_samples=1000,
n_features=100,n_redundant=0, random_state = 1)
train_X, test_X, train_Y, test_Y = train_test_split(x,
y,
test_size=0.2,
random_state=66)
clf = AdaBoostClassifier(n_estimators=100)
clf.fit(train_X, train_Y)
pred_Y = clf.predict(test_X)
输出对应的性能指标,准确度为80.5%,f1为81.52%,准确率为81.13%,召回率为81.90%,AUC为0.80:
accuracy_score:
0.805
f1_score:
0.815165876777
recall_score:
0.819047619048
precision_score:
0.811320754717
confusion_matrix:
[[75 20]
[19 86]]
AUC:
0.804260651629
对应的ROC曲线如图1-35所示,综合指标都优于之前的KNN。
图1-35 AdaBoost的ROC曲线
以GBDT为例,数据集依然使用随机生成的数据,使用GradientBoostingClassifier,分类器个数设置为100:
x, y = datasets.make_classification(n_samples=1000,
n_features=100,n_redundant=0, random_state = 1)
train_X, test_X, train_Y, test_Y = train_test_split(x,
y,
test_size=0.2,
random_state=66)
clf = GradientBoostingClassifier(n_estimators=100)
clf.fit(train_X, train_Y)
pred_Y = clf.predict(test_X)
report(test_Y, pred_Y)
输出对应的性能指标,准确度为84%,f1为84.76%,准确率为84.76%,召回率为84.76%,AUC为0.84:
accuracy_score:
0.84
f1_score:
0.847619047619
recall_score:
0.847619047619
precision_score:
0.847619047619
confusion_matrix:
[[79 16]
[16 89]]
AUC:
0.839598997494
对应的ROC曲线如图1-36所示,综合指标优于之前的KNN,也略优于AdaBoost,不过Boosting系列算法都有大量参数可以优化,对性能有一定影响,本章的这个比较只是一个不太严谨的对比。
图1-36 GBDT的ROC曲线
- 点赞
- 收藏
- 关注作者
评论(0)