心脏病严重影响人们的生命健康,如果可以通过人体相关体测指标,分析不同特征对心脏病的影响,则可以有效预防心脏病。本实验基于真实的心脏病患者体侧数据,为您介绍如何通过数据挖掘算法构建心脏病预测模型。

前提条件

已完成Designer相关权限授权,详情请参见云产品依赖与授权:Designer

数据挖掘流程

数据挖掘流程

数据集

本实验的数据集为UCI开源数据集,详情请参见Heart Disease Data Set。该数据集包含了303条美国某区域的心脏病检查患者的体测数据,具体字段如下。
字段名 类型 描述
age STRING 对象的年龄。
sex STRING 对象的性别,取值为femalemale
cp STRING 胸部疼痛类型,痛感由重到轻依次为typicalatypicalnon-anginalasymptomatic
trestbps STRING 血压。
chol STRING 胆固醇。
fbs STRING 空腹血糖。如果血糖含量大于120mg/dl,则取值为true,否则取值为false
restecg STRING 心电图结果是否有T波,由轻到重依次为normhyp
thalach STRING 最大心跳数。
exang STRING 是否有心绞痛。true表示有心绞痛,false表示没有心绞痛。
oldpeak STRING 运动相对于休息的ST Depression,即ST段压值。
slop STRING 心电图ST Segment的倾斜度,程度取值包括downflatup
ca STRING 透视检查发现的血管数。
thal STRING 病发种类,由轻到重依次为normfixrev
status STRING 是否患病。buff表示健康,sick表示患病。

心脏病预测

  1. 进入PAI-Designer页面。
    1. 登录PAI控制台
    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应工作空间内。
    3. 在工作空间页面的左侧导航栏选择模型开发和训练 > 可视化建模(PAI-Designer),进入Designer页面。
  2. 构建实验。
    1. 在PAI-Designer页面,单击工作流模板页签。
    2. 工作流模板列表的心脏病预测案例区域,单击创建
      创建模板
    3. 新建模板对话框,输入名称描述
    4. 单击确定
      您需要等待大约十秒钟,工作流可以创建成功。
    5. 在工作流列表,选择心脏病预测案例工作流,单击进入工作流
    6. 系统根据预置的模板,自动构建实验,如下图所示。
      心脏病预测实验
      区域 描述
      数据预处理,主要对数据进行去噪、缺失值填充及类型变换操作。因为每个样本只会患病或健康,所以心脏病预测可以归属于分类问题。本实验的输入数据包括14个特征列和1个目标列,在数据预处理过程中,需要根据每个字段的含义将字符类型转化为数值类型。其中:
      • 二值类数据:以sex字段为例,其取值为femalemale,可以使用0表示female1表示male
      • 多值类数据:以cp字段为例,该参数表示胸部疼痛感,可以将疼痛感由轻到重依次映射为0~3的数值。
      数据预处理的SQL脚本示例如下。
      select age,
      (case sex when 'male' then 1 else 0 end) as sex,
      (case cp when 'angina' then 0  when 'notang' then 1 else 2 end) as cp,
      trestbps,
      chol,
      (case fbs when 'true' then 1 else 0 end) as fbs,
      (case restecg when 'norm' then 0  when 'abn' then 1 else 2 end) as restecg,
      thalach,
      (case exang when 'true' then 1 else 0 end) as exang,
      oldpeak,
      (case slop when 'up' then 0  when 'flat' then 1 else 2 end) as slop,
      ca,
      (case thal when 'norm' then 0  when 'fix' then 1 else 2 end) as thal,
      (case status  when 'sick' then 1 else 0 end) as ifHealth
      from  ${t1};
      特征工程主要包括特征的衍生及尺度变化等功能。本实验首先通过类型转换组件将输入特征转换为DOUBLE类型(因为逻辑回归模型的输入数据必须为DOUBLE类型),然后使用过滤式特征选择组件判断每个特征对于结果的影响(通过信息熵和基尼系数反映其影响)。同时,使用归一化组件将每个特征的数值范围转换为0~1,从而去除量纲对结果的影响,其公式为result=(val-min)/(max-min)
      模型训练和预测:
      1. 使用拆分组件将数据集按照7:3分为训练数据集和预测数据集。
      2. 使用逻辑回归二分类组件训练模型。
        说明 如果您需要导出PMML模型文件,在该组件的字段设置页签,需要选中是否生成PMML复选框,并在该工作流页面的工作流属性页签,配置临时模型存储路径
      3. 将模型和预测数据集输入至预测组件,进行结果预测。
      使用混淆矩阵二分类评估组件进行模型评估。
  3. 运行实验并查看输出结果。
    1. 单击画布上方的运行
    2. 实验运行结束后,右键单击画布中的逻辑回归二分类,在快捷菜单,单击模型选项 > 导出PMML,即可导出训练完成的心脏病预测模型。
    3. 右键单击画布中的预测,在快捷菜单,单击查看数据 > 预测结果输出,即可查看模型预测结果。
  4. 查看模型效果。
    1. 右键单击画布中的二分类评估,在快捷菜单,单击可视化分析
    2. 二分类评估对话框,单击指标数据页签,即可查看模型评估指标数据。
      指标数据其中AUC值表示该实验模型的预测准确率达到了90%以上。
    3. 右键单击画布中的混淆矩阵,在快捷菜单,单击可视化分析
    4. 混淆矩阵对话框,单击统计信息页签,即可查看模型准确率等信息。