利用随机森林模型对医院科室名称进行标准化
问题背景
不同医院有不同的科室分类方法,通常我们称之为「挂牌科室」。基于国家卫健委公布的专业,我们的行业库制定了一套「标准科室」。我们需要将挂牌科室映射到标准科室,如下图所示。
我们将挂牌科室到标准科室的映射称为「科室标准化」。
科室标准化后,可以为医院和科室里医生提供标签,有利于用户画像,提高数据挖掘的能力。
若科室标准化依靠人工标注来完成,需要由掌握相关知识(对各种类型医院体系的科室分类比较熟悉)的专家来完成。科室标准化的准确率会受知识影响,且费时费力。
亟需一种自动的科室标准化方案来帮我们提高准确率、降低人工成本。
问题分析
我们有200多个标准科室,将之视为标签。目标是将挂牌科室的名称映射到标准科室,即将它归类于某个标签,因此这是一个分类预测问题。
现在让我们来思考一下,我们人类是如何对挂牌科室名称做标准化的?
| 挂牌科室 | 分析 | 标准科室 |
|---|---|---|
| 药学科 | 包含了「药」 | 药剂科 |
| 高干科 | 包含了「高干」 | 干部科 |
| 老年呼吸科 | 包含了「老年」 | 老年病科 |
| 高干老年科 | 包含了「高干」、「老年」 | 干部科 |
上面例子中,「高干老年科」包含了「老年」关键词,我们没有把它归类到「老年病科」,而是归类到「干部科」,是因为它还包含了「高干」关键词,即「高干」的优先级要高于「老年」,如下图所示。
以上的思考过程,我们总结如下:
- 步骤一:从挂牌科室名称中提取出关键词:高干老年科 -> 高干、老年
- 步骤二:依据脑中的决策流程图进行标准化:没有「高干」,有「老年」,所以是「老年科」
步骤一:构建数据集
首先,我们收集有助于我们做决策的关键词,将它们作为特征,若包含该词则特征值为1,反之为0。
结合由专家提供的示例数据,我们就有了一份数据集,如下:
| 挂牌科室(索引) | 标准科室(标签) | 药(特征) | 高干(特征) | 老年(特征) | 呼吸(特征) |
|---|---|---|---|---|---|
| 药学科 | 药剂科 | 1 | 0 | 0 | 0 |
| 高干科 | 干部科 | 0 | 1 | 0 | 0 |
| 老年呼吸科 | 老年病科 | 0 | 0 | 1 | 1 |
| 高干老年科 | 干部科 | 0 | 1 | 1 | 0 |
步骤二:决策树模型
决策树是当今最强大的机器学习算法之一,可以执行分类和回归任务。
上面提到的决策流程图,实际上就是一棵很大的「决策树」,因此我们用示例数据训练一棵决策树,然后用它来预测标准科室。
最终模型的测试结果性能指标如下图:
上图中,横坐标为置信度阈值,纵坐标是分数值,蓝色虚线是精度曲线,红色虚线是召回率曲线。
置信度表示“我对这个预测结果有多大把握”;
置信度阈值表示“我只有超过这个把握才会给出预测结果,否则我没有自信给出答案“;
召回率表示“我能对多少比例的给定数据进行预测”,即“我能对多少比例的挂牌科室进行标准化”;
精度表示“我给出的预测的准确率是多少”。
红蓝曲线交叉时,精度和召回率达到一个平衡点,此点的含义是:模型可以给85%以上的科室名称提供一个标准化结果,准确率高于85%。
这个结果还可以,但我们是否可以做到更好呢?
优化:随机森林模型
如果你随机向几千个人询问一个复杂问题,然后汇总他们的回答。在许多情况下,你会发现,这个汇总的回答比专家的回答还要好,这被称为群体智慧。
我们训练若干棵决策树,由它们构成一片森林。做出预测时,森林中的每棵树都提供一个预测结果,然后将得票最多的结果作为最终的预测结果,这种模型被称为「随机森林」。
我们使用示例数据训练一个由512棵决策树构成的随机森林模型,然后用它来预测,性能指标如下图:
通过上图的红蓝曲线交叉点我们可以知道:模型可以给90%以上的科室名称提供一个标准化结果,准确率高于90%。
效果较「决策树模型」提高了很多。
总结
特征工程还有很多优化空间,如数据预处理、降维等,这些优化会进一步提高模型的性能。
目前的示例数据较少,随着示例数据的不断增多,模型的性能指标还会进一步提高。
现在,我们通过训练好的模型自动化地完成了医院科室名称的标准化,若对结果的质量有较高的要求,则再由人工(无需是专家)对置信度较低的预测结果进行质检即可,极大地提高了任务的效率和准确度,同时降低了人工成本。