登录
首页精彩阅读详细解读如何构建专家诊病模型
详细解读如何构建专家诊病模型
2016-03-24
收藏



专家系统是典型的大数据和人工智能结合的计算机程序系统,其内部含有大量的某个领域专家水平的知识与经验,能够利用人类专家的知识和解决问题的方法来处理该领域问题。也就是说,专家系统是一个具有大量的专门知识与经验的程序系统,它应用人工智能技术和计算机技术,根据某领域一个或多个专家提供的知识和经验,进行推理和判断,模拟人类专家的决策过程,以便解决那些需要人类专家处理的复杂问题,简而言之,专家系统是一种模拟人类专家解决领域问题的计算机程序系统。


专家系统的发展已经历了3个阶段,正向第四代过渡和发展。第一代专家系统(dendral、macsyma等)以高度专业化、求解专门问题的能力强为特点。但在体系结构的完整性、可移植性、系统的透明性和灵活性等方面存在缺陷,求解问题的能力弱。第二代专家系统(mycin、casnet、prospector、hearsay等)属单学科专业型、应用型系统,其体系结构较完整,移植性方面也有所改善,而且在系统的人机接口、解释机制、知识获取技术、不确定推理技术、增强专家系统的知识表示和推理方法的启发性、通用性等方面都有所改进。第三代专家系统属多学科综合型系统,采用多种人工智能语言,综合采用各种知识表示方法和多种推理机制及控制策略,并开始运用各种知识工程语言、骨架系统及专家系统开发工具和环境来研制大型综合专家系统。在总结前三代专家系统的设计方法和实现技术的基础上,已开始采用大型多专家协作系统、多种知识表示、综合知识库、自组织解题机制、多学科协同解题与并行推理、专家系统工具与环境、人工神经网络知识获取及学习机制等最新人工智能技术来实现具有多知识库、多主体的第四代专家系统。

本案例使用SmartMining敏捷挖掘桌面版,以决策树算法为背景,通过生动有趣的过程讲解,帮助读者了解依托大数据如何构建专家诊病模型,以及如何通过可视化探索数据,实现决策树同样的计算结果!

该案例的工作流如下:




商业目标

业务理解:该案例所用的数据是一份医生诊病的数据,如下:




表1:数据视图

其中,年龄、性别、血压、胆固醇、钠、钾是病人的指标,而药物是医生针对病人的情况开出的药物。

业务目标:建立专家诊病系统,当把病人的指标输入到该系统时,系统会自动输出该给此类病人开出的药物。

数据挖掘目标:建立专家诊病模型,该模型以病人的病例指标为输入,以药物为目标,建立预测模型,该模型可以根据输入指标的值,计算预测值(药物)。

操作实现:

新建工作流

可以点击文件菜单下的"新建"或者点击工具栏左方的新建按钮(  )开始创建工作流。点击后会弹出以下向导界面:




输入工作流的名字后即可完成创建:




图1:新建工作流

导入数据

此时要根据数据存储文件的格式选择相应的导入节点。在这里由于数据源是CSV文件,因此可以选择CSV导入节点(也可以使用可变文件)。左侧节点库中CSV导入节点拖到右侧的工作流中。双击节点或者右键菜单中选择"配置",弹出如下配置窗口:




图2:CSV节点配置







理解数据

使用统计分析菜单下的统计节点可以对数据进行描述,这是建模之前必须要做的工作,一方面是为了设计合理的实施方案,另外一方面也是为了更好的选择合适的算法。从表2中可以看出每种分类变量的取值及每种取值的个数。比如,从这里我们可以看出药物字段一共包含五种取值,且出现最多的是Y药物。在这里目标变量为分类型,因此只能选择分类预测类模型,如决策树逻辑回归等。



表3:预建模

接下来便是尝试建模,看看建模效果。




图3:预建模

首先,从数据准备列>转换菜单下选择类型转换节点。由于性别、血压、胆固醇三个字段实际存储类型该是字符型,但这里是整型,因此为了便于以下分析,使用类型转换节点将它们的类型从整型转化为字符型。配置如下:




其次,使用类型节点指定目标变量的角色,将药物的角色设为目标。




再次,从数据准备的行菜单中选择分区节点。使用分区节点可以将数据集分成测试集和训练集,训练集用于训练模型,测试集用于测试模型。配置如下:





还有一点要注意,这里分区即把数据集随机分成两份,通常训练集要比测试集大,通常分为5:5,6:4,7:3,8:2,9:1。数据集越小,训练集应该分的更多,原因是要保证模型的稳定性,参与训练的数据要足够多。实际中,各种比例都会尝试,目的有二:一是选择最佳的比例,二是测试模型的稳定性。

然后,选择分类预测节点,因为目标变量(药物)为分类型。此处我们重点学习决策树算法,所以就先选择决策树算法节点。节点连接如上图3所示,在决策树(训练)节点配置中选择目标变量药物。其中,决策树(训练)节点连接分区节点。决策树训练节点可以采用默认配置,无需修改配置,如下:



