顾天宇,严壮志,蒋皆恢
(上海大学通信与信息工程学院,上海 200444)
辨证论治指导中医临床诊疗,是中医理论的核心和精髓[1]。中风病作为常见的脑血管病,针对其辨证论治最早可以追溯到《黄帝内经》时期。在临床上对中风患者进行辨证论治,可以得到良好的预后效果。气虚血瘀证是中风常见的证型之一,占缺血性中风70%以上[2],因此针对气虚血瘀证进行证候分类具有临床意义。
目前,关于运用现代科学技术的理论和方法推进中医证候分类的数字化、自动化与智能化研究较多。如陈建新等[3]利用贝叶斯方法、神经网络方法、支持向量机方法和决策树方法建立基于冠心病患者中医四诊信息的证候分类模型;覃裕旺等[4]、许明东等[5]利用BP神经网络方法、支持向量机方法建立高血压病中医证候分类模型,但是关于中风病中医证候分类模型的研究鲜有报道。本研究基于文献资料,应用支持向量机(Support Vector Machine,SVM)、反向传播(Back Propagating,BP)神经网络与梯度提升决策树(Gradient Boosting Decision Tree,GBDT)建立中风病中医证候分类模型,以年龄、性别、身高、体质量与临床中风病常见的症状,包括中风主要症状、舌象、脉象数据作为输入,气虚血瘀证的判断作为输出。
选择2020年3月—2021年4月在黑龙江中医药大学附属医院治疗的中风病患者共669例,一般资料信息见表1。其中辨证为气虚血瘀证382 例,非气虚血瘀证287例。
表1 669例中风病患者一般资料比较(±s)
表1 669例中风病患者一般资料比较(±s)
辨证类型气虚血瘀非气虚血瘀例数382 287性别(m/f)237/145 131/156年龄(岁)60.80±10.68 61.59±9.24身高(cm)168.64±8.26 166.76±7.53体质量(kg)65.78±10.62 62.26±11.18
中风病中医诊断标准参照中华中医药学会发布的《中医内科常见病诊疗指南中医病证部分》[6]与国家中医药管理局发布的《中医病证诊断疗效标准》[7]。
中风中医临床诊断信息所用的症状、证候名称参考《中医临床诊疗术语证候部分》[8]与北京中医药大学总结的中风证候要素诊断量表[9]。观察半身不遂、口舌歪斜、面部麻木等39 个症状,舌象分为舌红、舌淡白、舌绛等32 个症状;脉象分为脉弦、脉数、脉涩等23 个症状。每个症状分为无、有两种情况,分别用0、1表示。具体见表2。
表2 中风病中医临床诊断症状
①经头颅CT或MRI诊断为中风的住院患者;②未用药或未长期使用药物而干扰证型判断患者;③由两名或两名以上临床医师进行辨证论治。
①不符合上述纳入标准;②已受到系统用药干扰患者;③缺少临床医生证型判断记录患者。
研究数据共669例,按照8∶2随机划分为训练集和测试集,其中训练集535例,测试集134例,训练集输入中风病中医证候分类模型中进行五折交叉验证训练模型,测试集用于评估模型的性能,评估指标包括准确率、敏感度、特异度以及AUC。
研究采用操作系统为Linux Ubuntu 16.04系统,源码的编译环境为PyCharm2019.2,CUDA 版本为10.1,cudnn 版本为7.6.0。采用了0.19.1 版本的机器学习模块scikit-learn。
本研究选择了三种不同类型的分类器建立中风病中医证候分类模型:支持向量机(SVM)、反向传播(BP)神经网络与梯度提升决策树(GBDT)。
针对基于核函数的SVM,研究中对不同核函数进行了调参。对于线性核函数,可调参数只有惩罚松弛变量C;对于径向基核和多项式核,可调参数有惩罚松弛变量C 和核函数系数gamma。利用网格搜索方法进行参数寻优,惩罚松弛变量C 搜索范围为[1 3 5 7 9 11 13 15 17 19],核函数系数gamma 搜索范围为[0.000 01 0.000 1 0.001 0.1 1 10 100 1 000],网格搜索过程中采用五折交叉验证,五次交叉验证下模型准确率均值作为模型评估指标。训练表明:C为5,gamma为0.1时的基于径向基核的支持向量机模型性能最优。
针对BP神经网络,可调参数有学习率、动能衰减系数、批处理大小以及隐层节点数。首先利用网格搜索方法对学习率和动能衰减系数进行联合调参,学习率搜索范围为[0.2 0.1 0.02 0.01 0.002 0.001],动能衰减系数搜索范围为[0.7 0.75 0.8 0.85 0.9 0.95],训练表明:学习率为0.2,动能衰减系数为0.9时模型性能最优。然后单独设置批处理大小,搜索范围设置为[20 40 60 80 100],训练表明:批处理大小为40时模型性能最优。最后对隐层节点数进行讨论,选择从[20 200]区间中,每次增加20,训练表明:隐层节点数为140时模型性能最优。所以,BP神经网络参数设置为:学习率为0.2、动能衰减系数为0.9、批处理大小为40、隐层节点数为140。
针对GBDT,可调节参数有学习率与基分类器个数。依旧利用网格搜索方法进行参数寻优,学习率搜索范围为[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9],基分类器个数搜索范围为[20 30 40 50 60 70 80 90 100],训练表明:当学习率为0.1,基分类器个数100时,模型性能最优。
三个模型都以年龄、性别、身高、体质量与临床中风病常见的症状,包括中风主要症状、舌象、脉象数据作为输入,中风临床常见证候——气虚血瘀证的判断作为输出。
利用不同分类器搭建的中风病中医证候分类模型性能对比见表3,基于SVM的中风病中医证候分类模型准确率为86%,灵敏度为81%,特异度为92%,都优于BP 神经网络与GBDT。结合图1不同分类器下模型的ROC曲线可得:相较于其他分类器模型,基于支持向量机建立的模型在中风病中医证候分类上更具优势。
图1 不同分类器下中风病中医证候分类模型ROC曲线
表3 不同分类器下中风病中医证候分类模型性能对比
本研究利用SVM、BP神经网络、GBDT建立中风病中医证候分类模型,以中风病患者的年龄、性别、身高、体质量与临床中风病常见的症状,包括中风主要症状39 个、舌象32 个、脉象23 个数据作为输入,中风临床常见证候——气虚血瘀证的判断作为输出,三个模型进行比较。结果显示:基于SVM 的中风病中医证候分类模型准确率达到86%,相较于其他分类器模型,在中风病中医证候分类上更具优势。
本研究提示机器学习在中风病中医证候分类过程中的适用性,但是目前搭建的模型还只是理论模型,还需进一步改善。在今后的研究中,还需要扩大训练样本,优化输入特征、提高算法准确率、增加与更多算法的对比,以期建立更优化的中风中医证候分类模型,进一步探索中风病中医证候的数字化、自动化、智能化。
(致谢:感谢黑龙江中医药大学所提供的数据,同时感谢天津慧医谷科技有限公司提供的宝贵建议与帮助。)