首页 文章

使用多个分类器时 - 如何测量整体的性能? [SciKit学习]

提问于
浏览
7

我有一个分类问题(预测一个序列是否属于一个类),我决定使用多种分类方法,以帮助过滤掉误报 .

(问题出在生物信息学 - 将蛋白质序列分类为神经肽前体序列 . 如果有人感兴趣,and the code used to generate features and to train a single predictor) .

现在,分类器具有大致相似的性能指标(在10倍CV的训练集上具有83-94%的准确度/精度/等),因此我的“天真”方法是简单地使用多个分类器(随机森林,ExtraTrees,SVM) (线性内核),SVM(RBF内核)和GRB),并使用简单多数投票 .

我的问题是:我如何获得不同分类器和/或投票预测的绩效指标?也就是说,我想看看使用多个分类器是否可以提高我的性能,或者它们的组合是什么 .

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

(我目前使用随机森林和ExtraTrees方法使用“预测概率”过滤预测,然后我任意过滤预测得分低于'0.85'的结果 . 另外一层过滤是“有多少分类器同意这种蛋白质的正分类“) .

非常感谢你!!

website实现,我们使用多个分类器 - http://neuropid.cs.huji.ac.il/

整个shebang是使用SciKit learn和python实现的 . 引文和所有!)

2 回答

  • 3

    要评估整体的性能,只需按照通常的方法进行 . 但是,您需要首先获得10倍数据集分区,并且对于每个折叠,在同一折叠上训练所有集合,测量准确度,冲洗并与其他折叠重复,然后计算集合的准确性 . 因此,关键的区别在于在评估整体时不使用k折叠交叉验证来训练各个算法 . 重要的是不要让集合直接或通过让其中一个算法看到测试数据来查看测试数据 .

    另请注意,RF和Extra Trees本身就已经是集合算法 .

    另一种方法(再次确保整体方法)是通过分类器获取概率和\或标签输出,并将它们提供给另一个分类器(比如DT,RF,SVM或其他),通过组合它来产生预测这些其他分类器的最佳猜测 . 这被称为"Stacking"

  • 7

    您可以使用线性回归进行堆叠 . 对于每个10倍,您可以使用以下方式拆分数据:

    • 8套训练

    • 1验证集

    • 1测试集

    使用训练集和验证集优化每个算法的超参数,然后通过在验证集上使用线性回归 - 或逻辑回归来堆叠您的预测 . 您的最终模型将是p = a_o a_1 p_1 ... a_k p_K,其中K是分类器的数量,p_k是模型k给出的概率,a_k是模型k的权重 . 如果模型没有给出概率,您也可以直接使用预测结果 .

    如果您的模型相同,则可以同时优化模型的参数和权重 .

    如果您有明显的差异,可以为每个区域设置不同的参数 . 例如,一个bin可以是短序列而另一个是长序列 . 或不同类型的蛋白质 .

    你可以使用任何你想要的度量标准,只要它是sens,就像没有混合算法一样 .

    您可能想要查看Netflix挑战的2007 Belkor解决方案,部分混合 . 在2008年和2009年,他们使用了更多的先进技术,它也可能对您有意义 .

相关问题