【发布时间】:2014-02-25 06:11:10
【问题描述】:
我有一个分类问题(预测一个序列是否属于一个类),为此我决定使用多种分类方法,以帮助过滤掉误报。
(问题在于生物信息学 - 将蛋白质序列分类为神经肽前体序列。Here's the original article 如果有人感兴趣,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 实现的。引用和所有!)
【问题讨论】:
-
这在某种程度上是一个离题的问题,但是您是否在skilearn 中找到了适用于多个分类器系统的现成函数和类,或者您是否手动编写了代码? (专门用于学习融合之类的东西)
-
我手动编码的;令人惊讶的是,没有内置分类器堆叠/融合(除了现有的模型,如 AdaBoost、Forest ensembles 等)。
-
堆叠或 viting 并不难天真地做,例如; stackoverflow.com/questions/21506128/…
标签: python machine-learning scikit-learn bioinformatics random-forest