使用多分类器时 – 如何衡量集成的性能? [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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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