2010-11-04 72 views
6

我有一个算法问题,这可以减少到这项任务:专家系统算法

假设我们有n疾病和症状m名单。
对每种疾病d和症状s,我们有三个选项之一:

  • 症状是积极与疾病相关的:s => d
  • ,症状是负与疾病相关:s => ~d
  • 的症状是不相关的疾病

算法的目标是创建肯定列表/ no问题就小号ymptoms(甚至更好 - 一个问题的二叉树),它可以根据症状推断确切的疾病。

任何有关特定算法,相关软件工具以及特定领域专业术语的引用都将非常感谢。

+0

我认为这是类似于'最小测试Set'问题 – 2010-11-04 16:09:03

+0

没有足够的信息的选项来排除任何可能性,除非正,负相关性是绝对的。在现实生活中,这绝不会发生。 – 2010-11-04 18:09:12

回答

5

的情况下,您使用的决策树:http://en.wikipedia.org/wiki/Decision_tree_learning

基本上找到最佳树(即,将你之前问能识别疾病影响的问题的平均数量最小化)是NP难。

你可以使用贪婪算法,然后尝试优化它(如果你需要的话)。

在每个步骤中,您都希望尽可能减少仍然“可能”的死亡数量。

你是在你的树的顶部,让你有一个给定的s三种可能的选择,计算每种选项的疾病数量:pcncuc

在一边,你在其他ncpcuc你不能说什么(你可以看两个级别的树有一些信息,但现在我们不这样做)。

所以最坏的情况下,你有pc/nc + ucpc + uc/nc,选择s,最大限度地减少最坏的情况下(即:大量的一面,只有在其他一些)。

您需要尽量减少abs(pc - (nc + uc)) + abs ((pc+uc) - nc)

您现在有第一个问题s,您可以迭代构建您的树。

2

您的域名真的是'二元'还是实际上,您是否更希望将每个症状/疾病对的相关系数用作数值?这将允许强相关性影响结果而不是弱相关性。

如果是这样,那么你可能想看看Support Vector Machines分析数据和识别模式。

0

如果您只是需要参考,请参阅Russel & Norvig书。我现在手边没有我的副本,但我可以在明天更新这个答案并提供一些章节建议。

1

该问题与Mycin的细菌/抗生素问题非常相似,后者是20世纪80年代更广义的基于规则的专家系统技术的先驱。还有其他医疗诊断程序与所产生的工具一起开发。

http://en.wikipedia.org/wiki/Mycin