【问题标题】:Supervised Learning - Predicting a continuous value from a categorical variable as an input, in Javascript监督学习 - 在 Javascript 中从分类变量中预测连续值作为输入
【发布时间】:2017-08-31 14:42:50
【问题描述】:

我是机器学习的新手,所以如果我的问题被认为是一般性的,我很抱歉。

目前,我正在开发一个用于安排医生预约的 Web 应用程序(前端:Angular2,后端:NodeJS)。患者可以通过他们的界面选择医生的专业、日期和时间段来进行预约。他们还必须从下拉列表中选择症状。另一方面,医生可以通过他们的界面在数据库中注册已完成预约的持续时间。

在患者界面中,我想包含我的机器学习算法,该算法必须获取一个症状作为输入,并预测预约的持续时间。

我想成为一个监督学习算法。它将能够在需要时从管理界面内部使用已完成约会的数据集[特别是使用分类变量 SYMPTOMS(输入)和连续变量 APPOINTMENT DURATION(输出)] 进行训练,因此算法将知道例如与症状“发烧”的患者的约会持续了 10 分钟,另一个“发烧”的约会持续了 14 分钟,与“感染”患者的约会持续了 20 分钟,另一个持续了 23 分钟,等等

因此,在训练面部之后,算法必须能够预测(使用神经网络或方程,例如平均值或更聪明的东西,我不知道是什么,我是期待想法)当前预约的预期持续时间,并将其作为信息显示给患者。

因此,我的问题是:

我必须为我的案例使用什么算法?我需要一个“列联表(交叉表)”吗?我在网上看到过这个,不知道怎么用?

上面的算法有没有 JavaScript 的实现或者库?

把它变成一个分类问题更容易吗?不是计算连续值,而是将结果分类为以下类别之一:15min、30min、45min、60min?

一般来说,我是否正确地解决了这个问题,或者是否有更好的处理方式?

非常感谢您的帮助!!

【问题讨论】:

    标签: javascript node.js angular machine-learning neural-network


    【解决方案1】:

    回归

    您要查找的词是“回归”。回归算法是将 X = [f1, f2, f3 ...] 映射到 Y = [o1, o2, o3, ...] 的函数,其中每个 o 都是连续变量。特征 f1..fn 可以是分类的或连续的或两者的混合。

    实施

    上面的算法有没有 JavaScript 的实现或者库?

    当然,很多。尝试查看 deeplearn.js

    至于你想要什么算法,我想这取决于变量之间的关系有多复杂。所有这些都可以执行回归。我会按这个顺序试一试:

    • 线性回归
    • 逻辑回归
    • 浅人工神经网络
    • 深度神经网络

    但是让我们考虑一下实际问题。我不是这个领域的专家,但我怀疑症状与预约时间有那么大的关系。

    反例(切线)

    想象一下:一个办公室有 2 位医生。一个话很多。一个没有。我发烧进去,得到了一个说话很多的人。 1小时预约。我带着扭伤的手腕进去,得到了一个不怎么说话的人。 20m 预约。

    或者:我在冬天流鼻涕。其他 50 人也是如此。 3小时预约。我在夏天流鼻涕。另外1个人也是如此。 10m 预约。

    在这些情况下,症状并不占就诊时间的大部分。无论您的机器学习算法多么出色,它都无法学习不存在的关系。在此处设计您的机器学习问题时,我建议您谨慎行事。

    【讨论】:

      【解决方案2】:

      一般来说,我是否正确地解决了这个问题,或者是否有更好的处理方法?

      希望我的想法能帮到你。这就是我们处理这个问题的方式。您对 ML 模型的输入是症状。输出是约会的时间。我们可以将其纳入回归问题。我们不是简单地根据症状名称来预测持续时间。相反,我们根据症状的特征预测持续时间。首先,您必须收集带标签的数据来进行 ML 训练。

      例如,在过去几年中,您收集了 1000 条记录,每条记录用于一次约会,带有以下信息:

      • 与症状相关的信息
      • 患者相关信息
      • 预约期限(标签)。

      在你掌握了数据之后,你将进入特征工程步骤,它基本上会做这些事情:

      • 填补缺失的数据。
      • 编码类别特征。例如,症状名称为 {Cold, Fever, Sore Throat} 将变为 {1, 2, 3}。
      • 将所有特征缩放到相同的数字比例。

      在此步骤之后,您的数据将采用数字格式。您可以开始使用 ML。我相信 Javascript 中有很多 ML 库。你可以google一个来使用。

      建立模型后,在患者的 UI 中,如果他们选择症状,我们将提取症状信息、患者信息,然后将这些信息转换为与我们进行 ML 训练相同的格式,然后 ML 模型可以预测预约多长时间是。

      这是非常高级的指导方针,但它可以帮助您想出一个工作版的拳头。然后你可以在以后的迭代中改进它。

      【讨论】:

        猜你喜欢
        • 2019-06-04
        • 2014-07-10
        • 2021-10-17
        • 2018-10-17
        • 1970-01-01
        • 2014-04-20
        • 2016-08-24
        • 2013-03-24
        • 2021-03-04
        相关资源
        最近更新 更多