发明名称 II型糖尿病发病概率分层预测方法
摘要 本发明涉及一种II型糖尿病发病概率分层预测方法,属于生物信息处理技术领域。本发明首先对Ⅱ型糖尿病人群进行风险等级判定,然后对不同风险等级人群采用包装法进行属性选择,选择出关键发病危险属性;然后利用朴素贝叶斯算法,计算出个体初始发病概率;个体初始发病概率与单步转移矩阵构建马尔可夫链,从而建立针对不同风险等级人群的Ⅱ型糖尿病发病概率预测系统。与现有技术相比,本发明在进一步提升II型糖尿病发病概率预测准确率的同时,可以根据不同个体输入的数据选择对应风险等级的预测模型,预测多年内的发病概率,处理速度快。能够达到对Ⅱ型糖尿病早发现、早重视、提前干预,降低(或延缓)Ⅱ型糖尿病发生的目的。
申请公布号 CN103150611A 申请公布日期 2013.06.12
申请号 CN201310073852.9 申请日期 2013.03.08
申请人 北京理工大学 发明人 罗森林;赵海秀;潘丽敏;郭伟东;张铁梅
分类号 G06Q10/04(2012.01)I;G06Q50/22(2012.01)I 主分类号 G06Q10/04(2012.01)I
代理机构 代理人
主权项 1.一种II型糖尿病发概率分层预测方法,其特征在于,包括如下步骤:步骤1,将N个被评估对象作为样本集S,其中每个对象包含M个影响2型糖尿病发病的关键属性;将关键属性作为列,不同样本对应的属性值作为行,建立样本集S的矩阵表示[s<sub>(a+c)b</sub>];采用包装法中朴素贝叶斯学习算法对样本集进行属性选择,选择出影响II型糖尿病发病的J维属性。步骤2,求解初始状态向量。具体过程如下:步骤2.1,利用风险状态判定系统对人群进行风险状态判定,判定为无风险、低风险、中风险或高风险4个风险等级中的一种。基于模型复杂程度的考虑,将低风险和中风险人群合并,统称为低中风险人群,并且无风险、低中风险和高风险作为数据的分类的类别变量,在本文中分别使用类别C<sub>i</sub>(0、1、2)表示。步骤2.2,在步骤2.1的基础上,将属性选择输出的J维属性作为求解初始状态向量的输入,基于朴素贝叶斯算法,求解初始状态向量。具体方法为:步骤2.2.1,计算先验概率<maths num="0001"><![CDATA[<math><mrow><mi>P</mi><mrow><mo>(</mo><msub><mi>C</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>=</mo><mfrac><msub><mi>S</mi><mi>i</mi></msub><mi>S</mi></mfrac></mrow></math>]]></maths>其中P(C<sub>i</sub>)为先验概率,表示风险等级为i的概率。训练样本是对整体的一个随机抽样,可以通过统计训练数据得到该概率,其中N<sub>i</sub>表示状态为i的样本个数,N表示样本的总个数。步骤2.2.2,计算关键J个属性中第k个属性X<sub>k</sub>对于类别C<sub>i</sub>的作用程度P(X<sub>k</sub>|C<sub>i</sub>)。这个要分两种情况分别进行说明。如果属性为离散属性,则用公式<img file="FDA00002896628400012.GIF" wi="350" he="131" />进行计算,其中S<sub>ki</sub>表示第k属性在类别C<sub>i</sub>中的个数,而S<sub>i</sub>表示类别C<sub>i</sub>的总个数。如果属性为连续属性,则统计第k属性在类别C<sub>i</sub>中的均值和方差,计算该属性在对应类型的作用贡献程度,其中<img file="FDA00002896628400015.GIF" wi="77" he="67" />和<img file="FDA00002896628400016.GIF" wi="79" he="67" />分别为均值和方差,具体计算公式如下所示。<maths num="0002"><![CDATA[<math><mrow><mi>P</mi><mrow><mo>(</mo><msub><mi>X</mi><mi>k</mi></msub><mo>|</mo><msub><mi>C</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>=</mo><mi>g</mi><mrow><mo>(</mo><msub><mi>X</mi><mi>k</mi></msub><mo>,</mo><msub><mi>&mu;</mi><msub><mi>C</mi><mi>i</mi></msub></msub><mo>,</mo><msub><mi>&sigma;</mi><msub><mi>C</mi><mi>i</mi></msub></msub><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><msqrt><mn>2</mn><mi>&pi;</mi><msub><mi>&sigma;</mi><msub><mi>C</mi><mi>i</mi></msub></msub></msqrt></mfrac><msup><mi>e</mi><mrow><mo>-</mo><mfrac><msup><mrow><mo>(</mo><msub><mi>X</mi><mi>k</mi></msub><mo>-</mo><msub><mi>&mu;</mi><msub><mi>C</mi><mi>i</mi></msub></msub><mo>)</mo></mrow><mn>2</mn></msup><mrow><mn>2</mn><msubsup><mi>&sigma;</mi><msub><mi>C</mi><mi>i</mi></msub><mn>2</mn></msubsup></mrow></mfrac></mrow></msup></mrow></math>]]></maths>步骤2.2.3,计算所有属性在对于类别C<sub>i</sub>总的作用程度P(X|C<sub>i</sub>)。各个属性之间是相对相互独立的,则总贡献计算公式为<maths num="0003"><![CDATA[<math><mrow><mi>P</mi><mrow><mo>(</mo><mi>X</mi><mo>|</mo><msub><mi>C</mi><mi>j</mi></msub><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Pi;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><mi>P</mi><mrow><mo>(</mo><msub><mi>X</mi><mi>k</mi></msub><mo>|</mo><msub><mi>C</mi><mi>j</mi></msub><mo>)</mo></mrow></mrow></math>]]></maths>其中P(X<sub>k</sub>|C<sub>i</sub>)是第k属性对于类别C<sub>i</sub>的作用程度。步骤2.2.4,计算初始状态向量P(C<sub>i</sub>|X)。把训练样本X分到它所作用总的程度最大的类别中去。也就是分到P(C<sub>i</sub>|X)最大的类别C<sub>i</sub>中去。具体计算公式如下所示:<maths num="0004"><![CDATA[<math><mrow><mi>P</mi><mrow><mo>(</mo><msub><mi>C</mi><mi>j</mi></msub><mo>|</mo><mi>X</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mi>P</mi><mrow><mo>(</mo><mi>X</mi><mo>|</mo><msub><mi>C</mi><mi>j</mi></msub><mo>)</mo></mrow><mo>*</mo><mi>P</mi><mrow><mo>(</mo><msub><mi>C</mi><mi>j</mi></msub><mo>)</mo></mrow></mrow><mrow><mi>P</mi><mrow><mo>(</mo><mi>X</mi><mo>)</mo></mrow></mrow></mfrac></mrow></math>]]></maths>式中对于同一条X来说,P(X)一样的,所以分母P(X)对P(C<sub>i</sub>|X)的分布比例是没有影响的,可以不用去计算,并且任意一个样本被分到某一风险等级和患病的概率之和为1,所以可以利用上式和<img file="FDA00002896628400022.GIF" wi="321" he="111" />求解P(C<sub>i</sub>|X)的概率,最后解得的初始状态概率向量为:<maths num="0005"><![CDATA[<math><mrow><msub><mi>P</mi><mn>0</mn></msub><mo>=</mo><mfenced open='(' close=')'><mtable><mtr><mtd><mi>P</mi><mrow><mo>(</mo><msub><mi>C</mi><mi>i</mi></msub><mo>|</mo><mi>X</mi><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mn>1</mn><mo>-</mo><mi>P</mi><mrow><mo>(</mo><msub><mi>C</mi><mi>i</mi></msub><mo>|</mo><mi>X</mi><mo>)</mo></mrow></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>根据以上步骤就可以完成求解一条数据在当前时刻分别在各个状态的概率大小,也就获得了马尔科夫链中非常关键的一项内容,初始状态概率空间。步骤3,认为马尔科夫链中的一个吸收态。结合算法原理和状态转移两部分的介绍,求解一步状态转移矩阵,得到各个风险等级的m步转移矩阵如下式所示。<maths num="0006"><![CDATA[<math><mrow><msub><mi>Q</mi><mi>M</mi></msub><mo>=</mo><mfenced open='{' close='}'><mtable><mtr><mtd><msub><mi>q</mi><mrow><mi>i</mi><mn>00</mn></mrow></msub><mrow><mo>(</mo><mi>m</mi><mo>)</mo></mrow></mtd><mtd><msub><mi>q</mi><mrow><mi>i</mi><mn>01</mn></mrow></msub><mrow><mo>(</mo><mi>m</mi><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>单步转移矩阵为:<maths num="0007"><![CDATA[<math><mrow><mi>Q</mi><mo>=</mo><mfenced open='{' close='}'><mtable><mtr><mtd><msub><mi>a</mi><mi>i</mi></msub></mtd><mtd><mn>1</mn><mo>-</mo><msub><mi>a</mi><mi>i</mi></msub></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>上式中a<sub>i</sub>是属于[0,1]的实数。通过实际跟踪数据获得转移矩阵,假设其是经过m步一次转移之后的转移矩阵,即m次一步转移矩阵的累积以后的转移矩阵,其计算公式为:Q<sup>m</sup>=Q<sub>M</sub>式中Q表示一步状态转移矩阵;Q<sub>M</sub>表示通过统计获得的转移矩阵,通过设置优化任务函数和优化任务函数的目标解来决定是否要停止训练。其中优化任务函数采用限制最大相对误差,即求解转移矩阵的对应位置上最大的相对误差,相对误差公式如下式所示。<maths num="0008"><![CDATA[<math><mrow><mi>f</mi><mo>=</mo><mi>min</mi><mrow><mo>(</mo><mfrac><mrow><mo>|</mo><msub><mi>q</mi><mi>ij</mi></msub><mo>-</mo><msubsup><mi>q</mi><mi>ij</mi><mo>&prime;</mo></msubsup><mo>|</mo></mrow><msub><mi>q</mi><mi>ij</mi></msub></mfrac><mo>)</mo></mrow></mrow></math>]]></maths>步骤4,在步骤2和3的基础上,即在已知初始状态向量和一步状态转移矩阵的情况下构建马尔科夫链,其构建的公式如下式所示。P<sub>n</sub>=P<sub>0</sub>×Q<sup>n</sup>式中,P<sub>0</sub>是初始状态向量,Q是一步状态转移矩阵,n表示转移的次数。个体II型糖尿病发概率预测是根据上述方法构造完成的马尔科夫链进行预测的,通过输入数据当前时刻的身体指标,判定其所属风险等级,然后输入到相应的模型中,预测个体长时间的发病概率。
地址 100081 北京市海淀区中关村南大街5号