从问题中选择正确的算法来预测疾病

人工智能 机器学习 算法 预言
2021-10-23 05:36:29

我正在尝试为用户输入症状的系统提出正确的算法,我们开始触发与该症状相关的问题,他的答案将导致与用户给出的答案相关的疾病

假设用户输入了以下输入:

症状 - 耳聋

Q1。你有多久没遇到耳聋问题了

A)从几天 B)从几周到几个月 C)超过一个月 D)从出生

Q2。耳聋的发病原因是什么

A) 突然 B) 逐渐

现在我们有了一个知识库,比如如果用户从问题 1 中选择选项 1,从问题 2 中选择选项 2,那么我们会给他一些疾病。但是我需要一种算法,它可以在后端提供成功的百分比,以便我可以抛出疾病的结果,例如,如果用户从问题 1 中选择选项 2,从问题 2 中选择选项 1,那么当我们从知识库中进行比较时,将会有那边的一组有问题 1 中的选项 1 和问题 2 中的选项 2,那么它是一种“某些”疾病。现在,如果我们从我们的知识库中进行比较,我们发现甚至 50% 的选择都会导致这种疾病,我们会抛出那个病名。

现在我很困惑应该为这种人工智能方法使用什么算法。

2个回答

选择机器学习算法来学习某种模式没有明确的规则。但是,有一些指导方针可以帮助您更好地选择能够产生更高成功概率的算法。

一些重要的考虑因素是:

  • 特征数量:这是每个患者必须回答的问题数量。
  • 实例数:这是参加调查的患者数量。
  • 输出类别的数量:这是您希望对疾病进行诊断的具体程度。这是一个是/否,还是一个 5 阶段的进展。

特征空间越大,输出类越多,模型的复杂度就越高。这是有问题的,因为更复杂的模型将需要更多的数据实例来学习下划线模式。您需要在数据集中的示例数量和模型的复杂性之间取得良好的平衡。

如果您的数据有限,那么您将希望远离深度学习。在这种情况下,我更喜欢使用浅层方法,例如SVM朴素贝叶斯随机森林这些技术已被证明能够捕捉非线性关系。SVM特别强大,可以用内核绝招!这会将您的特征空间转换为使类之间的区别更容易区分的空间。不要低估这个算法的威力。

如果您有一个非常大的数据集(即 100,000 个实例),那么您将需要使用深度学习。最近,这些技术已被证明在几乎所有数据丰富的类别中都优于浅层机器学习算法。您将希望从浅层神经网络开始,然后根据需要增加图形的复杂性。通过每层添加额外的节点,或添加额外的层。您添加的每个节点都会增加您需要调整的变量数量,从而增加模型的复杂性。如果您的数据预计具有某种类型的时间依赖性,这在医疗数据中通常是这种情况。然后,您可以使用长短期记忆神经网络 (LSTM)。这些能够捕捉潜在的关系。你也可以尝试一个堆叠式自动编码器

医学诊断通常采用溯因推理(也称为“最佳解释推理”),溯因推理的自动化方法已应用于医学诊断。更具体地说,一种被称为简约覆盖理论的机制已被广泛研究为医学场景(等等)中自动溯因推理的一种方法。你可以考虑看看。

FWIW,该领域的主要研究人员之一是UMD 的James Reggia 教授他和云鹏就该主题写了一本非常容易理解的书——用于诊断问题解决的溯因推理模型

并且补充一下JahKnows所说的 - 我想说,像深度学习这样的东西最有可能发挥作用的地方,就是建立诊断系统中使用的初始知识库。也就是说,如果您有大量与疾病相关的症状数据,您可以使用深度学习来帮助定义特定疾病和特定症状之间的权重。请注意,虽然溯因推理被认为是逻辑的一个分支,而 PCT 可以追溯到“GOFAI”时代,但它并不是一种严格的符号方法。Reggia & Peng 的书解释了如何将贝叶斯推理结合到溯因系统中。仅供参考。

披露:我最近一直在研究这个领域,并且正在使用语义 Web 堆栈进行 PCT 的现代实现。