Zero's Blog

利用随机森林模型对医院科室名称进行标准化

问题背景

不同医院有不同的科室分类方法,通常我们称之为「挂牌科室」。基于国家卫健委公布的专业,我们的行业库制定了一套「标准科室」。我们需要将挂牌科室映射到标准科室,如下图所示。

image

我们将挂牌科室到标准科室的映射称为「科室标准化」

科室标准化后,可以为医院和科室里医生提供标签,有利于用户画像,提高数据挖掘的能力。

若科室标准化依靠人工标注来完成,需要由掌握相关知识(对各种类型医院体系的科室分类比较熟悉)的专家来完成。科室标准化的准确率会受知识影响,且费时费力。

亟需一种自动的科室标准化方案来帮我们提高准确率、降低人工成本。

问题分析

我们有200多个标准科室,将之视为标签。目标是将挂牌科室的名称映射到标准科室,即将它归类于某个标签,因此这是一个分类预测问题。

现在让我们来思考一下,我们人类是如何对挂牌科室名称做标准化的?

挂牌科室 分析 标准科室
药学科 包含了「药」 药剂科
高干科 包含了「高干」 干部科
老年呼吸科 包含了「老年」 老年病科
高干老年科 包含了「高干」、「老年」 干部科

上面例子中,「高干老年科」包含了「老年」关键词,我们没有把它归类到「老年病科」,而是归类到「干部科」,是因为它还包含了「高干」关键词,即「高干」的优先级要高于「老年」,如下图所示。

image

以上的思考过程,我们总结如下:

  • 步骤一:从挂牌科室名称中提取出关键词:高干老年科 -> 高干、老年
  • 步骤二:依据脑中的决策流程图进行标准化:没有「高干」,有「老年」,所以是「老年科」

步骤一:构建数据集

首先,我们收集有助于我们做决策的关键词,将它们作为特征,若包含该词则特征值为1,反之为0。

结合由专家提供的示例数据,我们就有了一份数据集,如下:

挂牌科室(索引) 标准科室(标签) 药(特征) 高干(特征) 老年(特征) 呼吸(特征)
药学科 药剂科 1 0 0 0
高干科 干部科 0 1 0 0
老年呼吸科 老年病科 0 0 1 1
高干老年科 干部科 0 1 1 0

步骤二:决策树模型

决策树是当今最强大的机器学习算法之一,可以执行分类和回归任务。

上面提到的决策流程图,实际上就是一棵很大的「决策树」,因此我们用示例数据训练一棵决策树,然后用它来预测标准科室。

最终模型的测试结果性能指标如下图:

image

上图中,横坐标为置信度阈值,纵坐标是分数值,蓝色虚线是精度曲线,红色虚线是召回率曲线。

置信度表示“我对这个预测结果有多大把握”;

置信度阈值表示“我只有超过这个把握才会给出预测结果,否则我没有自信给出答案“;

召回率表示“我能对多少比例的给定数据进行预测”,即“我能对多少比例的挂牌科室进行标准化”;

精度表示“我给出的预测的准确率是多少”。

红蓝曲线交叉时,精度和召回率达到一个平衡点,此点的含义是:模型可以给85%以上的科室名称提供一个标准化结果,准确率高于85%。

这个结果还可以,但我们是否可以做到更好呢?

优化:随机森林模型

如果你随机向几千个人询问一个复杂问题,然后汇总他们的回答。在许多情况下,你会发现,这个汇总的回答比专家的回答还要好,这被称为群体智慧。

我们训练若干棵决策树,由它们构成一片森林。做出预测时,森林中的每棵树都提供一个预测结果,然后将得票最多的结果作为最终的预测结果,这种模型被称为「随机森林」。

我们使用示例数据训练一个由512棵决策树构成的随机森林模型,然后用它来预测,性能指标如下图:

image

通过上图的红蓝曲线交叉点我们可以知道:模型可以给90%以上的科室名称提供一个标准化结果,准确率高于90%。

效果较「决策树模型」提高了很多。

总结

特征工程还有很多优化空间,如数据预处理、降维等,这些优化会进一步提高模型的性能。

目前的示例数据较少,随着示例数据的不断增多,模型的性能指标还会进一步提高。

现在,我们通过训练好的模型自动化地完成了医院科室名称的标准化,若对结果的质量有较高的要求,则再由人工(无需是专家)对置信度较低的预测结果进行质检即可,极大地提高了任务的效率和准确度,同时降低了人工成本。