我的分类问题大致描述如下:在工作中我们有问题跟踪软件,用于我们的大部分内部沟通。例如,当您需要其他团队的帮助时,您会在此软件中提出问题。每个问题都可以分配一个或多个标签。
例如,可能会为第一次安装笔记本电脑的新员工提出问题,该笔记本电脑设置为John Smith"并贴上标签"笔记本电脑问题"和#34;新员工入职。"因此,对于给定的问题,可以有多个标签。
我正在尝试构建一个带有问题标题的分类器,并提供建议标签列表。我的主管要求我使用Naive Bayes算法执行此操作,这就是我正在尝试的。我正在使用scikit-learn。
首先,准确地说这是一个"多标签" scikit-learn文档(http://scikit-learn.org/stable/modules/multiclass.html)中描述的分类任务?这就是我的想法,但我并不完全理解" Multioutput-multiclass classification"所以我无法排除这种情况。同样,我预测每个样本的一个或多个类。
其次,Naive-Bayes(至少在scikit-learn中)看起来并不支持多标签。由于我(使用Naive-Bayes)卡住了(现在),我想我可以使用下面的方法来滚动我自己的多标签分类器。这看起来像是一种合理的方法吗?
最后,您能想到更好的方法吗?我的计划的巨大缺点是因为有大约2,000个标签,我需要创建2,000个分类器。这可能不是完全禁止的,但它并不完全理想。 Naive-bayes确实支持多类分类,所以我想知道是否有某种方法可以在单个分类器上进行破解(通过查看每个类生成的概率,如果它们存在)。
答案 0 :(得分:2)
您建议的方法是有效的;它实际上是针对多标签分类问题而推广的一对一方法,它也被称为二元相关方法。由于您已在使用scikit-learn
,因此您需要的功能已在sklearn.multiclass.OneVsRestClassifier
module中实施。
唯一的要求是将标签格式化为适当的形状[n_samples, n_classes]
数组,但对scikit-learn
的标签编码器来说这也很简单。