我有一个分类问题(预测一个序列是否属于一个类),我决定使用多种分类方法,以帮助过滤掉误报.
(问题在于生物信息学 - 将蛋白质序列分类为神经肽前体序列.如果有人感兴趣,这是原始文章,以及用于生成特征和训练单个预测变量的代码).
现在,分类器具有大致相似的性能指标(在10倍CV的训练集上具有83-94%的准确度/精度/等),因此我的"天真"方法是简单地使用多个分类器(随机森林,ExtraTrees,SVM) (线性内核),SVM(RBF内核)和GRB),并使用简单多数投票.
我的问题是:我如何获得不同分类器和/或投票预测的绩效指标?也就是说,我想看看使用多个分类器是否可以提高我的性能,或者它们的组合是什么.
我的直觉可能是使用ROC分数,但我不知道如何"结合"结果并从分类器的组合中获得结果.(也就是说,要查看单独的每个分类器的ROC曲线[已知],然后使用分类器组合查看ROC曲线或训练数据的AUC).
(我目前使用随机森林和ExtraTrees方法使用"预测概率"过滤预测,然后我任意过滤预测得分低于'0.85'的结果.另外一层过滤是"有多少分类器同意这种蛋白质的正分类").
非常感谢你!!
(网站实施,我们使用多个分类器 - http://neuropid.cs.huji.ac.il/)
整个shebang是使用SciKit learn和python实现的.引文和所有!)
要评估整体的性能,只需按照通常的方法进行.但是,您需要首先获得10倍数据集分区,并且对于每个折叠,在同一折叠上训练所有集合,测量准确度,冲洗并与其他折叠重复,然后计算集合的准确性.因此,关键的区别在于在评估整体时不使用k折叠交叉验证来训练各个算法.重要的是不要让集合直接或通过让其中一个算法看到测试数据来查看测试数据.
另请注意,RF和Extra Trees本身就已经是集合算法.
另一种方法(再次确保整体方法)是通过分类器获取概率和\或标签输出,并将它们提供给另一个分类器(比如DT,RF,SVM或其他),通过组合它来产生预测这些其他分类器的最佳猜测.这被称为"堆叠"