基于 Python 实现动态分类器集成学习

本文介绍了如何使用Python的DESlib库实现动态分类器选择集成学习算法,通过k最近邻模型选择最佳模型进行预测,提高分类精度。示例展示了如何使用OLA和LCA方法,并探讨了超参数调整,包括k值的影响和分类器池的选择,以及如何确保DCS模型性能优于单个贡献模型。
摘要由CSDN通过智能技术生成

动态分类器选择是一种用于分类预测建模的集成学习算法。

该技术涉及在训练数据集上拟合多个机器学习模型,然后基于要预测的示例的特定细节,选择在进行预测时预期表现最佳的模型。

这可以通过以下方法实现:使用k最近邻模型在训练数据集中找到最接近要预测的新示例的示例,评估该邻域中池中的所有模型,并使用在邻域中表现最佳的模型来对新示例做出预测。

这样,动态分类器选择通常可以比池中的任何单个模型更好地执行,并且提供了对来自多个模型的预测求平均的另一种方法,就像其他集成算法一样。

在本教程中,您将发现如何在Python中开发动态分类器选择集合。

完成本教程后,您将知道:

动态分类器选择算法从众多模型中选择一种以对每个新示例进行预测。
如何使用scikit-learn API开发和评估用于分类任务的动态分类器选择模型。
如何探索动态分类器选择模型超参数对分类准确性的影响。

教程概述

本教程分为下面几个部分:他们是:

动态分类器选择
使用Scikit-Learn进行动态分类器选择
具有整体本地精度(OLA)的DCS
具有本地分类精度(LCA)的DCS
DCS的超参数调整
在k最近邻居中探索k
探索分类器池的算法

使用Scikit-Learn进行动态分类器选择

多个分类器系统是指机器学习算法的一个领域,该算法使用多个模型来解决分类预测建模问题。这包括熟悉的技术,如“一对多休息”,“一对多所有”和输出纠错码技术。它还包括更通用的技术,这些技术选择模型以动态地用于需要预测的每个新示例。

Dynamic Ensemble Selection Library或简称为DESlib是一个开放源代码Python库(https://github.com/scikit-learn-contrib/DESlib),它提供了许多不同的动态分类器选择算法的实现。DESlib是一个易于使用的集成学习库,致力于实现动态分类器和集成选择的最新技术。

安装命令如下所示:

pip install deslib

安装完成后,我们可以通过加载库并打印已安装的版本来确认该库已正确安装并可以使用。验证截图如下所示表示可以正常使用了:

DESlib通过每种分类器选择技术分别通过OLA和LCA类提供了DCS-LA算法的实现。每个类都可以直接用作scikit学习模型,从而可以直接使用全套scikit学习数据准备,建模管道和模型评估技术。这两个类都使用k最近邻居算法来选择默认值k = 7的邻居。尽管可以通过将“ pool_classifiers”设置为模型列表来更改,但决策树的自举聚合(装袋)合奏用作针对每个分类考虑的分类器模型池。我们可以使用make_classification()函数创建具有10,000个示例和20个输入功能的综合二进制分类问题。

其中,OLA和LCA解释如下:
局部精度,通常称为LA或整体本地精度(OLA)。
类精度,通常称为CA或本地类精度(LCA)。
 
局部精度(OLA)涉及评估k个训练示例附近的每个模型的分类精度。 然后选择在该邻域中表现最佳的模型以对新示例进行预测。
 
类精度(LCA)涉及使用每种模型对新示例进行预测,并记录所预测的类。 然后,评估每个模型在k个训练示例的邻居上的准确性,并选择对新示例所预测的类具有最佳技能的模型,并返回其预测。
# synthetic binary classification dataset
from sklearn.datasets import make_classification
# define dataset
X, y = make_classification(n_samples=10000, n_features=20, n_informative=15, n_redundant=5, random_state=7)
# summarize the dataset
print(X.shape, y.shape)

输出如下:

(10000, 20) (10000,)

具有整体本地精度(OLA)的DCS

我们可以使用综合数据集上的整体局部精度来评估DCS-LA模型。在这种情况下,我们将使用默认的模型超参数,包括袋装决策树作为分类器模型的池,并且在进行预测时将k = 7用于选择局部邻域。我们将使用具有三个重复和10折的重复分层k折交叉验证来评估模型。我们将报告所有重复和折叠中模型准确性的均值和标准差。

下面列出了完整的示例。

# evalu
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值