监督学习算法中的多个标签


10

我有一个带有相应主题的文本语料库。例如"A rapper Tupac was shot in LA",它被标记为["celebrity", "murder"]。因此,基本上每个特征向量可以具有多个标签(数量不相同。第一个特征向量可以具有3个标签,第二个,第三个5个)。

如果每个文本仅对应一个标签,则尝试使用Naive Bayes分类器,但是我真的不知道如果可以有多个标签该怎么办。

有什么方法可以将朴素贝叶斯转换为多标签分类问题(如果有更好的方法-请让我知道)?

PS关于我的数据的几件事。

  • 数据集中约有10.000个元素
  • 文字约为2-3个句子
  • 每个文本最多7个标签

@fordprefect多项式朴素贝叶斯针对给定类别的某些特征的概率使用多项式分布。如TheGrimmScientist所述,OP希望分类器管理多个输出。p(fi|c)
罗伯·史密斯

Answers:


6

对于初学者来说,朴素贝叶斯在这里可能不合适。它假设输入之间是独立的(因此为“天真”),句子中的单词是非常相关的。

但是,假设您真的想将NB作为一种算法来启动实验,那么我将考虑两个选项:

不雅:许多NB分类器

这将是一种替代方法。将观察到的所有单词作为输入向量进行汇总。使所有被视为输出向量的标记成为语料库。具有多个输出的NB分类器等效于具有多个NB分类器,每个分类器具有一个输出(因此,无论使用哪种软件框架,都可以轻松实现)。将每个元素视为训练样本,其中给定的输入(一个单词)是一个1单词(0如果存在),一个(如果该单词不存在)。对输出使用相同的二进制方案。

这种蛮力迫使将NB分类器应用到您的数据,并让您仍在努力挖掘将要剩下的庞大分类器,从而找到含义。

更优美:处理您的数据

如果您要使用一个多类NB分类器运行,这是我推荐的方法。

您的目标是弄清楚如何将每组标签映射到一个类。我确定存在某种集群方案或网络分析(可能将链接到[“ murder”]的[[名人]]变成[[放荡]]部分),可以将您的标签合理地映射到一个集群。如果您将标签视为节点,并将两个给定的标签一起视为链接,那么您将需要研究社区检测算法(这是我开始的地方)。但是,如果您只是想让某样东西起作用,那么对标签进行某种形式的修改就可以将标签列表转换为仅在数据集中最常见的标签。

此方法将清理数据的工作放在首位,并使NB分类器的输出更易于理解。


感谢您的投入,如果您有什么想法比NB更好,请告诉我。
萨尔瓦多·达利

1
幻灯片的“现有解决方案”部分包含我将要答复的所有内容,以及更多内容(假设您不需要专门的分类器,而只是想使用标签的方式)。希望对您有用。
TheGrimmScientist 2014年

@TheGrimmScientist使用第一种方法是否合理?如果您有一个特征为f1,f2,f3的向量,并且假设该向量有3个标签,我们可以将其划分为3个向量(均包含相同的特征f1,f2,f3),并使用不同的标签作为输出。然后可以像往常一样使用朴素贝叶斯。我不确定这是否就是您的想法。
罗伯·史密斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.