解释其决策的文本分类器


11

我正在为短句构建文本分类程序。除了告诉用户“您输入的文本的类别为C”之外,我还希望能够以简短易懂的方式解释为什么做出此决定。例如,我不想告诉用户“我将您的句子放入了一个复杂的3层神经网络,这是得分最高的答案”;我想要这样的解释:“由于训练数据中出现了X,Y和Z之类的句子,因此您的句子包含U,V和W这两个类别的特征”。

我的问题是:哪种分类算法最适合此类应用?

k近邻似乎是一个很好的候选者,因为我可以告诉用户“您的句子具有类别C,因为它与具有相同类别的句子X,Y和Z相似。但是,它在文本分类问题上的性能众所周知我正在寻找一个可以在表现和解释能力之间取得平衡的分类。

编辑:花了很多时间寻找这样的分类器之后,我开始构建一个名为limdu的机器学习库,该库可以使分类器解释其决策。它仍在开发中,但是,它已经帮助我向自己和我的同事解释了为什么我们的分类器经常失败...


机器学习的要点是,您不在乎引擎盖下发生的事情,而只在乎性能。另一种方法失败了,这就是为什么如今每个人都使用这些不透明的统计方法的原因-它们变得更好了。
Yuval Filmus

2
@Yuval我完全不同意其他方法失败了。它们不是最佳选择,但是它们仍然达到了自动完成分类任务的目标,远远超出了人类有能力或耐心地执行的任务。不透明的黑匣子不是有效进行机器学习的唯一方法,尤其是在性能不是唯一考虑因素的情况下。对机器学习任务背后的各种目标持开放态度。
理查德D

Answers:


7

尽管它在文本分类任务上表现不佳,但是如果您想对分类推理进行清晰的说明,则决策树将是您的最佳选择,因为它为实例的分类提供了清晰的规则。跟踪树将提供确定的值,并且通过分析靠近根节点的实例,您甚至可以确定哪些属性在分类中更重要。

另一种选择是使用Naive Bayes分类器,该分类器在文本挖掘任务上的性能更好,并且会基于概率生成可理解的评估方案,该概率可用于生成您要查找的“为什么”,甚至提供指示在进行确定时,哪些属性值比其他属性值更重要。

支持向量机,特别是顺序最小优化(SMO),似乎可以很好地处理这些任务,并以属性权重和支持向量的形式提供用于分类的值的指示,但我认为您可能会遇到困难明确说明这些权重和向量如何影响总体分类决策。

祝您的项目好运!听起来很有趣。


1
谢谢。我还发现,感知器和winnow等在线分类器在此任务上非常出色(至少在我的方案中如此),并且通过查看每个功能为分类评分增加的绝对值很容易解释这一决定。对于每个样本,我根据(feature * weight)的绝对值对特征进行排序,并显示前几个特征。
Erel Segal-Halevi

3

我隐约记得彼得·诺维格(Peter Norvig)LISP 的《人工智能编程范例:Common Lisp中的案例研究》一书中用LISP编写了MYCIN(一种医学诊断专家系统)的实现。

也许这是开始您的研究的好地方。您会在网上找到源代码以及规则库,但是,我强烈建议您阅读文本,而不要尝试仅从源代码中了解它。

您也可以直接转到Emycin(我的重点)页面,

Emycin是专家系统的外壳,是用于构建程序的框架,该程序记录领域专家的知识并使用该知识来帮助非专家用户解决问题。它提供了一个界面,可以帮助专家定义数据类型和规则,反向链接推理算法(类似于Prolog,但有关键区别),处理不确定性的机制以及自省功能,使用户可以了解系统所知道的内容以及它在做什么


2
专家系统不再流行的原因是,很难编写所有规则。
adrianN
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.