1.本发明涉及机器学习、医学信息处理技术领域,尤其涉及一种确定心血管疾病潜在不适当处方的风险预警模型的方法。
背景技术:
2.近年来,随着老年人口数量逐年增加,老年人常患有一种以上的慢性病,其中心血管疾病是老年患者中常见的疾病,有许多心血管疾病患者普遍伴有抑郁或焦虑,还有许多心血管患者需要联合治疗(抗血栓药物、他汀类药物和抗高血压药物)。而且,随着年龄增长,老年患者的药效学和药动学随之发生变化,增加了药物不良反应(adverse drug reactions,adr)的风险。虽然,已有相关研究显示年龄、用药数量、疾病数量、潜在不适当处方(potentially inappropriate prescribing,pip)等可增加老年患者adr的风险,其中pip是老年患者发生adr风险最常见的因素。而pip又具体包括潜在不适当用药(potentially inappropriate medications,pim)和潜在处方遗漏(potential prescribing omissions,ppo)。
3.虽然,国内外已拥有多种pip的评估标准,包括美国加利福尼亚大学制定的beers标准,爱尔兰cork大学附属医院组织专家制定的stopp/start标准,张晓兰等使用德尔菲法建立中国老年人疾病状态下pip标准等。多项研究结果显示stopp/start标准比beers标准更加准确,stopp/start标准(第二版)列出了在特定疾病状态下使用某类药物是否合理以及可能忽略的药物治疗方案。不过,现有的评估标准均为事后干预,不能提前预警老年患者发生pip的风险,无法精准预警pip风险,不能为老年患者提供精准干预,无法为老年患者提供个体化的治疗。
4.而随着机器学习在医学领域的应用,比如有许多研究人员提出利用机器学习等算法对患者电子病历中的风险因素进行建模,从而实现心管疾病的风险预测。因此,为了减少药物不良事件的发生,有必要提供一种利用机器学习对心血管疾病患的电子病历记录进行学习,进而预测心血管疾病患者发生药物不良反应风险的技术方案。
技术实现要素:
5.鉴于以上所述现有技术的不足,本发明的目的在于:提供一种确定心血管疾病潜在不适当处方的风险预警模型的方法,能够基于心血管疾病患者的电子病历,预测该患者发生药物不良反应的风险。
6.为实现上述发明目的,本发明提供以下技术方案:
7.一种确定心血管疾病潜在不适当处方的风险预警模型的方法,其包括以下步骤:
8.s1:对心血管病人病历信息删除身份证号码、姓名、家庭住址、电话号码等信息。该研究是一项回顾性研究,没有采取任何干预措施,伦理委员会认为没有必要征得患者同意。经上述脱敏处理后进行数据处理,得到n个数据集,将n个数据集分为训练集和测试集,使用m种机器学习模型对n个数据集建模,建立n
×
m个风险预警模型;
9.s2:使用十折交叉验证法进行内部验证:将训练集数据输入m种机器学习模型中,使用十折交叉验证法调整模型参数,直到所述模型参数在训练集上得到最大的auc值,得到pip模型、ppo模型和pim模型内部验证的数据采样、特征采样和机器学习模型的auc值、准确率、精准率、召回率、f1值;
10.s3:通过选择auc值最大的多个模型,生成一个集成模型,使用模这m 1种机器学习模型对n个数据集建,建立n
×
(m 1)个风险预警模型;
11.s4:使用bootstrapping法进行外部验证:对测试集使用bootstrapping法进行n次重抽样,建立新样本,使用新样本对n
×
(m 1)个风险预警模型进行外部验证,得到pip模型、ppo模型和pim模型外部验证的数据采样、特征采样和机器学习模型的auc值、准确率、精准率、召回率、f1值;
12.s5:使用auc、准确率、精准率、召回率、f1值指标评价模型,选择auc最大值的模型作为预测性能最佳的五个模型,得到所述五个模型的roc曲线和p-r曲线,选择roc曲线值最大的模型作为pip模型、pim模型和ppo模型各自对应的预测性能最准确的风险预警模型;
13.s6:计算预测性能最准确的风险预警模型中每个变量的shap值,使用shap值表示输出的每个变量与最佳模型预测结果的关系,以每个变量的shap值的绝对值的平均值作为该变量的重要性,分别排列每个变量对最佳预测模型的贡献值,得到每个变量对于pip、pim和ppo风险预警输出。
14.进一步的,所述数据处理还包括:删除数据缺失比例高于90%的变量、单个类别比例高于90%的变量以及变异系数小于0.1的变量,所述n个数据集按8∶2比例划分为训练集和测试集,所述n个数据集分别采用x种不同的数据采样方式进行数据采样,再分别采用y种不同的数据筛选方式进行数据筛选,得到n个所述数据集,其中,n=x
×
y。
15.进一步的,所述变量包括心肌梗塞、心脏传导阻滞、静脉血栓栓塞、痛风史、肾衰竭、抗凝治疗、心绞痛、动脉粥样硬化、心力衰竭、糖尿病、用药数量、患病数量、性别、住院时间、年龄、消化道出血、抗血栓治疗、心血管病史、脑血管疾病、心房颤动、高血脂和高血压。
16.进一步的,所述心血管病人病历信息采用第二版stopp/start标准中的心血管系统和抗血小板/抗凝药物识别老年患者中可能存在的pip的处方,包括心血管系统和抗血小板/抗凝药物的pim标准和心血管系统的ppo标准,所述脱敏处理包括删除患者的身份证号码、姓名、家庭住址、电话号码信息。
17.进一步的,还包括所述数据集验证,验证所述的确定心血管疾病潜在不适当处方的风险预警模型的方法所需求的数据集数量。
18.进一步的,所述样本量验证采用有放回的重抽样法从训练集中依次随机抽取不同量的数据训练模型,测试集得到多组不同的auc值,重复n次,得到auc值绘制折线图,随着数据量不断增加,auc逐渐增加,数据的离散度不断减少,曲线不断地趋于平缓,其中pip模型中,当数据量达到现有数据量的70%时,曲线趋于平缓,得出pip模型中样本量足够,ppo模型和pim模型中,当样本量达到70%时,曲线平缓,随后曲线不断上升,得到数据量达到现有数据量的70%-80%时,可满足ppo模型和pim模型。
19.进一步的,还包括假设检验,通过现有数据量推断总体,得到现有数据量指标和总体指标之间的差异。
20.进一步的,所述假设检验包括方差分析、秩和检验,数据不满足正态分布,使用秩
和检验,满足正态分布,判断方差齐性,方差齐,选用方差分析,否则选用秩和检验,设置显著性水平为0.05,所述假设检验使用python3.8中的stats实现,模型的建立使用python3.8中的sklearn实现。
21.进一步的,所述数据采样方式包括:不采样、随机上采样、随机下采样、smote上采样以及borderline smote上采样;所述数据筛选方式包括:不筛选、lasso筛选及boruta筛选,所述机器算法模型包括:adaboost、bagging、bernoulli_naive_bayes、decision_tree、extra_tree、gaussian_naive_bayes、gradient_boosting、knn、lda、logistic_regression、multinomial_naive_bayes、passive_aggressive、qda、random_forest、sgd、svm、xgboost。
22.进一步的,所述数据采样方式包括:
23.不采样:不对数据采样,将原始数据输入模型;
24.随机上采样:随机复制标签类型较少的数据,使得正负数据数量一致;
25.随机下采样:随机删除标签类型较多的数据,使得正负数据数量一致;
26.smote上采样:
27.使用合成少数类上采样对少数类数据进行分析,并合成该类的新数据添加到数据集中,具体算法流程如下:
28.对于少数类中每个数据x,以欧氏距离为标准计算它到少数类数据集中的所有数据的距离,得到其k近邻,根据数据不平衡比例设置一个采样比例以确定采样倍率n,对于每一个少数类数据x,从其k近邻中随机选择若干个数据,假设选择的近邻为xn,对于每个随机选择的近邻xn,分别与原数据构建新的数据:x
new
=x rand(0,1)(x-xn);
29.borderline smote上采样:
30.borderline smote算法通过边界上少数类数据合成新数据,从而改善数据类别的分布,borderline smote采样将少数类数据分为3类,分别为safe、danger和noise,仅对danger的少数类数据过采样。
31.一种确定心血管疾病潜在不适当处方的风险预警系统,根据pip、ppo和pim最佳模型的参数,建立预测系统,实现潜在不适当处方风险预警的可视化。包括数据处理模块和风险预警模块:
32.数据处理模块,用于对确定心血管疾病病人的病历数据进行处理;
33.风险预警模块,采用基于确定心血管疾病潜在不适当处方的风险预警模型的方法所确定的风险预警模型,根据所述数据处理模块输入的数据,输出pip、pim和ppo的风险概率。
34.与现有技术相比,本发明的有益效果:
35.本发明确定心血管疾病潜在不适当处方的风险预警模型的方法,关于心血管疾病患者pip的研究大多数为传统的统计分析,例如单因素方差分析和多变量logistic回归等。本研究根据sottp/start标准(第二版),使用多种机器学习算法建立pip预测模型。预警心血管疾病的老年患者发生pip的概率,对模型进行了内部、外部验证,泛化能力更强,预测结果更加准确,还对模型进行样本量验证,验证样本数量是否满足本发明需求。
附图说明
36.图1为本发明的技术流程示意图;
37.图2为对变量进行筛选得pip模型、ppo模型以及pmi模型重要性排列图;
38.图3为pip模型、ppo模型和pim模型内部验证的结果图;
39.图4为pip模型、ppo模型和pim模型外部验证的结果图;
40.图5为将bootstrapping200次抽样后的数据,排列变量的重要性图;
41.图6为根据变量的shap值平均值的条形图;
42.图7为变量与最佳模型预测结果的关系图;
43.图8为变量shap值的绝对值的平均值作为该变量的重要性条形图;
44.图9为pip模型、ppo模型以及pmi模型的样本量-离散度示意图;
45.图10为心血管疾病潜在不适当处方的风险预警系统模块示意图;
46.图11为心血管疾病潜在不适当处方的风险预警系统可视化界面示意图;
47.图12为borderline smote采样示意图。
具体实施方式
48.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本发明实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。
49.因此,以下对本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的部分实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
50.需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征和技术方案可以相互组合。
51.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
52.在本发明的描述中,需要说明的是,术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,或者是本领域技术人员惯常理解的方位或位置关系,这类术语仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
53.实施例1,如图1所示,本发明确定心血管疾病潜在不适当处方的风险预警模型的方法流程,采用stopp/start标准(第二版)中的心血管系统和抗血小板/抗凝药物识别老年患者中可能存在的pip的处方,包括24项pim标准,包括13项心血管系统和11项抗血小板/抗凝药物和8项心血管系统的ppo标准。
54.以及,选取医院老年心血管科出院的患者作为研究对象。在电子病历系统中收集对应的医疗信息作为数据来源,包括处方信息、病历信息和实验室检查等信息。纳入标准为:(1)患者年龄≥65岁;(2)患者住院时间3天至60天;(3)至少诊断为一种心血管疾病,包括高血压、心肌梗死、心绞痛、高血脂症、周围血管疾病、抗血栓治疗指证的患者,患者是否
有抗血栓治疗指证由心血管内科医生确定。收集到患者的电子病历后,通过删除患者的身份证号码、姓名、家庭住址、电话号码等信息,完成数据脱敏处理。其中,患者基本信息赋值情况如下表所示:
55.表1变量赋值情况
[0056][0057]
然后,对经数据脱敏处理后的数据进行预处理,具体包括:
[0058]
1、通过删除数据缺失比例高于90%的列、删除单个类别比例高于90%的列和变异系数小于0.1的列。数据经预筛选保留16个变量,删除6个变量,包括x8心肌梗塞、x11心脏传导阻滞、x16静脉血栓栓塞、x17痛风史、x18肾衰竭、x21抗凝治疗。
[0059]
2、经过数据预筛选和数据采样后的数据集,使用lasso和boruta对变量进行筛选,见图2。结果显示pip模型中重要性排列前五位的变量分别为心绞痛、动脉粥样硬化、心力衰竭、糖尿病和用药数量,但高脂血症、心血管病史、高血压和脑血管疾病在pip模型中重要性较低,见图2a。ppo模型中重要性排列前五位的变量分别为用药数量、心绞痛、动脉粥样硬化、心血管病史和年龄,高脂血症、糖尿病、高血压和脑血管疾病在ppo模型中重要性较低,见图2b。pim模型中重要性排列前五位的变量分别为用药数量、患病数量、住院时间、年龄和心力衰竭,pim模型中重要性较低的变量为动脉粥样硬化、消化道出血、抗血栓治疗和心血管病史,见图2c。
[0060]
数据采样采用5种数据采样方式,包括:不采样、随机上采样、随机下采样、smote上采样以及borderline smote上采样;数据筛选采用3种数据采样方式,包括:不筛选、lasso
筛选及boruta筛选。即得到15个数据集。
[0061]
建立风险预警模型的流程为:
[0062]
使用十折交叉验证法进行模型内部验证。pip、ppo和pim通过5种数据采样和3种特征筛选方法分别得到15个数据集,使用17种机器学习算法,包括adaboost、bagging、bernoulli_naive_bayes、decision_tree、extra_tree、gaussian_naive_bayes、gradient_boosting、knn、lda、logistic_regression、multinomial_naive_bayes、passive_aggressive、qda、random_forest、sgd、svm、xgboost,分别建立255个预测模型。如图3所示,pip模型、ppo模型和pim模型内部验证的结果显示,
[0063]
pip模型中不同的数据采样和不同算法建立的模型性能具有差异,其中最佳数据采样为smote,auc为0.880
±
0.095,准确率为0.814
±
0.095。最佳模型为xgboost,auc为0.854
±
0.130,准确率为0.798
±
0.121;
[0064]
ppo模型中不同的数据采样和不同算法建立的模型性能具有差异,但不同的特征筛选法没有差异。结果显示最佳数据采样为smote,auc为0.800
±
0.126,准确率为0.733
±
0.114。17种模型中最佳模型为xgboost,auc为0.832
±
0.133,准确率为0.772
±
0.119;
[0065]
pim模型与ppo模型的结果类似,不同的数据采样和不同算法建立的模型性能具有差异,不同的特征筛选方法没有差异。其中最佳数据采样方法为random over sampler,auc为0.786
±
0.126,准确率为0.726
±
0.115。最佳模型为random_forest,auc为0.818
±
0.138,准确率为0.758
±
0.117。
[0066]
进行外部验证,通过选择auc值最大的最佳五个模型,生成一个集成模型,最终得到18个模型。使用18种机器学习模型对15个数据集建模,建立270个机器学习模型,选择最佳的模型作为风险预警模型。使用bootstrapping200次抽样后的数据进行外部验证,如图4所示,结果显示pip模型、ppo模型和pim模型中不同的数据采样、特征筛选和算法所建立的模型存在显著差异。
[0067]
其中pip模型中最佳数据采样为random over sampler,auc为0.643
±
0.101,准确率为0.616
±
0.100。最佳特征筛选为不筛选,其auc为0.622
±
0.095,准确率为0.647
±
0.106。最佳模型为ensemble_learning,auc为0.696
±
0.095,准确率为0.682
±
0.107;
[0068]
ppo模型中最佳数据采样为borderline smote,auc为0.632
±
0.082,准确率为0.673
±
0.070。最佳特征筛选为不筛选,其auc为0.604
±
0.089,准确率为0.646
±
0.081。最佳模型为ensemble_learning,auc为0.676
±
0.070,准确率为0.678
±
0.071;
[0069]
pim模型中最佳数据采样为random under sampler,auc为0.563
±
0.089,准确率为0.572
±
0.078。最佳特征筛选为boruta,其auc为0.546
±
0.089,准确率为0.596
±
0.087。最佳模型为ensemble_learning,auc为0.637
±
0.076,准确率为0.647
±
0.072。
[0070]
将bootstrapping200次抽样后的数据,输入到pip模型、pim模型和ppo模型中,排列每个变量的重要性,见图5。其中pip模型中,变量重要性排列前五位的分别为脑血管疾病、心血管病史、用药数量、住院时间和年龄,但糖尿病、消化道出血、高血压和心绞痛在pip模型重要较低。见图5a。ppo模型中变量重要性排列前五位分别为糖尿病、高脂血症、心力衰竭、住院时间和消化道出血,ppo模型中重要性较低的变量为高血压、脑血管疾病、抗血栓治疗和心房颤动。见图5b。pim中变量重要性排列前五位分别为糖尿病、抗血栓治疗、住院时间、年龄和高血压,但消化道出血、高脂血症、心血管病史和心房颤动在pim模型中重要性较
低。见图5c。
[0071]
使用auc、准确率、精准率、召回率、f1值等指标评价模型,选择预测性能最佳的五个模型。pip模型中预测性能最佳的模型,其roc曲线为0.8341,p-r曲线为0.9556;ppo模型中预测性能最佳的模型,roc曲线为0.7007,p-r曲线为0.7992;pim模型中预测性能最佳的模型,roc曲线为0.7061,p-r曲线为0.4268。其它预测性能指标如下表2-4所示:
[0072]
表2 pip 5个最佳模型的预测性能指标
[0073][0074]
表3 ppo 5个最佳模型的预测性能指标
[0075][0076]
表4 pim 5个最佳模型的预测性能指标
[0077][0078][0079]
通过使用shap值解释最佳模型中变量的贡献度,见图6。结果显示pip模型中脑血管疾病、心力衰竭、年龄、高血脂症和高血压对最佳模型的预测结果贡献度较高,住院时间(天)、心肌梗死和性别对最佳模型的预测结果贡献度较低。见图6a。ppo模型中心绞痛、年龄、心力衰竭和高脂血症对最佳模型的预测结果贡献度较高,脑血管疾病、疾病数量、高血压和心肌梗死对最佳模型的预测结果贡献度较低。见图6b。pim模型中用药数量、心绞痛和住院时间(天)对最佳模型的预测贡献度较高,对模型预测结果贡献度较低的变量有脑血管疾病、疾病数量、心肌梗死、心房颤动和糖尿病。见图6c。
[0080]
此外,通过计算最佳模型中每个变量的shap值,解释每个变量与最佳模型预测结果的关系,见图7所示。结果显示pip模型、ppo模型和pim模型的shap值相似,住院时间(天)、心力衰竭、用药数量、心绞痛等变量较高的取值会降低最佳模型的预测能力。并以每个变量的shap值的绝对值的平均值作为该变量的重要性,绘制条形图,如图8a~8c所示,其中,pip模型中变量重要性排列前五分别为心绞痛、动脉粥样硬化、疾病数量、用药数量和心血管病史;ppo模型中变量重要性排列前五分别为心绞痛、疾病数量、心血管病史、动脉粥样硬化和心力衰竭;pim模型中变量重要性排列前五分别为心力衰竭、用药数量、心绞痛、住院时间和年龄。
[0081]
采用有放回的重抽样方法验证样本量是否足够,并以绘制图9a~9c,结果显示随着样本量不断增加,auc逐渐增加,样本的离散度不断减少,曲线不断地趋于平缓。其中,图9a所示,pip模型中,当样本量达到70%时,曲线趋于平缓,提示在pip模型中样本量足够。图9b和图9c所示,ppo模型和pim模型中,当样本量达到70%时,曲线平缓,随后曲线不断上升;说明样本量在70%到80%时,样本量可满足ppo模型和pim模型。
[0082]
如图10所示,本发明的另一方面,还提供一种确定心血管疾病潜在不适当处方的风险预警系统,其包括:
[0083]
数据预处理模块,用于对待确定心血管疾病潜在不适当处方风险的电子病历进行预处理;
[0084]
风险预警模块,采用基于本发明的确定心血管疾病潜在不适当处方的风险预警模型的方法所确定的风险预警模型,并根据所述预处理模块输入的数据,进行pip、pim和ppo的风险预警。
[0085]
在实施时,如图11所示,为了方便患者的电子病历数据的输入,本发明还提供电子病历数据输入界面模块,该输入界面内包含表1中x1、x2、x3、x4、x5、x6、x7、x8、x9、x10、x11、x12、x13、x14、x15、x16、x17、x18、x19、x20、x21、x22等变量的输入栏,而数据预处理模块用于对输入的变量数据进行预处理,得到数据集,然后,由风险预警模块对数据集运算处理,进而实现对该患者的心血管疾病潜在不适当处方的风险预警。
[0086]
下面结合5种数据采样方法和17种机器学习算法,对本发明的技术方案作出进一步详细地阐述:
[0087]
不采样:不对数据采样,将原始数据输入模型;
[0088]
随机上采样:随机复制标签类型较少的数据,使得正负样本数量一致;
[0089]
随机下采样:随机删除标签类型较多的数据,使得正负样本数量一致;
[0090]
smote上采样:
[0091]
使用合成少数类上采样技术对少数类样本进行分析,并合成该类的新样本添加到数据集中。具体算法流程如下:
[0092]
对于少数类中每个样本x,以欧氏距离为标准计算它到少数类样本集中的所有样本的距离,得到其k近邻。
[0093]
根据样本不平衡比例设置一个采样比例以确定采样倍率n,对于每一个少数类样本x,从其k近邻中随机选择若干个样本。假设选择的近邻为xn。
[0094]
对于每个随机选择的近邻xn,分别与原样本构建新的样本:
[0095]
x
new
=x rand(0,1)(x-xn)
[0096]
borderline smote上采样:
[0097]
borderline smote算法通过边界上少数类样本合成新样本,从而改善样本类别的分布。borderline smote采样将少数类样本分为3类,分别为safe、danger和noise,仅对danger的少数类样本过采样,如图12所示。
[0098]
adaboost:自适应提升算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2,如此重复进行,直到弱学习器
数达到事先指定的数目t,最终将这t个弱学习器通过集合策略进行整合,得到最终的强学习器。
[0099]
给定一个训练数据集t={(x1,y1),(x2,y2)......(xn,yn)},其中实例x∈χ,而实例空间yi属于标记集合{-1, 1},adaboost的目的就是从训练数据中学习一系列弱分类器或基本分类器,然后将这些弱分类器组合成一个强分类器。
[0100]
adaboost的算法流程如下:
[0101]
步骤1:首先,初始化训练数据的权值分布,每一个训练样本最开始时都被赋予相同的权重:1/n,
[0102][0103]
步骤2:进行多轮迭代,用i=1,2,
……
,n表示迭代的第多少轮:
[0104]
a.使用具有权值分布dm的训练数据集学习,得到基本分类器:
[0105]gm
(x):χ
→
{-1, 1}
[0106]
b.计算gm(x)在训练数据集上的分类误差率
[0107][0108]
由上述式子可知,gm(x)在训练数据集上的误差率em就是被gm(x)误分类样本的权值之和;
[0109]
c.计算gm(x)的系数,am表示gm(x)在最终分类器中的重要程度,目的为得到基本分类器中所占的权重;
[0110][0111]
由上述式子可知,时,am≥0,且am随着em的减小而增大,意味着分类误差率越小的基本分类器在最终分类器中的作用越大;
[0112]
d.更新训练数据集的权值分布,目的为得到样本的新的权值分布,用于下一轮迭代:
[0113]dm 1
=(w
m 1,1
,w
m 1,2
……wm 1,i
……
,w
m 1,n
),
[0114][0115]
使得被基本分类器gm(x)误分类样本的权值增大,而被正确分类样本的权值减小,就这样,通过这样的方式,adaboost方式能“聚焦于”较难分的样本上;
[0116]
其中,zm是规范化因子,dm 1为一个概率分别:
[0117][0118]
步骤3:组合各个弱分类器:
[0119]
[0120]
从而得到最终分类器,如下:
[0121][0122]
bagging:与其他算法结合使用,以提高其准确性和稳定性,以及避免过拟合。原理为分别构造多个弱学习器,并且多个弱学习器彼此平行,并且可以同时进行训练,最终组合多个弱学习器。bagging适用于低偏差和高方差的模型,输入为样本集d={(x,y1),(x2,y2),
……
(xm,ym)}d={(x,y1),(x2,y2),
……
(xm,ym)},弱学习器算法,弱分类器迭代次数t;
[0123]
输出为最终的强分类器f(x)f(x)
[0124]
1、对于t=1,2,
……
,t:
[0125]
a:对训练集进行第t次随机采样,共采集m次,得到包含m个样本的采样集dtdt
[0126]
b:用采样集dtdt训练第t个弱学习器gt(x)gt(x)
[0127]
2、如果是分类算法预测,则t个弱学习器投出最多票数的类别或者类别之一为最终类别;如果是回归算法,t个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。
[0128]
朴素贝叶斯算法是一种基于贝叶斯定理的分类方法。从训练数据中学习联合概率分布,然后得出后验概率分布,包括伯努利朴素贝叶斯、高斯朴素贝叶斯、多项式分布朴素贝叶斯。
[0129]
引入贝叶斯定理为:
[0130]
其中,(x,y)表示特征变量,ci表示分类,p(ci|x,y)表示在特征为(x,y)的情况下分入类别ci的概率,因此,结合条件概率和贝叶斯定理有:
[0131]
1:如果p(c1|x,y)>p(c2,|x,y),那么分类应当属于类别c1;
[0132]
2:如果p(c1|x,y)<p(c2,|x,y),那么分类应当属于类别c2,
[0133]
bernoulli naive_bayes:模型适用于多元伯努利分布,即每个特征都是二值变量,如果不是二值变量,该模型可以先对变量进行二值化,在文档分类中特征是单词是否出现,如果该单词在某文件中出现了即为1,否则为0。在文本分类的示例中,统计词语是否出现的向量而非统计词语出现次数的向量可以用于训练和使用这个分类器。bernoulli nb可能在一些数据集上表现得更好,特别是那些更短的文档。
[0134]
gaussian_naive_bayes:适用于连续变量,假定各个特征xi在各个类别y下是服从正态分布的,算法内部使用正态分布的概率密度函数来计算概率:
[0135][0136]
μy:在类别为y的样本中,特征xi的均值;
[0137]
σ2y:在类别为y的样本中,特征xi的标准差。
[0138]
multinomial naive bayes:实现了服从多项分布数据的朴素贝叶斯算法,也适用于文本分类的两大经典朴素贝叶斯分类算法之一,往往以词向量表示,分布参数由每个x的θ=(θ1,θ2,
……
,θn)向量决定,n代表特征的数量,文本分类中即词汇量的大小,θi是属于
特征i的概率p(xi|c),θi由平滑过的最大似然估计来估计,相对频率计数:
[0139]
式中,nci是特征i在类c中出现的次数,ny是c中所有特征出现总数。
[0140]
decision tree:决策树是一种基本机器学习算法。分类数据使用分类决策树,连续数据则使用回归决策树。模型具有易读性和分类速度。最常用的决策树算法包括id3,c4.5和cart。
[0141]
信息增益表示得知特征xj的信息而使所属分类的不确定性减少的程度;
[0142]
g(d,a)=h(d)-h(d|a)
[0143]
特征a对训练数据集d的信息增益g(d,a),定义为集合d的经验熵h(d)与特征a给定的情况下d的经验条件熵h(d|a)之差;
[0144]
假设数据集d有k种分类,特征a有n种取值可能。其中数据集d的经验熵h(d)为
[0145][0146]
其中pk为集合d中的任一样本数据分类k的概率,或者说属于分类k的样本所占的比例。
[0147]
经验条件熵h(d|a)为:
[0148]
也可记作
[0149]
其中pi为特征取值为第i个可取值的概率。di为特征a为第i个可取值的样本集合。
[0150]
信息增益越大,使用属性a来进行划分所获得的
″
纯度提升
″
越大。因此,可以用信息增益来进行决策树的划分属性选择。id3决策树学习算法就是以信息增益为准则来选择划分属性。
[0151]
extra tree:et或extra-trees算法与随机森林算法十分相似,都是由许多决策树构成。
[0152]
extra tree使用的所有的样本,只是特征是随机选取的,因为分裂是随机的,所以比随机森林得到的结果更好。
[0153]
gradient_boosting:gradient boosting与adaboost都是使学习器在每一轮训练中都更加注意上一轮学习不正确的样本,不同的是,gradient boosting使用负梯度来衡量学习器,在下一轮学习中通过拟合负梯度纠正上一轮中的错误,使模型更耐噪音,具体如下;
[0154]
1、初始化
[0155][0156]
其中γ为基学习器叶子节点对应的输出值。
[0157]
2、for m=1 to m:
[0158]
(a)计算负梯度:i=1,2
……n[0159]
(b)通过最小化平方误差,用基学习器hm(x)拟合
[0160]
(c)使用line search确定步长ρm,以使l最小,
[0161]
(d)fm(x)=f
m-1
(x) ρ
mhm
(x;wm)
[0162]
3、输出fm(x)
[0163]
knn:k-最近邻算法,算法思想是一个样本与数据集中的k个样本最相似,如果这k个样本中的大多数属于某一类别,则该样本也属于某一类别。
[0164]
在knn中,通过计算对象间距离来作为各个对象之间的非相似性指标,避免了对象之间的匹配问题,在这里距离一般使用欧氏距离或曼哈顿距离:
[0165]
欧氏距离:曼哈顿距离:
[0166]
式中,(x,y)为两个样本;n为维度;(xk,yk)为(x,y)在第k个维度上的特征值。
[0167]
lda:线性判别分析算法属于有监督的算法。原始数据投影到低维空间中,并把同类数据汇总,不同类数据分散。
[0168]
假设数据集d={(x1,y1),(x2,y2),
……
,((xm,ym))},其中任意样本xi为n维向量,yi∈{0,1}。定义nj(j=0,1)为第j类样本的个数,xj(j=0,1)为第j类样本的集合,而μj(j=0,1)为第j类样本的均值向量,定义∑j(j=0,1)为第j类样本的缺少分母部分的协方差矩阵。
[0169]
μj的表达式为:
[0170]
∑j的表达式为:∑j=∑
χ∈xj
(χ-μj)(χ-μj)
t
(j=0,1)
[0171]
由于是两类数据,因此只需要将数据投影到一条直线上即可。假设投影直线是向量w,则对任意一个样本xi,它在直线w的投影为w
t
xi,对于两个类别的中心点μ0,μ1,在直线w的投影为w
t
μ0和w
t
μ1。由于lda需要让不同类别的数据的类别中心之间的距离尽可能的大,最大化||w
t
μ0-w
t
μ1||22,同时同一种类别数据的投影点尽可能的接近,也就是要同类样本投影点的协方差w
t
∑0w和w
t
∑1w尽可能的小,即最小化w
t
∑0w w
t
∑1w,优化目标为:
[0172][0173]
一般定义类内散度矩阵sw为:
[0174][0175]
同时定义类间散度矩阵sb为:
[0176][0177]
这样优化目标重写为:
[0178][0179]
logistic_regression:logistic回归为概率型非线性回归模型,是研究二分类观察结果与影响因素之间关系的一种多变量分析方法。
[0180]
考虑具有n个独立变量的向量x=(x1,x2,......,xn),设条件概率p(y=1|x)=p为
根据观测量相对于某事件x发生的概率。那么logistic回归模型可以表示为:
[0181][0182]
所以事件发生与不发生的概率之比为:
[0183][0184]
这个比值称为事件的发生比,简记为odds。对odds取对数得到:
[0185][0186]
在分类情形下,经过学习后的lr分类器是一组权值ω0,ω1,......,ωn。
[0187]
passive_aggressive:经典的online线性分类器被动攻击算法可以不断集成新样本以调整分类模型并增强其分类能力。
[0188]
qda:二次判别分析算法与lda相似,它将lda推广到类间协方差矩阵不同的情况。为了使qda分类器产生高的分类性能,需要对协方差矩阵进行准确的估计。
[0189]
先确定每个类别的中点,然后让式子的取值最大:
[0190]
random_forest:随机森林主要是把多个决策树进行整合从而进行分类,假设训练集中n个样本,每个样本有d个特征,需要训练一个包含t棵数的随机森林,具体的算法流程如下所示:
[0191]
1、对于t棵决策树,分别重复如下操作:a、使用bootstrap抽样,从训练集d获得大小为n的训练集d;b、从d个特征中随机选取m;
[0192]
2、如果是回归问题,则最后的输出是每个树输出的均值;
[0193]
3、如果是分类问题,则根据投票原则,确定最终的类别;
[0194]
每棵树的生成都是随机的,至于随机选取的特征数,如何决定随机选取的特征数的大小,主要有两种方法,一种是交叉验证,另外一种的经验性设置。
[0195]
sgd:使用随机梯度下降算法将目标函数f(x)最小化,该算法沿梯度矢量的相反方向进行迭代以获得函数的极值点。通常,sgd是最简单,最实用的方法,但是收敛速度稍慢。
[0196]
svm:支持向量机是一个二分类模型。它是在具有最大间隔的特征空间上定义的。支持向量在确定分离超平面中起关键作用。对于任意一个超平面,其两侧数据点都距离它有一个最小距离为垂直距离,这两个最小距离的和就是间隔。margin越大犯错的几率越小,也就是更具鲁棒性,为对于未知样本点的分类效果好,不会轻易被扰,是更可信的,表达式为:
[0197]wt
x b=0
[0198]
其中,w={w1;w2;
……
;wd}是一个法向量,决定了超平面的方向,d是特征值的个数。
[0199]
x为训练样本;b为位移项,决定了超平面与原点之间的距离。
[0200]
只要确定了法向量w和位移b,就可以唯一地确定一个划分超平面。划分超平面和它两侧的边际超平面上任意一点的距离为
[0201]
利用一些数学推导,公式yi
×
(w0 w1x1 w2x2)≥1,可变为有限制的凸优化问题:
[0202][0203]
此方程就代表了边际最大化的划分超平面,其中i是支持向量点的个数,因为大部分的点并不是支持向量点,只有个别在边际超平面上的点才是支持向量点。只对属于支持向量点的进行求和;||w||为超平面的范数;xi为支持向量点的特征值;yi是支持向量点xi的类别标记,比如 1还是-1;x
t
为要测试的实例,把它带入该方程;αi和b0都是单一数值型参数,由以上提到的最优算法得出,αi是拉格朗日乘数。
[0204]
每当有新的测试样本x,将它带入该方程,看该方程的值是正还是负,根据符号进行归类。
[0205]
xgboost:xgboost兼具线性规模求解器和树学习算法,是gbdt算法上的改进,更加高效。传统的gbdt方法只利用了一阶的导数信息,xgboost则是对损失函数做了二阶的泰勒展开,可以更为精准的逼近真实的损失函数,并在目标函数之外加入了正则项,整体求最优解,用于权衡目标函数的下降和模型的复杂程度,避免过拟合,提高模型的求解效率。
[0206]
以上实施例仅用以说明本发明而并非限制本发明所描述的技术方案,尽管本说明书参照上述的各个实施例对本发明已进行了详细的说明,但本发明不局限于上述具体实施方式,因此任何对本发明进行修改或等同替换;而一切不脱离发明的精神和范围的技术方案及其改进,其均涵盖在本发明的权利要求范围当中。
转载请注明原文地址:https://tc.8miu.com/read-3176.html