一种基于改进的f-score的妊高症预测方法
技术领域
1.本发明涉及妊高症预测领域,尤其涉及一种基于改进的f-score的妊高症预测方法。
背景技术:
2.妊高症是产科多见的并发症,对于孕妇来说,如果怀孕后得了妊高症,首先病情比较轻的会出现腿部浮肿,蛋白尿的现象,但是一些孕妇不在意,不加以治疗的话,病情加重对于孕妇的危险也是大大增加的,比如会出现头痛,视力模糊,有的孕妇在生育之前还会出现子痫的情况,甚至会全身抽搐,昏迷。
3.早期的一些临床检测手段效率低下,身体检测不能快速地获得导致疾病或者未来可能导致疾病的身体因素,并且还需要大量的人力和财力,无论对于医院还是病人不能有效、及时的发现疾病是非常可怕的。
4.在基于临床数据的一些单模型预测方法在妊高症的问题上起到了有效的预防作用,但单一的传统模型泛化性能比较差,预测结果不够准确。
技术实现要素:
5.本发明的目的在于公开了一种基于改进的f-score的妊高症预测方法,解决单一的传统模型泛化性能比较差,预测结果不够准确的技术问题。
6.为达到上述目的,本发明采用如下技术方案:
7.一种基于改进的f-score的妊高症预测方法,包括:
8.s1,采用改进的f-score特征选择算法分别计算妊高症患者的特征集合中的每个特征的 f-score的值;
9.s2,将f-score的值大于预设的选择阈值的所有特征作为最优特征,所有最优特征组成训练集;
10.s3,使用训练集对stacking模型中的k个clfl机器学习模型进行训练,获得k个经过训练的机器学习模型;
11.s4,将训练集中的每个最优特征分别输入到k个经过训练的机器学习模型中进行预测,获得k个预测结果,对k个预测结果取平均值,获得训练集中的每个特征的最终预测结果;
12.s5,基于所述最终预测结果,使用遗传算法对k个经过训练的机器学习模型进行筛选,获得n个最佳的模型组合;
13.s6,将n个最佳的模型组合对训练集的预测结果作为stacking模型第二层逻辑回归的输入,通过第二层逻辑回归输出对妊高症患者患病概率的预测值。
14.作为优选,所述s1包括:
15.使用如下公式分别计算妊高症患者的特征集合中的每个特征的f-score的值:
[0016][0017]
式中,f(i)表示第i个特征的f-score的值,表示第i个特征在少数类上的平均值,表示第i个特征在多数类上的平均值,代表第i个特征在整个数据集上的平均值,n
+
代表正类的样本大小,为第k个少数类类样本点的第i个特征的特征值。
[0018]
作为优选,所述s3包括:
[0019]
使用kflod将训练集切分成k个子集,每一个子集包括一个验证集和一个测试集;
[0020]
对于clfl机器学习模型,使用其中的k-1个子集对clfl机器学习模型进行训练,使用剩余的一个子集对训练结果进行验证。
[0021]
作为优选,所述s5包括:
[0022]
所述遗传算法使用二进制编码的形式;
[0023]
使用所述遗传算法分别为经过训练的k个机器学习模型产生初始种群,然后通过随机产生的多个交叉点进行多点交叉,在交叉后的二进制码上选择多个点位进行二进制变换的变异操作,二级制变换包括0变1或1变0,将二进制中为1所对应的模型取出来,为0的模型舍弃;
[0024]
对k个经过训练的机器学习模型的所有组合进行上述遗传算法的交叉变异选择,然后每次将组合作为stacking第二层也就是逻辑回归的输入,用临床妊高症数据训练第一层学习器,然后将第一层kflod验证集上的预测结果堆叠起来作为第二层逻辑回归的训练集,第一层kflod测试集的预测结果的平均值作为第二层逻辑回归的测试集再次进行预测,获得预测结果;
[0025]
对预测结果从大到小进行排序,获得排名靠前的n个最佳的模型组合。
[0026]
本发明具有如下的有益效果:
[0027]
1.本发明采用改进的f-score特征选择,保证了医学数据的真实性,减少了特征冗余,从而有效地解决数据不平衡的问题。
[0028]
2.本发明采用了stacking模型融合的方法集成了不同的学习器,增加了对医学数据预测结果的泛化性和表现力。
[0029]
3.本发明采用了遗传算法改进了stacking第一层模型的结构,避免了效果不好的分类器对其他分类器带来不好的影响,减少了模型过多带来的冗余,预测结果得到了提升,减少了人工筛选模型组合效率低下的问题。
附图说明
[0030]
利用附图对本发明作进一步说明,但附图中的实施例不构成对本发明的任何限制,对于本领域的普通技术人员,在不付出创造性劳动的前提下,还可以根据以下附图获得其它的附图。
[0031]
图1,为本发明一种基于改进的f-score的妊高症预测方法的一种示例性实施例图。图2,为本发明所采用的stacking的原理示意图。
具体实施方式
[0032]
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
[0033]
如图1所示的一种实施例,本发明提供了一种基于改进的f-score的妊高症预测方法,包括:
[0034]
s1,采用改进的f-score特征选择算法分别计算妊高症患者的特征集合中的每个特征的 f-score的值;
[0035]
s2,将f-score的值大于预设的选择阈值的所有特征作为最优特征,所有最优特征组成训练集;
[0036]
s3,使用训练集对stacking模型中的k个clfl机器学习模型进行训练,获得k个经过训练的机器学习模型;
[0037]
s4,将训练集中的每个最优特征分别输入到k个经过训练的机器学习模型中进行预测,获得k个预测结果,对k个预测结果取平均值,获得训练集中的每个特征的最终预测结果;
[0038]
s5,基于所述最终预测结果,使用遗传算法对k个经过训练的机器学习模型进行筛选,获得n个最佳的模型组合;
[0039]
s6,将n个最佳的模型组合对训练集的预测结果作为stacking模型第二层逻辑回归的输入,通过第二层逻辑回归输出对妊高症患者患病概率的预测值。
[0040]
具体的,妊高症患者的特征集合为某一年内在医院分娩的孕妇的孕期及产后的分娩情况的特征的集合。
[0041]
这些特征可以包括孕前体重、地贫、首次产检血糖fpg、尿蛋白、g6pd去发证、hb-测a1c值、隐藏性肾炎、流产次数、怀孕次数、年龄、是否属于肥胖症患者、糖化血红蛋白、末次月经时间等。
[0042]
stacking原理如图2所示。
[0043]
作为优选,所述s1包括:
[0044]
使用如下公式分别计算妊高症患者的特征集合中的每个特征的f-score的值:
[0045][0046]
式中,f(i)表示第i个特征的f-score的值,表示第i个特征在少数类上的平均值,表示第i个特征在多数类上的平均值,代表第i个特征在整个数据集上的平均值, n
+
代表正类的样本大小,为第k个少数类类样本点的第i个特征的特征值。
[0047]
在改进的f-score特征选择公式中,分子可看作二分类样本的近似类间距离之和,而分母表示少数类内样本的协方差。故而分子越大,表示该特征在多数类和少数类中的类间距离越大,在二分类上就具有更好的区分性,而分母越小,意味着每一个求和项越小,少数类样本集整体样本的第i个特征取值和第i个特征在少数类上的平均值越接近,即少
数类样本在该特征维度上围绕密集分布,因此f-score的值越大,代表该特征在二类问题上分类能力更强,同时识别出少数类的能力更好。
[0048]
作为优选,所述s3包括:
[0049]
使用kflod将训练集切分成k个子集,每一个子集包括一个验证集和一个测试集;
[0050]
对于clfl机器学习模型,使用其中的k-1个子集对clfl机器学习模型进行训练,使用剩余的一个子集对训练结果进行验证。
[0051]
比如对于集成的第一个机器学习模型clf1,使用kflod交叉验证,那么可以得到k个clf1 的模型,模型的类型是一样的,但是模型里面学到的参数不一样,因为他们的训练集是不一样的,对于每一折的训练,还对应有一个验证集,那么就用训练得到的模型在验证机上做一次预测,这时验证集只有一份,也就是只有train_set_number/k个样本(train_set_number 表示训练样本的个数),但是这只是一折,一共有k折,每一折都会在验证集上预测,所以最终对于clf1在验证集上得到的就是train_set_number个结果,然后在每一折上的测试集做一次预测,那么k个clf1模型预测k次得到了k个结果,也就是每一个样本预测结果有k个,然后就取一下平均,这样取完平均厚每一个样本在clf1模型上就得到一个预测结果,
[0052]
这只是一个模型的过程,因为要集成多个模型,那么就重复n个模型和上面做法一样,然后这n个模型的出来的结果又可以作为特性训练第二层的输入,本发明第二层使用逻辑回归在第一层输出的数据上面再做预测,最终输出预测结果,这就是stacking的整个过程。
[0053]
本发明中的stacking初始是用10个不同的模型作为clf1,这时就对第一层的结果来说就是一个特征堆叠的方法,这样第一层出来的结果又可以作为特征训练第二层。因为模型个数较多,模型包含的参数也很多,本发明采用网格搜索的方法得到了stacking中各模型的最优参数,最终通过stacking模型融合解决了单个模型泛化性差的问题。
[0054]
作为优选,所述s5包括:
[0055]
所述遗传算法使用二进制编码的形式;
[0056]
使用所述遗传算法分别为经过训练的k个机器学习模型产生初始种群,然后通过随机产生的多个交叉点进行多点交叉,在交叉后的二进制码上选择多个点位进行二进制变换的变异操作,二级制变换包括0变1或1变0,将二进制中为1所对应的模型取出来,为0的模型舍弃;
[0057]
对k个经过训练的机器学习模型的所有组合进行上述遗传算法的交叉变异选择,然后每次将组合作为stacking第二层也就是逻辑回归的输入,用临床妊高症数据训练第一层学习器,然后将第一层kflod验证集上的预测结果堆叠起来作为第二层逻辑回归的训练集,第一层kflod测试集的预测结果的平均值作为第二层逻辑回归的测试集再次进行预测,获得预测结果;
[0058]
对预测结果从大到小进行排序,获得排名靠前的n个最佳的模型组合。
[0059]
对stacking第一层中不同的k个机器学习模型采用了二进制编码的形式,并且无需将二进制再次解码,而是将二进制每一个对应位看做一个模型,然后通过交叉、变异来对模型进行筛选,并将s4获得的预测结果作为适应度函数选择更新每一代的模型组合,最终使预测结果的准确率有效得到提升,解决了stacking中模型冗余的问题,解决了人工手动
挑选模型组合的问题,并且提高了预测精度。
[0060]
所述的stacking模型融合中在第一层模型的参数选择上使用了网格搜索的方法,在模型组合的选择上使用了遗传算法使得无需考虑模型之间的关系和耦合,遗传算法自动地选择出了能使预测结果最大化的模型组合,解决了人工动手选择模型效率低下的问题,同时解决了模型冗余的问题。
[0061]
在stacking模型融合的第一层采用遗传算法筛选更好的模型组合,因为并不是模型越多结果就越好,往往不好的模型还会影响到其他模型,但是通过手动选取模型的方式效率极低,因此在这里采用了遗传算法的方法从k个机器学习模型中筛选出了最佳的机器学习模型组合来作为最终模型。遗传算法采用了二进制编码的形式,为k个基分类器也就是k个不同的机器学习模型产生初始种群,然后通过随机产生的多个交叉点进行多点交叉,在交叉后的二进制码上选择多个点位进行二进制变换(0变1或1变0)的变异操作,最终将二进制中为1所对应的模型取出来,为0的模型舍弃,将auc值,即s4的获得的数据作为遗传算法的适应度函数值进行类似于轮盘赌的概率选择方法,因为预测结果正好是一个处于0到1之间的一个值,那么就将这个预测结果看作一个概率,那么预测结果好的显然被选中的概率就大,预测结果差的虽然概率小但也有可能被选中,这样可以在选出更好的预测结果的同时增强结果的多样性。更好的跳出局部选择出新个体即新的二进制组合,这样不断遍历下去,也就是选择出好的结果后再进行交叉变异(0变1,1变0),1代表该模型被选中,0代表该模型没有被选中,再得到结果。
[0062]
最终从k个模型也就是k个不同的机器学习模型组合中通过上述遗传算法的交叉变异选择,然后每次将他们的组合最为stacking第二层也就是逻辑回归的输入再进行预测,最终得到两个模型组合的预测结果是最好的(adaboost和gaussian_process),筛选出n个最佳的模型组合,将这n个模型的预测作为第二层逻辑回归的输入,通过第二层的逻辑回归输出了对妊高症患者的预测。
[0063]
本发明具有如下的有益效果:
[0064]
1.本发明采用改进的f-score特征选择,保证了医学数据的真实性,减少了特征冗余,从而有效地解决数据不平衡的问题。
[0065]
2.本发明采用了stacking模型融合的方法集成了不同的学习器,增加了对医学数据预测结果的泛化性和表现力。
[0066]
3.本发明采用了遗传算法改进了stacking第一层模型的结构,避免了效果不好的分类器对其他分类器带来不好的影响,减少了模型过多带来的冗余,预测结果得到了提升,减少了人工筛选模型组合效率低下的问题。
[0067]
尽管已经示出和描述了本发明的实施例,本领域技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变形,本发明的范围由权利要求及其等同物限定。
[0068]
需要说明的是,在本发明各个实施例中的各功能单元/模块可以集成在一个处理单元/模
[0069]
块中,也可以是各个单元/模块单独物理存在,也可以是两个或两个以上单元/模块集成在一个单元/模块中。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件功能单元/模块的形式实现。
[0070]
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解应当理解,可以以硬件、软件、固件、中间件、代码或其任何恰当组合来实现这里描述的实施例。对于硬件实现,处理器可以在一个或多个下列单元中实现:专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、处理器、控制器、微控制器、微处理器、设计用于实现这里所描述功能的其他电子单元或其组合。对于软件实现,实施例的部分或全部流程可以通过计算机程序来指令相关的硬件来完成。
[0071]
实现时,可以将上述程序存储在计算机可读介质中或作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是计算机能够存取的任何可用介质。计算机可读介质可以包括但不限于ram、rom、eeprom、cd-rom或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。
技术特征:
1.一种基于改进的f-score的妊高症预测方法,其特征在于,包括:s1,采用改进的f-score特征选择算法分别计算妊高症患者的特征集合中的每个特征的f-score的值;s2,将f-score的值大于预设的选择阈值的所有特征作为最优特征,所有最优特征组成训练集;s3,使用训练集对stacking模型中的k个clfl机器学习模型进行训练,获得k个经过训练的机器学习模型;s4,将训练集中的每个最优特征分别输入到k个经过训练的机器学习模型中进行预测,获得k个预测结果,对k个预测结果取平均值,获得训练集中的每个特征的最终预测结果;s5,基于所述最终预测结果,使用遗传算法对k个经过训练的机器学习模型进行筛选,获得n个最佳的模型组合;s6,将n个最佳的模型组合对训练集的预测结果作为stacking模型第二层逻辑回归的输入,通过第二层逻辑回归输出对妊高症患者患病概率的预测值。2.根据权利要求1的一种基于改进的f-score的妊高症预测方法,其特征在于,所述s1包括:使用如下公式分别计算妊高症患者的特征集合中的每个特征的f-score的值:式中,f(i)表示第i个特征的f-score的值,表示第i个特征在少数类上的平均值,表示第i个特征在多数类上的平均值,代表第i个特征在整个数据集上的平均值,n
+
代表正类的样本大小,为第k个少数类类样本点的第i个特征的特征值。3.根据权利要求1的一种基于改进的f-score的妊高症预测方法,其特征在于,所述s3包括:使用kflod将训练集切分成k个子集,每一个子集包括一个验证集和一个测试集;对于clfl机器学习模型,使用其中的k-1个子集对clfl机器学习模型进行训练,使用剩余的一个子集对训练结果进行验证。4.根据权利要求1的一种基于改进的f-score的妊高症预测方法,其特征在于,所述s5包括:所述遗传算法使用二进制编码的形式;使用所述遗传算法分别为经过训练的k个机器学习模型产生初始种群,然后通过随机产生的多个交叉点进行多点交叉,在交叉后的二进制码上选择多个点位进行二进制变换的变异操作,二级制变换包括0变1或1变0,将二进制中为1所对应的模型取出来,为0的模型舍弃;对k个经过训练的机器学习模型的所有组合进行上述遗传算法的交叉变异选择,然后每次将组合作为stacking第二层也就是逻辑回归的输入,用临床妊高症数据训练第一层学习器,然后将第一层kflod验证集上的预测结果堆叠起来作为第二层逻辑回归的训练集,第
一层kflod测试集的预测结果的平均值作为第二层逻辑回归的测试集再次进行预测,获得预测结果;对预测结果从大到小进行排序,获得排名靠前的n个最佳的模型组合。
技术总结
本发明提供了一种基于改进的F-Score的妊高症预测方法,包括先采用改进的F-Score特征选择算法从妊高症患者的特征集合中选出最优特征,所有最优特征组成训练集;然后使用训练集对Stacking模型中的机器学习模型进行训练,获得经过训练的机器学习模型;使用经过训练的机器学习模型对训练集中的特征进行预测,获得预测结果;基于所述最终预测结果,使用遗传算法对经过训练的机器学习模型的组合进行筛选,获得最佳的模型组合;将最佳的模型组合对训练集的预测结果作为Stacking模型第二层逻辑回归的输入,通过第二层逻辑回归输出对妊高症患者患病概率的预测值。本发明有效地解决数据不平衡的问题,增加了对医学数据预测结果的泛化性和表现力。性和表现力。性和表现力。
技术研发人员:曾衍瀚 侯明江 林培东 吕明瑞 陈伟坚 李志贤 陈咏森
受保护的技术使用者:广州大学
技术研发日:2021.12.13
技术公布日:2022/3/8