发明内容
本发明的目的在于针对现有技术的不足,提供一种基于统计生成模型的医药云平台大数据异常在线预警方法,该方法采用一种方向平滑的特征点过滤方法,可以去除大量的平缓时空特征数据,保留少量的特征点;对于异常预警样本的搜索,本方法提出一种在线混合高斯统计生成模型,该模型拟合了医药数据全生命周期的概率分布特征,能够对实时时序样本计算其出现概率,并选择其中的低概率序列作为预警样本。
本发明的目的是通过以下技术方案来实现的:一种基于统计生成模型的医药云平台大数据异常在线预警方法,该方法包括:
(1)特征过滤,包括仿射变换和方向平滑过滤,具体如下:
(1.1)医药云时空数据由固定长度的特征向量时序组成,设t时刻的特征向量为Dt=<dt1,dt2,...,dtp>,则D=<D1,D2,...DT>构成一个序列片段,T为序列片段的最大值。
(1.2)对每一个特征向量做仿射变换,使其映射到一个p维有限空间,仿射变换后t时刻的特征向量记为D‘t。
(1.3)在映射到的像素空间中进行特征过滤,具体过程如下:
(1.3.1)输入:时序片段D=<D1,D2,...DT>;仿射变换后的时序片段D‘=<D‘1,D‘2,...,D‘T>;
输出:过滤后的时序片段DA=<Dar1,Dar2,...,Dark>,其中r1,r2,...rk∈{1,2,...,T},且k≤T;
(1.3.2)依次遍历D‘中的每个分量D‘i(i=1,2,...,T);
(1.3.2.1)若i=1或者i=T,则将Di加入到DA中;
(1.3.2.2)计算向量D‘i-1和D‘i之间的欧式距离,若欧式距离大于距离阈值minDis,则将Di加入到DA中。
(1.4)方向平滑过滤:首先寻找时序片段的加权主方向,再根据加权主方向进行过滤,具体过程如下:
(1.4.1)输入:上一步过滤后的时序片段DA;输出:方向平滑过滤后的时序片段DA’;
(1.4.2)将Dar1加入到DA’中;
(1.4.3)定义变量index的值为r1,lastAngle的值为-1;
(1.4.4)依次遍历DA中的每个分量Dari(i=2,...,k-1);
(1.4.4.1)计算从Daindex到Dari的欧式距离,记为DISri;
(1.4.4.2)计算从Daindex到Dari的加权角度,记为Angleri;
(1.4.4.3)若lastAngle的值不等于-1,且lastAngle与Angle
ri之间差的绝对值大于
则将Da
ri加入到DA’中,并令index值为ri,否则该点被过滤;
(1.4.4.4)令lastAngle的值为Angleri;
(1.4.5)最后将Dark加入到DA’中。
(2)统计生成模型计算:基于历史数据生成时序片段的概率分布模型,先验的假设时序片段的概率分布为混合高斯函数,定义如下:
其中M为混合高斯函数中高斯分量的个数,k
i为第i个高斯分量的权重,并满足
N(D|u
i,Σ
i)为第i个高斯函数,u
i为第i个高斯分量的均值,Σ
i为第i个高斯分量的协方差矩阵;采用实时在线学习方法,随着数据的增长动态修正混合高斯模型,具体过程如下:
(2.1)初始M在[1,5]之间取值,在历史数据中选取N个时序片段D(1),D(2),...D(N),使用标准EM算法生成初始混合高斯模型。
(2.2)随着新时序片段数据的到达,不断对初始混合高斯模型进行更新,更新过程如下:
(2.2.1)等待新的时序片段数据达到R个,记为ND(1),ND(2),...ND(R);
(2.2.2)令j=1,L={},并令H为当前混合高斯模型;
(2.2.3)E(j)={E1,E2.,..,EM}={N(ND(j)|ui,Σi)|i={1,2,...,M}},即对每一个新到达的片段数据ND(j),计算其每一个高斯分量的值;
(2.2.4)对E(j)进行归一化处理;
(2.2.5)I=argmax(E(j)),V=max(E(j));
(2.2.6)如果V>0.5,则L=L∪{ND(j)},否则执行步骤(2.2.8);
(2.2.7)如果|L|>=N,则对L中所有数据采用EM算法进行混合高斯聚类,得到新模型HL,令H=H∪HL,并令L={};
(2.2.8)将ND(j)归入H中第I个高斯分量,并重新计算第I个分量的均值;
(2.2.9)j=j+1,若j>R,算法结束,否则回到步骤(2.2.3)。
(3)预警判断。若T批新数据到达后,集合L的长度始终小于N,则开始预警判定,将小概率时序片段进行预警。
进一步地,所述步骤(1.2)中,对每一个特征向量做仿射变换,使其映射到一个p维有限空间,每一维的最大长度设为Li,i∈{1,2,...,p},每一维的取值范围为[0,Li];仿射变换后t时刻的特征向量记为D‘t,则仿射变换由以下公式定义:
其中d‘ti(i=1,2,...,p)为D‘t的第i维分量。
进一步地,所述步骤(1.4.4.2)中,加权角度Angleri的计算公式为:
上式中*表示向量的点积运算,d表示两个向量的欧式距离。
进一步地,所述步骤(2.2.8)中,按照如下公式重新计算第I个分量的均值:
进一步地,所述步骤(3)中,预警判定方法是将每一个新时序片段数据代入到混合高斯模型中,若计算值小于0.1,表明出现了小概率时序片段,则将该时序片段进行预警。
本发明的有益效果是:
1、本发明通过两步过滤方法,包括仿射变换和方向平滑过滤实现对时序片段数据的过滤,从而去除时序片段数据中的相似点,保留少量特征点,从而减小分析数据量,同时为统计生成模型提供数据基础。
2、进一步采用一种在线混合高斯统计生成模型,该模型拟合了时序片段数据的概率分布,从而实现通过对时序片段的出现概率进行估计并预警的能力。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
本发明提供的一种基于统计生成模型的医药云平台大数据异常在线预警方法,包括:
(1)特征过滤方法
(1.1)医药云时空数据由固定长度的特征向量时序组成,设t时刻的特征向量为Dt=<dt1,dt2,...,dtp>,则D=<D1,D2,...DT>构成一个序列片段,T为序列片段的最大值。
(1.2)对每一个特征向量做仿射变换,使其映射到一个p维有限空间,每一维的最大长度设为Li,i∈{1,2,...,p},每一维的取值范围为[0,Li];仿射变换后t时刻的特征向量记为D‘t,则仿射变换由以下公式定义:
其中d‘ti(i=1,2,...,p)为D‘t的第i维分量。
(1.3)仿射变换将特征向量转换到一个假象的像素空间中,在该空间中距离太近的点相似性强,只保留其中一个就可以,从而达到特征过滤的目的;具体过程如下:
(1.3.1)输入:时序片段D=<D1,D2,...DT>;仿射变换后的时序片段D‘=<D‘1,D‘2,...,D‘T>;
输出:过滤后的时序片段DA=<Dar1,Dar2,...,Dark>,其中r1,r2,...rk∈{1,2,...,T},且k≤T;
(1.3.2)依次遍历D‘中的每个分量D‘i(i=1,2,...,T);
(1.3.2.1)若i=1或者i=T,则将Di加入到DA中;
(1.3.2.2)计算向量D‘i-1和D‘i之间的欧式距离,若欧式距离大于距离阈值minDis,则将Di加入到DA中,minDis通常在[5,25]之间取值。
(1.4)方向平滑过滤,该过滤方法考虑前后两个特征向量的夹角,与其他平滑方法不同之处在于方向平滑首先寻找时序片段的加权主方向,在根据加权主方向进行过滤;具体做法如下:
(1.4.1)输入:上一步过滤后的时序片段DA;输出:方向平滑过滤后的时序片段DA’;
(1.4.2)将Dar1加入到DA’中;
(1.4.3)定义变量index的值为r1,lastAngle的值为-1;
(1.4.4)依次遍历DA中的每个分量Dari(i=2,...,k-1);
(1.4.4.1)计算从Daindex到Dari的欧式距离,记为DISri;
(1.4.4.2)计算从Daindex到Dari的加权角度,记为Angleri,计算公式为:
上式中*表示向量的点积运算,d表示两个向量的欧式距离;
(1.4.4.3)若lastAngle的值不等于-1,且lastAngle与Angle
ri之间差的绝对值大于
则将Da
ri加入到DA’中,并令index值为ri,否则该点被过滤;
(1.4.4.4)令lastAngle的值为Angleri;
(1.4.5)最后将Dark加入到DA’中。
(2)统计生成模型计算方法,该方法基于历史数据生成时序片段的概率分布模型,这里先验的假设时序片段的概率分布为混合高斯函数,定义如下:
其中M为混合高斯函数中高斯分量的个数,k
i为第i个高斯分量的权重,并满足
N(D|u
i,Σ
i)为第i个高斯函数,u
i为第i个高斯分量的均值,Σ
i为第i个高斯分量的协方差矩阵。这里M以及所有的k
i,u
i,Σ
i都是未知的,需要通过历史数据学习得到。考虑到在实际应用中系统数据不断增长变化,我们设计了一种实时在线学习方法,能够随着数据的增长动态修正混合高斯模型,具体过程如下:
(2.1)初始M在[1,5]之间取值,在历史数据中选取N个时序片段D(1),D(2),...D(N),使用标准EM算法生成初始混合高斯模型。
(2.2)随着新时序片段数据的到达,不断对初始混合高斯模型进行更新,更新过程如下:
(2.2.1)等待新的时序片段数据达到R个,记为ND(1),ND(2),...ND(R);
(2.2.2)令j=1,L={},并令H为当前混合高斯模型;
(2.2.3)E(j)={E1,E2.,..,EM}={N(ND(j)|ui,Σi)|i={1,2,...,M}},即对每一个新到达的片段数据ND(j),计算其每一个高斯分量的值;
(2.2.4)对E(j)进行归一化处理:
E(j)={(E1-min(E(j)))/(max(E(j))-min(E(j))),..,(EM-min(E(j)))/(max(E(j))-min(E(j)))},min和max分别为求最小值和最大值函数;
(2.2.5)I=argmax(E(j)),V=max(E(j));
(2.2.6)如果V>0.5,则L=L∪{ND(j)},否则执行步骤(2.2.8);
(2.2.7)如果|L|>=N,则对L中所有数据采用EM算法进行混合高斯聚类,得到新模型HL,令H=H∪HL,并令L={};
(2.2.8)将ND(j)归入H中第I个高斯分量,并按照如下公式重新计算第I个分量的均值:
(2.2.9)j=j+1,若j>R,算法结束,否则回到步骤(2.2.3)。
(3)预警判断。若T批(T通常取2R~10R)新数据到达后,集合L的长度始终小于N,则可以开始预警判定过程。判定方法是将每一个新时序片段数据代入到混合高斯模型中,若计算值小于0.1,表明出现了小概率时序片段,则将该时序片段进行预警。
以下给出本发明的一个具体应用实例。一些急性传染病具有扩散快、潜伏期长,易误诊的不利特征,例如乙类传染病肺结核通过飞沫传播,感染后一般有2-3周的潜伏期,同时又容易被误诊为病毒性感冒,给这类传染病的防治带来很大的难度,特别是当这类传染病出现大规模的快速扩散的时候,对其进行及时的预警就十分必要了。
采用本发明的方法对抗结核类药物和抗病毒性感冒类药物,如乙胺丁醇、喹诺酮、氯雷他定等的地区用药量情况进行在线监测,建立统计生成模型寻找其中的小概率时序异常数据,能够实现对潜在疾病扩散的预警能力。具体做法如下:
1.选择抗结核类药物和抗病毒性感冒类药物共34种在某地区的7年的用量数据,为了实现有效的监测,以小时为基本单位计算每小时的用药量,每24小时作为一个最小时序片段,共有34*7*365=86870个时序片段,34*7*365*24=2084880个数据项。
2.由于用药量数据会受到人口、经济等多种外部因素变化的影响,需要对数据进行归一化处理以消除这些因素的影响。具体方法是以年为单位,计算全年的均值和标准差,每个数据项减去均值再除以标准差作为归一化后数据。
3.以年为单位的时序片段(12个最小时序片段),采用本发明中的特征过滤方法进行特征过滤,图1显示了过滤前后的差异。可以看出本方法的过滤方法能够保留时序数据方向变化特征,同时删除变化平缓的数据项。
4.进一步采用本发明中的方法对时序片段的概率分布进行估计,估计的基本单位是最小时序片段。概率分布数据如图2所示。
将所有概率密度值低于0.1的时序片段选出来,在该实例中有两条,分别是喹诺酮在11月份的地区用药量呈现明显先升高超出往年用药量又下降的特殊情况(图2中用(1)标出),此时序片段的平均概率密度值为0.061,而在同月份环丝氨酸的用药量出现易于往年的突然上升趋势(图2中用(2)标出),此时序片段的平均概率密度值为0.0396。这两种用药的异常可根据概率密度值的不同采用可视化的方式直观展示,并自动预警给相关行业管理人员,帮助管理人员在大量的用药信息中获取更有价值的数据。
以上所述仅是本发明的优选实施方式,虽然本发明已以较佳实施例披露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何的简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。