我有一个分类问题(预测一个序列是否属于一个类),对于这个问题,我决定使用多种分类方法,以帮助筛选出假阳性。
(问题在于生物信息学-将蛋白质序列归类为神经肽前体序列。如果有人感兴趣,这是最初的文章,以及用于生成特性和训练单个预测器的代码。)。
现在,分类器在10倍CV的训练集上具有大致相似的性能指标(83-94%的准确率/精度/等等),所以我的“朴素”方法是简单地使用多个分类器(随机森林、ExtraTrees、支持向量机(线性核)、支持向量机(径向基核)和伽玛基),并使用简单的多数投票。
我的问题是:如何获得不同分类器和/或它们的投票预测的性能指标?也就是说,我想看看使用多个分类器是否能提高我的性能,或者它们的哪个组合可以提高我的性能。
我的直觉可能是使用中华民国的分数,但我不知道如何“组合”结果,从分类器组合中得到。(也就是说,只对已知的每一个分类器来说,只看ROC曲线是什么,然后使用分类器的组合来查看训练数据的ROC曲线或AUC )。
(我目前使用随机森林和ExtraTrees方法使用“预测概率”对预测进行过滤,然后对预测分数低于'0.85‘的结果进行任意筛选。另一层过滤是“有多少分类器同意这种蛋白质的正分类”)。
非常感谢!!
( 网站实现,我们在其中使用多个分类器- http://neuropid.cs.huji.ac.il/ )
整个shebang是使用SciKit、learn和python实现的。(引用等等!)
发布于 2014-03-18 17:01:44
要评估合奏的性能,只需遵循与通常相同的方法。但是,您将希望首先获得10折叠数据集分区,对于每个折叠,将您的所有集合训练在同一折叠上,测量精度,与其他折叠一起冲洗和重复,然后计算集合的精度。因此,关键的区别在于,在评估集成时,不要使用k折叠交叉验证来训练单个算法。重要的是不要让集成直接看到测试数据,或者让它的算法之一看到测试数据。
还请注意,RF和额外的树本身已经是集成算法。
另一种方法(再次确保集成方法)是将分类器输出的概率和标签输入到另一个分类器中(例如DT、RF、SVM或其他任何分类器),通过组合这些其他分类器的最佳猜测来生成预测。这被称为“堆叠”
发布于 2014-03-18 20:11:14
您可以使用线性回归来堆叠。对于每10倍,您可以使用以下方法拆分数据:
使用训练集和验证集优化每个算法的超参数,然后在验证集上使用线性回归或logistic回归来叠加预测。最后的模型是p= a_o + a_1 p_1 +…+ a_k p_K,其中k是分类器的个数,p_k是k模型给出的概率,a_k是模型k的权重,如果模型不给出概率,也可以直接使用预测的结果。
如果您的模型是相同的,您可以优化参数的模型和权重在同一时间。
如果您有明显的差异,您可以使用不同的参数为每个不同的回收箱。例如,一个bin可以是短序列,另一个可以是长序列。或者不同类型的蛋白质。
你可以用任何你想要的度量,只要它能使人感觉到,就像不混合算法一样。
你可能想看看2007年的Belkor解决方案的Netflix挑战,部分混合。在2008年和2009年,他们使用了更多的先进技术,这也可能是您感兴趣的。
https://stackoverflow.com/questions/21498875
复制相似问题