最后,使用分类评估节点评估模型的准确性。配置如下图所示:



评估结果:



表3:模型评估1

从表3中可以看出,模型测试准确度为95%,误判5%。预建模的目的是为了从整体判断现有变量与目标变量的相关性,以便可以根据经验预估最终的效果和可操作性。

接下来如何优化模型呢?通常来说有三种办法:第一,增加新数据,以便引入更多重要的影响因素;第二,尝试其他模型,以便找到更适合的模型;第三,优化输入,即基于已有数据派生更多重要的变量,或者过滤不重要的变量。这三者中,第一种最难以实现,一般企业的数据是有限的,企业内部可用数据及外部可用网络数据,在项目需求调研阶段就应该明确,而企业外部行业数据难以获取。第二种最容易尝试,所有可用模型可以快速尝试一遍,这个是每个项目中都必做的,但却不是最重要的方法。而第三种方法才是项目中最可行,也是最重要的办法。

如何优化输入?这是第三种方法的实现目标。而优化输入最重要的环节就是数据探索。

数据探索



图4:数据可视化探索

数据探索最核心的一项工作就是探索输入变量与目标变量的相关性。分析变量的相关性可以使用相关性计算,也可以使用图形化分析,而后者最直观常用。分析两个分类型变量可以使用条形图、网络图或者交叉表。分析两个数值型变量可以使用散点图。分析一个数值型变量和一个分类型变量可以使用直方图

通过分析,血压和药物字段有着强相关性,因为从图中可以看出使用药物B和药物A的人都是高血压(3表示高血压,2表示正常,1表示低血压),使用药物C的人都是低血压,这种很明细的规律反映出两个字段间存在很强的相关关系,如下图所示:




同理,胆固醇和选择药物之间也有一定相关性,而性别和选择药物相关性不大,如下图所示:





接下来分析数值型字段的相关性,从图中可以看出血液中的钠和钾相关性很弱或者没有。从图形化的方式判断相关性强弱的方法就是看图形中的规律,规律越明显,相关性就越强,否则越弱。



就此图来说,散点图中的每一个点表示一个病例,而我们最想知道的还不是钠和钾的相关性,而是两者与药物的相关性,因为药物才是我们分析的目标。所以我们还想知道散点图中的每个病例使用的什么药物。因此,我们使用药物作为颜色区分,重新修正散点图。如下:




从图中可见,上三角区都是浅红色,说明这部分病例使用的都是Y药物。这是很明显的规律,说明这里面有一种很强的关联。用数学的语言来描述,就是钠和钾的比例与药物有很强的相关性。因此,我们发现了一个很重要的变量就是钠和钾的比例。因此,我们可以派生一个变量:钠钾比例。

优化输入

首先,使用派生字段节点或者Java代码段节点生成钠钾比例字段。配置如下:




其次,使用过滤节点过滤钠和钾字段,否则它们的重复存在会导致多重共线性问题。配置如下:




过滤后预览数据如下:




重新建模




模型整体评估如下:




表4:模型评估2


从表4中可看出,模型精度从原来的95%提升带了100%。当然实际中如果遇到预测精度为100%的情况一定就是错的。下面我们再来解读一下得到的决策树模型。如下图所示,


从整体来看,得此类病的人有大约一半的人(45%)选择服用了Y药物;

如果病人血液中钠和钾的比例大于14.8285,则选择服用Y药物,准确率为100%;

如果病人血液中钠和钾的比例不大于14.8285,若全部判成X药物准确率只有47.5%,因此再看病人的另外一个指标血压;

如果血压(其值有1、2和3)为2,则全部判为X药物,准确率为100%;

如果血压为1,全部判为C药物,准确率仅50%。再看另外一个指标胆固醇,若胆 固醇的值为1,全部判为X药物,则准确率为100%。若胆固醇的值为2,全部判为C 药物,则准确率为100%。

如果血压为3,全部判为A药物,则准确率仅56.8%。再看另外一个指标年龄,若 年龄大于50.5岁,判为B药物,则准确率100%。若年龄不大于50.5岁,判为A药物, 准确率为100%。




 小 结

第一,在建模中,应该注意过拟合问题。在商业中建模的目的是为了商业应用,因此不仅要保证模型的准确性,更要保证模型的稳定性。

第二,模型应用的核心是模型的风险控制。只有可以控制风险的模型才可以使用,否则不管理论模型建的多么漂亮都是没有实际意义的。

第三,数据挖掘的成果并不只是数学模型,数据挖掘也不等价于高级模型(如决策树神经网络等)。数据挖掘最重要的不仅是得到一个模型,还有分析得出最合理的输入变量以及给出数据质量管理的建议。

第四,数据挖掘的一个核心工作就是图形化探索,貌似很简单却又最为重要。因为这是你数据挖掘思路的源泉。

文章来自思迈特,CDA获授权转载

数据分析咨询请扫描二维码

客服在线
立即咨询