1

我有一个句子的数据集,这些句子已经用层次结构中的标签进行了注释。层次结构是音乐流派的选择。它是一棵树,而不是一个DAG - 每个节点只有一个父母和一个父母。下面是一个提取物为例:机器学习的分层分类自上而下的方法

root = music 
    parent = latin 
      child = afro-cuban 
        child = salsa 
      child = brazilian 
        child = axe 
    parent = non-latin 
      child = classical 
    ... 

对于句子Mozart is the best例如,从收集的注解,多数同意这句话类标签或地面真相是classical。从层次结构来看,我们知道classical也是non-latin音乐的一种形式,其形式为music。而i prefer salsa可能已注释为latin

就分类而言,扁平化层次结构 - 我所做的 - 直观地不能解决问题,因为我们完全忽略了类层次结构。由于我们面临着多类分类问题,因此它在使用Weka和分类器时也会产生较低的结果。

我的问题是,我读过非常模糊的文献和关于如何实施分层分类的在线文章。我想使用Weka和Python。但我只想澄清如何在这种情况下进行分层分类。所以我的问题是:

1)什么是最好的建议去解决这个问题?实施自顶向下的方法是最佳选择吗?如果我这样做,我该如何避免在每个级别上错误分类的问题?即它可以预测级别1上的latin,级别2上的classical。关于二元分类器呢?我接受建议。

2)训练和测试数据是如何进入这个的?

3)如何评估分类性能?特别是采用自上而下的方法,因为我们将对每个单独的级别进行评估。

回答

0

我不知道我完全理解你的问题,但是从我确实了解,这听起来是Decision tree,或最先进的算法,像Random Forest将是一个不错的选择。 您需要构建树,也许可以使用一些NLP技术来删除不必要的词,如“is”,“I”,“the”(可能需要检查更深层的词)并将这些词用作树的特征。对于第二个问题,你应该阅读一些关于机器学习的内容。 Andrew Ng course on Coursera是一个很好的选择。但是对于你的问题,培训是你选择训练的数据的一部分,测试数据就是你评估算法性能的部分。这也应该回答你的第三个问题

+0

谢谢你的回答。我意识到培训和测试数据的目的,以及他们的工作和机器学习。我只是不明白你会如何以分层的方式去做。所以你建议从我的句子中提取特征?这只会在较小的空间中产生句子。这如何解决我的等级问题?问题是,一个班级属于多个级别。正如我所解释的,一个节点也可以被归类为它的父节点,因为在概念上,这也是正确的。如何做到这一点? – user47467

+0

从句子中提取功能 - 是的,首先,这将删除你很多不必要的数据,其次是在你的例子中给出的句子,它将保留有意义的单词。 层次问题将在树中解决,而且也很直观。 例如,在一句话中:_“我更喜欢莎莎”_莎莎将是一个强大的功能,并且当它进入你的分类器时,它可能会表明一个强烈的信号,非洲古巴或拉丁或音乐,取决于什么是你的标签 你对哪一部分树完全感兴趣?顶层?第二个? – lazary

+0

我对树木没有预先知识,所以如果你知道或者可以帮助我解决这个问题,那会很棒。我对整棵树感兴趣,我想这取决于句子的类标签。 – user47467

1

survey article做了很好的解释层次分类的各种策略。

通过控制用于训练每个子分类的训练数据,可以防止不一致的预测,例如您提供的拉丁语 - >经典示例。例如,你首先训练一个二元分类器来区分拉丁和非拉丁,使用所有的数据进行训练。然后训练一个分类器来区分非洲裔古巴人和巴西人,只使用这两类中的例子作为训练数据。在推断时,如果拉丁/非拉丁分类器预测“拉丁语”,则只会将未标记的示例传递给非古巴/巴西分类器。