机器学习的自上而下的分层分类方法



我有一个句子数据集,这些句子已经用层次结构中的标签进行了注释。层次结构是音乐流派的选择。它是一棵树,而不是 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 的latinclassical级别 2。二元分类器呢?我愿意接受建议。

2)训练和测试数据是如何产生的?

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

这篇调查文章很好地解释了分层分类的各种策略。

您可以通过控制用于训练每个子分类器的训练数据来防止不一致的预测,例如您给出的拉丁>经典示例。例如,首先训练二元分类器以区分拉丁语和非拉丁语,使用所有数据进行训练。然后,仅使用来自非洲裔古巴人和巴西人的示例作为训练数据来训练分类器来区分非洲裔古巴人和巴西人。 在推理时,如果拉丁/非拉丁分类器预测"拉丁",则仅将未标记的示例传递到非洲-古巴/巴尔齐利亚分类器中。

我不确定我是否完全理解你的问题,但从我所理解的情况来看,听起来决策树或像随机森林这样的最先进的算法将是一个不错的选择。您将需要构建树,也许使用一些NLP技术来删除不必要的单词,如"is","I","the"(可能,但需要更深入地检查),并将这些单词用作树的特征。

至于第二个问题,你可能应该阅读一些关于机器学习的信息。Coursera上的Andrew Ng课程是一个不错的选择。但是对于您的问题,训练是您选择训练的数据的一部分,而测试数据是您评估算法性能的数据。这也应该回答你的第三个问题

分层组织类,创建类别的树或DAG(有向无环图),利用它们之间关系的信息。

我们

采用所谓的自上而下的方法,在树的每个级别(或节点)训练一个分类器(同样,虽然这不是唯一的分层方法,但它绝对是使用最广泛的方法,也是我们为手头的问题选择的方法),其中给定的决定将引导我们走上不同的分类路径。

音乐示例 来自下面链接的博客点:我们首先训练一个分类器来预测音乐的类型(死亡金属),然后,我们训练另一个分类器来预测,例如,乐队的国籍(瑞典语),然后我们可以训练一个分类器来预测该子组中的现有波段(Arch Enemy,At the Gates,...

查看这篇关于分层分类的文章以获取更多详细信息。

https://www.kdnuggets.com/2018/03/hierarchical-classification.html

最新更新