使用多分类器时 – 如何衡量集成的性能? [SciKit Learn]

我有一个分类问题(预测一个序列是否属于某个类别),为了帮助过滤掉假阳性,我决定使用多种分类方法。

(这个问题属于生物信息学领域 – 将蛋白质序列分类为神经肽前体序列。如果有人感兴趣,这是原始文章以及用于生成特征和训练单一预测器的代码)。

现在,这些分类器在性能指标上大致相似(在训练集上进行10折交叉验证时,准确率/精确率等为83-94%),所以我的“简单”方法是使用多个分类器(随机森林、ExtraTrees、SVM(线性核)、SVM(RBF核)和GRB),并采用简单多数投票的方式。

我的问题是:如何获取不同分类器及其投票预测的性能指标?也就是说,我想看看使用多个分类器是否能提高我的性能,或者哪种组合效果更好。

我的直觉是可能使用ROC分数,但我不知道如何“组合”结果并从多个分类器的组合中获取它。(也就是说,查看每个分类器单独的ROC曲线[已知],然后查看使用分类器组合的训练数据的ROC曲线或AUC)。

(我目前使用随机森林和ExtraTrees方法的“预测概率”来过滤预测,然后任意过滤预测分数低于‘0.85’的结果。额外的过滤层是“有多少分类器同意这个蛋白质的阳性分类”。)

非常感谢!!

(使用多个分类器的网站实现 – http://neuropid.cs.huji.ac.il/

整个系统是使用SciKit learn和Python实现的,包括引用等!)


回答:

要评估集成的性能,只需按照你通常的做法进行即可。然而,你需要先获取10折数据集划分,对于每一折,在同一折上训练你所有的集成,测量准确率,然后用其他折重复这一过程,最后计算集成的准确率。所以关键的区别是,在评估集成时,不要使用k折交叉验证来训练各个算法。重要的是不要让集成直接看到测试数据,或者让它的某个算法看到测试数据。

还要注意,随机森林和Extra Trees本身就是集成算法。

另一种方法(同样确保使用集成方法)是获取你的分类器输出的概率和/或标签,并将它们输入到另一个分类器中(比如决策树、随机森林、SVM或其他),该分类器通过结合这些其他分类器的最佳猜测来产生预测。这被称为“堆叠”

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注