
192
|
第
7
章
不幸的是,Scikit-Learn 不直接支持堆叠,但是推出自己的实现并不太难(参见接下来的
练习题)。或者,你也可以使用开源的实现方案,例如 DESlib。
7.7 练习题
1. 如果你已经在完全相同的训练集上训练了 5 个不同的模型,并且它们都达到了 95%
的准确率,是否还有机会通过结合这些模型来获得更好的结果?如果可以,该怎么
做?如果不行,为什么?
2. 硬投票分类器和软投票分类器有什么区别?
3. 是否可以通过在多个服务器上并行来加速 bagging 集成的训练? pasting 集成呢?
boosting 集成呢?随机森林或 stacking 集成呢?
4. 包外评估的好处是什么?
5. 是什么让极端随机树比一般随机森林更加随机?这部分增加的随机性有什么用?极
端随机树比一般随机森林快还是慢?
6. 如果你的 AdaBoost 集成对训练数据欠拟合,你应该调整哪些超参数?怎么调整?
7. 如果你的梯度提升集成对训练集过拟合,你是应该提升还是降低学习率?
8. 加载 MNIST 数据集(第 3 章中有介绍),将其分为一个训练集、一个验证集和一个
测试集(例如,使用 50 000 个实例训练、10 000 个实例验证、10 000 个实例测试)。
然后训练多个分类器,比如一个随机森林分类器、一个极端随机树分类器和一个
SVM 分类器。接下来,尝试使用软投票法或者硬投票法将它们组合成一个集成,这
个集成在验证集上的表现要胜过它们各自单独的表现。成功找到集成后,在测试集
上测试。与单个的分类器相比,它的性能要好多少? ...