潘国兴,易 钢*,卢彦杰
湖南中医药大学信息科学与工程学院,湖南 长沙 410208
过敏性紫癜性肾炎(Henoch-Schönlein purpura nephritis, HSPN)患者通常表现为蛋白尿、血尿、腹痛、皮肤紫癜等症状[1]。 中医学将其归为“血证”“紫癜风”“水肿”等范畴[1],认为是由于患者先天阴虚质燥,营血中有伏火,复又外受风热、温热或药毒之邪,导致两热相搏,血热炽燔,从而灼伤肤络,血溢肤表而发为紫癜[2]。 临床研究表明,采用中药治疗HSPN效果明显,且不良反应小[3]。 但是,在对当前中医治疗HSPN 相关文献进行研究分析后发现,在用药剂量、药物配伍等问题上缺乏系统性归纳,存在局限性。近些年,大量学者采用现代统计分析和数据挖掘技术对中医用药规律进行研究,有效推动了中医的发展,但采用的算法大体相同且较为原始,挖掘的结果也较为浅显。因此,本研究采用聚类算法的数据挖掘技术探讨中医治疗HSPN 用药剂量规律,以期为临床治疗和新药研发提供参考。
人工智能技术的发展与应用,对中医药的发展起到促进作用。 中医知识体系庞大,内容极为丰富,且具有经验性、辨证性的特点,仅仅依靠人力难以对中医基础理论、中药方剂学和中医文献学等进行规律总结和隐藏关系有效发掘。 数据挖掘技术具备从大量的数据中挖掘出具有特殊联系的隐藏信息的能力,因此被广泛应用。 聚类算法作为数据挖掘技术中的一个重要的分支,在中医用药规律的发掘中具有举足轻重的作用。 例如,倪瑛等[4]采用K-means 聚类算法探讨治疗新型冠状病毒肺炎处方的组方配伍规律,聚类分析获得6 类药物社团,具有清肺解毒、芳香化湿、辟秽化浊、通腑解毒祛瘀、回阳救逆、补气养阴等配伍特征;邹锦等[5]将熵聚类应用于发掘中医经方治疗抑郁症的用药规律,通过聚类分析得到新方3 个,为临床辨治抑郁症提供参考。
针对中医治疗HSPN 的用药特点,本文采用改进的CC 双聚类算法挖掘其中的隐藏规律信息,并采用模糊C 均值(fuzzy C-means, FCM)聚类算法对挖掘出的药物剂量大小进行区分。 旨在得出中医治疗HSPN 用药剂量的规律,验证算法模型的有效性,为中医治疗HSPN 研究提供参考。
以“过敏性紫癜性肾炎”作为关键词,检索项选择“主题”,文献类型选择“期刊论文”,对CNKI、万方数据库、维普中文期刊服务平台、中国生物医学文献数据库进行检索,筛选年限为建库至2022 年8 月26日,共收集到中医治疗HSPN 相关研究文献508 篇。
纳入标准:(1)符合HSPN 的中西医诊断标准;(2)中医内服方剂治疗HSPN 的临床研究文献;(3)治疗结局判定有效;(4)中药处方药物完整,剂量记载明确;(5)患者年龄区间为20~30 岁。
排除标准:(1)综述、Meta 分析、个案;(2)针灸、熏蒸、西医结合等联合治疗文献;(3)动物实验;(4)重复处方。
将文献中的方剂按照方剂名、症状、药物(剂量)的格式录入Microsoft Excel 2019 软件进行存储。
中药名称规范化:参照《中医诊断学》[6]《中华人民共和国药典》[7],对录入的症状名称和中药名称进行规范化处理,如“血尿”“尿血”等规范为“尿血”,“银花”“双花”规范为“金银花”,“丹皮”规范为“牡丹皮”等。
药物剂量规范化:为方便后续数据挖掘工作,将所有药物剂量单位统一为克, 按照一枚标准大枣10 g、一片生姜3 g 等转化为“大枣10 g”“生姜3 g”。
数据录入:录入工作由两人合作完成,采用资料双人背对背录入方式,以此保证数据的准确可靠性。
对数据进行整理过程中发现,个别处方中有1~2味其他中医专家不曾使用的药物。 因为不同的中医专家有着不同的临床经验,对药物的配伍、用量、服用顺序等各不相同。 此外,患者体质与病情不可能完全一致。 因此,会选择性地加入一些药物,以达到更好的疗效。 然而,低频药物仅占整体数据集中的一小部分,如果将它们都加入数据集则会产生大量噪声数据,导致算法运行效率降低、结果解释性降低、过拟合等问题。 因此,为寻求普适性用药规律,需要设置界定阈值。 在对药物出现频次的不同值作为阈值进行了多组实验后,结果显示,频次=5 次作为阈值时可以得到较好的聚类效果,并且频次≥5次的药物占整体数据集的比例适中。 故将药物界定阈值设为5,得到出现频次≥5 次的药物174味,建立药物-剂量矩阵,矩阵行代表方剂,矩阵列代表药物名,矩阵内数值代表剂量,缺失值填0。详见表1。
表1 药物-剂量矩阵
模糊算法源于模糊数学理论,属于智能算法,常见的模糊算法有均值模糊和高斯模糊。 FCM 是一种基于划分的聚类算法,其目的在于使划分到同一簇的对象之间的相似度最大,而不同簇之间对象的相似度最小。FCM 是一种模糊划分,相较于其前身C均值聚类算法的硬性划分,FCM 的划分更为柔性[8]。
在中药剂量区间划分研究中,刘丹[9]采用现代统计学的传统划分方法,易于理解和实现、适应性强、更容易操作,划分模式比较直观和易于操作,适用于处理药物剂量比较稳定以及算力比较弱的情况。 但传统划分方法还存在一些局限性,例如划分模式非此即彼,不能全面反映药物剂量效应和区间,而且对于中医药领域中药物剂量复杂且效应不确定的情况有限制。因此,需要考虑应用更细致化和更符合实际情况的剂量划分方法。如模糊聚类算法,其可以很好地处理和利用非精确性数据,在中医药研究中有很好的应用前景。与传统方法相比,模糊聚类算法可以更好地适应不同病情和患者的个体差异,实现药物剂量的个性化调整。 本次研究采用FCM算法对药物剂量区间进行划分,FCM 算法由RUSPINI 首先提出,之后经过DUNN 与BEZDEK 的改进[10],成为现在人们熟知的FCM 算法。 FCM 算法大致流程如下:
第一步:随机初始化聚类中心;
第二步:对于每个数据点,计算其与每个聚类中心的相似度(距离);
第三步:根据计算得到的相似度值,将每个数据点分配到最相似的聚类中心;
第四步:更新每个聚类中心,计算每个聚类中心的向量值,使其尽可能接近同一类别中的所有数据点;
第五步:重复第二步~第四步,直到聚类中心不再发生变化或达到预设的最大迭代次数[11]。
1.6.1 原始算法 CC 双聚类算法由CHENG 和CHURCH 于2000 年提出[12]。 算法的核心思想在于利用平均平方残基来寻找矩阵中具有相似特征的子矩阵[13],例如,一个X 行Y 列的矩阵A,其平均平方残基可以表示为:
上述公式中,公式(5)计算结果即为矩阵中每个元素的残基,将该元素依次减去所在行的平均值和所在列的平均值,最后加上矩阵所有元素的平均值;计算出矩阵中每个元素的残基后就可以得出该矩阵的平均平方残基H(X,Y),设置阈值ε,当矩阵的H(X,Y)≤ε 时,即该矩阵具有较强的内部一致性。因此,对于H(X,Y)>ε 的矩阵,若想达到较强内部一致性的目标,就需要依次删除H(X,Y)>ε 的行或列R,删除条件公式为:
为避免错误删除平均平方残基小于阈值的行列,加入填补行列条件公式:
最后输出目标子矩阵;经过一轮的删除与输出,为了下次迭代能够输出新的子矩阵,需要对删除的行或列进行随机值的填补,经过反复迭代,最终输出多个不同的具有较强内部一致性的子矩阵。CC 双聚类算法的伪代码形式如下:
1.6.2 改进算法 利用药物-剂量矩阵进行CC 双聚类算法的剂量挖掘。 由于中医处方所涉及的药物种类十分庞大,因此药物-剂量矩阵中存在大量的0值;经过上述对原始CC 双聚类算法内容的描述,可以预料到算法会将矩阵中大量的0 值作为具有较强内部一致性的子矩阵输出,这样的挖掘结果没有任何意义。 除此之外,算法迭代过程中还会将删除的行或列进行随机数的填补,这必然会影响原始的药物剂量信息,导致输出结果不准确。
针对上述出现的两个问题,提出“惩罚策略”[14],具体算法步骤如下:
第一步:创建与药物-剂量矩阵ρ(X 行,Y 列)维度相同的0 矩阵θ,遍历矩阵ρ,当ρ(x,y)=0 时,设θ(x,y)=1;
第二步:创建惩罚系数ω=|X|×|Y|×μ,其中μ 为初设阈值,可以通过调节其大小来控制惩罚力度;
第三步:对原始CC 双聚类算法中平均平方残基公式(1)进行改进,即为:
其中θxy代表矩阵θ 中X 行,Y 列的取值。
第四步: 对原始CC 双聚类算法中删除行列条件公式(6)进行改进:
通过在(6)式中添加“惩罚项”可以保证优先删除矩阵ρ 中的0 值;
第五步:对原始算法中添加随机值条件公式(7)进行改进:
改进后的随机值填补条件公式可以使算法优先填补不含0 值的行列;
第六步:对于一次迭代输出的目标子矩阵,记录元素所在位置(x,y),并将矩阵θ(x,y)=1,算法在进行下一次迭代时,因为惩罚项的因素删除第一次迭代输出的子矩阵相同位置的元素,即使该位置被赋予满足输出条件的随机值。
将改进思路应用到CC 双聚类原始算法中,经改进后的算法伪代码如下:
该改进算法主要通过引入惩罚因子和动态调整方剂数据矩阵来优化聚类结果。 在初始化阶段,通过设置权重矩阵和惩罚因子,用于调整元素距离的影响力。 然后,使用CC 双聚类算法对方剂数据矩阵进行聚类,得到聚类的平均值。 接下来,根据惩罚因子对方剂数据矩阵进行调整。 将某些行和列置零,并计算调整后的行和列的均值。 然后,对方剂数据矩阵进行旋转操作,并减去旋转后的均值。将调整后的方剂数据矩阵加上聚类的平均值,并进行平方操作。 在计算惩罚项时,加上惩罚因子,并计算所有非零元素的平均值。 通过判断惩罚值,评估聚类结果的稳定性是否满足要求。根据聚类结果的稳定性,动态地添加或删除方剂数据矩阵的某些行或列。通过重复以上步骤,直至聚类结果稳定且满足要求。 该改进算法通过引入惩罚因子和动态调整方剂数据矩阵,以及重复迭代的方式,优化了聚类结果,避免了过于紧密或离散的情况,从而实现更好的聚类效果。
共纳入中医治疗HSPN 处方387 则。 在Pycharm 2021(Python 3.7)平台编写频数统计程序,截取出现频次≥30 次的药物38 味。详见表2。使用频次由高到低的中药依次是生地黄、牡丹皮、白茅根、赤芍、甘草等。 生地黄具有清热生津、凉血止血的作用,常用于热病伤阴、发斑发疹、衄血等,因此,被广泛应用于HSPN 的治疗[15]。
表2 治疗HSPN 的高频药物(频次≥30 次)分布表
选用MATLAB R2021b,利用FCM 聚类算法分别对表1 的每列进行去0 值聚类分析。
算法初始化内容:模糊加权指数m 取值范围为[1,2.5],通常取m=2 可达到较好的效果;聚类中心点个数cluster_n=3;最大迭代次数为300。
可以得到174 味药物大剂量、中剂量、小剂量的中心点信息。 详见表3。
表3 药物剂量中心
经过上述的FCM 聚类,可以得到每味药物的隶属度矩阵以及分布曲线。 以“茯苓”的部分隶属度为例进行分析。 详见表4、图1。
图1 茯苓隶属度曲线
表4 茯苓剂量隶属度矩阵
在88 首含茯苓的方剂中,茯苓剂量有6 种,分别为6、10、12、15、20、30 g,表4 展示这6 种剂量的隶属度,图1 展示88 首方剂中茯苓剂量的隶属度形成的隶属度曲线。从以上结果可以得出,茯苓小剂量中心点约为10 g,中剂量中心点约为15 g,大剂量中心点约为20 g。有研究根据张仲景方剂,对茯苓的剂量疗效关系进行分析,以10 g 与20 g 作为边界,将茯苓的剂量分为小剂量、中剂量和大剂量[16],与上述的模糊聚类结果相同。因此,采用模糊聚类算法可以有效地将药物的剂量关系进行划分。
实验中,首先利用原始的CC 双聚类算法对药物-剂量矩阵进行聚类分析,聚类结果详见表5。 可以直观地看到,原始的CC 双聚类算法在面对稀疏矩阵时并不能发挥出对非0 数据的聚类作用,显然无法达到本次研究的目的。
表5 CC 双聚类算法部分结果
将药物-剂量矩阵导入改进CC 双聚类算法中。初始设定惩罚系数中初设阈值μ 为1,进行双聚类,并观察聚类结果。如果结果过分承认噪声点,则将μ值的大小适当增加, 重复这个过程直到结果合理。设定一组μ 的可能值,分别进行多次双聚类,选出噪声点最少的一组,取得该数值。 面对不同类型的数据集,可以根据数据的特征进行设定,当数据包含噪声较多时,可以适当增加μ 的大小,当数据中噪声很小时,则μ 可以设定为较小值。 经过多次重复实验,最终设定参数μ=10;迭代次数n=120,进行双聚类分析,挖掘出10 组药物剂量组分子矩阵,部分内容展示见表6—8。 根据“2.2”得到的药物剂量隶属度,分别用low(小剂量)、mid(中剂量)、high(大剂量)来标注药物的剂量大小。
表6 药物组分子矩阵Ⅰ
表6 所列举的3 首自拟方中均用到水牛角、生地黄和小蓟,该类型的自拟方大多是犀角地黄汤合小蓟饮子加减。 犀角地黄汤联合常规西医干预治疗儿童过敏性紫癜具有良好的疗效,能显著改善症状与免疫功能。 方中君药水牛角起到祛风解毒、凉血解毒、清热定惊的作用[17]。 小蓟饮子为理血剂,具有凉血止血、利水通淋之功效,方中君药小蓟凉血止血、祛瘀消肿[18-19]。 两首方剂中均使用到的生地黄味甘、苦,性寒,归心、肝、肺经,能清热凉血、养阴生津。
从生成的药物剂量子矩阵来看,水牛角与生地黄大多使用大剂量和中剂量,配合小剂量的小蓟。水牛角与生地黄用量宜大,二者配伍剂量比例约为1∶1,且常见于30 g 左右;小蓟常规用量为5~12 g,属小剂量,与生地黄、水牛角剂量比例约为1∶2;水牛角、生地黄、小蓟剂量比例大约控制在2∶2∶1 时,清热凉血之效益彰,治疗热迫血行之衄血、崩中下血、尿血等症具有显著的疗效[20]。
表7 显示有连翘、金银花。 连翘与金银花均具备清热解毒、疏散风热之功效,两药配伍,升浮宣散、清热解毒之力倍增[21]。 丁影[22]研究不同配伍比例对金银花-连翘药对中9 个成分提取率的影响,发现当金银花-连翘药对比例为1∶1 时,其中的绿原酸、咖啡酸、獐牙菜苦苷等9 种主要成分含量最高。 此外,金银花与连翘均具有解热抗炎作用,吴嘉瑞等[23]采用网络药理学方法研究两种药物对炎症性疾病的作用机制,当金银花与连翘比例为1∶1 配伍使用时,抗炎作用最强,且解热作用最为明显。 因此,在众多治疗HSPN 的方剂中,使用金银花-连翘药对时,会将药对的剂量比例控制在1∶1 左右,使其发挥出最大的疗效[24]。
表7 药物组分子矩阵Ⅱ
表8 显示4 则方剂均用到黄芪、当归和茯苓。 黄芪具有补气升阳、利水消肿的功效;当归具有补血活血、调经止痛的作用[25];茯苓能够利水渗湿、健脾宁心。
表8 药物组分子矩阵Ⅲ
黄芪-当归具有改善血液循环、抗脏器纤维化、抗炎等作用[26]。 临床研究发现,二者在治疗糖尿病、肾病综合征等疾病中具有良好的疗效。 尚伟庆等[27]研究了黄芪-当归合剂对肾病综合征患者肾功能、炎症机制及疗效的影响,在采用常规治疗的基础上对患者使用黄芪50 g,当归25 g(黄芪∶当归=2∶1),结果显示黄芪当归合剂可显著改善患者肾功能,减轻患者微炎症状态。 从聚类结果上看,诸多中医专家在用到黄芪-当归药物配伍时,习惯将二者的剂量比例控制在2∶1,以达到较好的治疗效果。
将FCM 聚类算法和CC 双聚类算法相结合,目的是为了更全面、更深入地研究药物的剂量规律和关键药物组合。在CC 双聚类算法中,药物的剂量已经被明确地归为某一具体数值,但是仅仅一个具体的数值并不能准确描绘出药物的剂量和药效之间的关系。 因此,使用FCM 聚类算法将药物剂量分为大、中、小剂量,可以在一定程度上涵盖药物的剂量效应和区间,从而更好地把握药物剂量对治疗的影响。
同时,药物的剂量大小并不是唯一决定药物疗效的因素,与药物组合、剂量比例密切相关。 通过CC 双聚类算法,可以找到出现频率较高的药物组合和对应的药物剂量比例。但是药物组合的适当剂量并不是根据出现频率得出的,而是需要考虑具体的治疗目标和当前患者病情。 因此,在实际临床应用中,算法得出的“最佳剂量比例”并非每个患者的最佳剂量比例。而将FCM 聚类算法得出的大、中、小剂量区间和CC 双聚类算法得出的药物组合、剂量比例结合在一起,能够较好地综合考虑药物剂量和药物组合的综合效应,以更准确地指导临床实践,呈现出更好的治病效果。
在这项关于中药治疗HSPN 的研究中,本研究团队使用改进的CC 双聚类算法和FCM 聚类算法对众多中医专家的药物剂量进行分析和处理,得出了有效的药物剂量区间和药物组合,并总结了相应的实验结论。 这种研究方法和结论可为个性化药物治疗提供参考,具有一定的研究价值。此项研究仍需进一步深入,例如如何根据患者特征提出更加个性化的治疗方案;如何进一步优化药物的剂量区间和药物组合,以更好地满足患者的临床需求,等等。未来,本研究团队希望能够借助更加人性化和高效的算法,探究药物的潜在作用及其剂量的潜在效应,并从中找到隐性的治疗策略,以更好地为患者提供个性化的治疗方案,为发展中药治疗及个性化医疗提供支持和实践依据。