i存在分类问题(预测序列是否属于类),我决定使用多个分类方法,以帮助过滤误报。
(问题是在生物信息学中 - 将蛋白质序列分类为神经肽前体序列。如果有人有兴趣,这是原始文章,以及用于生成功能并训练单个预测因子的代码)。
)。现在,分类器具有大致相似的性能指标(在10倍CV的训练集上,精度/精度/精度为83-94%),因此我的"天真"方法就是简单地使用多个分类器(随机森林,,,,随机森林,,Extratrees,SVM(线性内核),SVM(RBF内核)和GRB),并使用简单的多数票。
我的问题是:如何获得不同分类器和/或他们的投票预测的性能指标?也就是说,我想看看使用多个分类器是否完全改善了我的性能,或者它们的组合确实可以提高。
我的直觉可能是使用ROC分数,但我不知道如何"结合"结果并从分类器组合中获得。(也就是说,要查看ROC曲线仅适用于每个分类器[已经知道],然后使用分类器组合查看ROC曲线或AUC)。
(我当前使用随机森林和外部方法的"预测概率"过滤预测,然后我任意过滤结果,预测分数低于'0.85'。另一个过滤层是"有多少分类器对此一致蛋白质的阳性分类")。
非常感谢!
(网站实施,我们正在使用多个分类器-http://neuropid.cs.huji.ac.il/)
使用Scikit Learn和Python实施了整个Shebang。引用和所有!)
要评估合奏的性能,只需遵循与往常相同的方法。但是,您将需要先获取10倍数据集分区,对于每个折叠,在同一折叠上训练所有合奏,测量精度,冲洗并重复其他折叠,然后计算合奏的准确性。因此,关键区别是在评估合奏时不要使用k倍交叉验证来训练单个算法。重要的是不要让整体直接查看测试数据,也不是让其中一种算法查看测试数据。
还请注意,RF和额外的树本身就是合奏算法。
一种替代方法(再次确保集合方法)是采用分类器输出的概率和标签,并将它们送入另一个分类器(例如DT,RF,SVM或其他任何分类器),以产生预测通过结合其他分类器的最佳猜测。这被称为"堆叠"
您可以使用线性回归进行堆叠。对于每个10倍,您可以将数据分开:
- 8个训练集
- 1个验证集
- 1个测试集
使用训练集和验证集优化每种算法的超参数,然后在验证集上使用线性回归(或逻辑回归)堆叠预测。您的最终模型将为p = a_o a_1 p_1 … a_k p_k,其中k是分类器的数量,p_k是模型k和a_k给出的概率,而a_k是模型k的重量。如果模型没有给您概率,您也可以直接使用预测的结果。
如果您的型号相同,则可以同时为模型的参数和权重优化。
如果您有明显的差异,则可以为每个参数做不同的垃圾箱。例如,一个bin可能是短序列和其他长序列。或不同类型的蛋白质。
您可以使用您想要的任何指标,只要它使得sens,例如对于不混合算法。
您可能想查看Netflix挑战的2007年Belkor解决方案,分节融合。在2008年和2009年,他们使用了更多的进步技术,这对您来说也可能很有趣。