假设我需要与Scikit-learn进行分类,因此,如果我希望我的分类器能够通过街道名称和帖子/邮政编码对地址进行分类,请使用Onevsrest分类器,或将它们分成两个不同的分类器(对于相同的训练集)?

我已经尝试了两者,而且似乎拥有多个分类器可能是一个更好的选择,因为训练多个较小的分类器感觉更快。这是应该做的吗?

有帮助吗?

解决方案

两种方式都是有效的,两者均通常使用。有时,声称自己是多标签的分类器可能只是将标签分为多个Onevsrest分类器,并在最后方便地将结果连接在一起。

但是,在某些情况下,方法根本不同。例如,在训练具有多个目标(标签)的神经网中,您可以设置网络的结构,从而有共享的结构。共享节点最终将学习对所有目标有用的学习功能,这可能非常有用。

例如,如果您的课程(标签)是“ cat-pet”,“ cat-big”和“ dog”,则可能需要一种算法,该算法首先学会区分任何猫和任何狗,然后在后来的步骤学会将猫分开与大猫(如狮子一样!)分开。这称为层次结构,如果您的分类器可以利用层次结构,则可以获得更好的准确性。但是,如果您的课程完全独立,则可能没有任何区别。

我建议您从最简单的方法开始(即Onevsrest),然后看看性能是否适合您的需求,然后仅一旦您需要更好的性能就可以移动更复杂的方法(多标记,分层方法等)。

许可以下: CC-BY-SA归因
scroll top