本发明涉及机器学习技术领域,尤其是一种适用于多个隐混杂因子数据的因果网络发现方法及系统。
背景技术:
随着大数据时代的到来,在很多领域中,发现事物之间存在的因果关系可以帮助人们从大量数据中发现潜在的信息,理解事物背后发生的真实机制。然而,如何从数据中有效地挖掘因果关系,将其利用到我们生活中的各个领域,是一直研究的热点问题。虽然shimizu等人提出的线性非高斯无环模型(lingam)因为容易理解和从数据中估计因果关系,而被广泛地使用,但由于实际情况下大多数数据含有隐混杂因子(即不可观测的变量),从这些数据中发现因果结构给我们带来了挑战。
虽然大多数研究都假设数据中不存在隐混杂因子,其相关工作也无法适用于隐混杂因子数据的情况,但目前仍有少量基于lingam的方法解决这个问题。hoyer等人提出了一个含有隐混杂因子的利用完备ica方法来估计的方法。但过完备ica方法往往不是很可靠,该方法很容易限于局部最优,无法检测到实际中那些观察变量受到隐混杂因子的影响,在大多数场景下无法很广泛的适用。因此,entner和hoyer提出了一种不使用过完备ica的方法,其首先找到不受潜在的混杂因子影响的变量对,然后估计一个变量到另一个变量的因果顺序。
但是,他们的方法无法用于估计两个以上变量的因果顺序。tashiro等人提出了一种通过检验估计的外生变量之间的独立性来发现潜在混杂因子的方法,找到了包含不受潜变量影响的变量的子集,以逐一估计因果顺序。但这个算法的复杂度很高,需要进行多次回归和(条件)独立性检验,同时也无法检测隐混杂因子的个数,更不能发现隐混杂因子和观察变量之间的关系。
现有的将lingam模型应用于因果结构发现的方法中,有些不能适用于多个混杂因子存在的情况,无法有效地识别隐混杂因子,并发现其与观察变量之间的因果关系,所以提出一种贴近数据,复杂度低,有效检测隐混杂因子个数,发现观察变量与隐混杂因子的因果关系的方法及系统具有一定的研究价值和意义的方法。
技术实现要素:
针对现有技术的不足,本发明提供一种适用于多个隐混杂因子数据的因果网络发现方法及系统,本发明能够在含有多个隐混杂因子数据的情况下,快速、有效地检测隐混杂因子的信息,从而发现因果网络。
本发明的技术方案为:一种适用于多个隐混杂因子数据的因果网络发现方法,包括以下步骤:
s1)、设置观察数据集x=[x1,x2,…,xn],其中每个变量xi包括p个样本数据,并假定存在未知维度和相同数量的隐混杂因子集z=[z1,z2,…,zm],并设置前部因果顺序集khead,及尾部因果次序集ktail为空集,记录包含观察数据集的候选变量集u={x1,x2,…,xn};
s2)、从一个完全无向图出发,利用(条件)独立性检验的方法学习观察数据之间的因果骨架图g,并记录下每个观察变量xi的邻接变量adj(g,xi);
s3)、自上而下寻找每个变量xi可识别的外生变量;
s4)、更新u=u\khead,自下而上寻找可识别的叶子节点;
s5)、将步骤s2)中获得的因果骨架图g按最大团分成多个变量子集s=[s1,s2,....,sl];
s6)、保留s中包含u中元素的子集集合,更新s;
s7)、对s中每个集合si,重复步骤s3)和步骤s4)找出更多的外生变量和叶子节点,得到更多的因果顺序klist,如果存在两个或两个以上变量之间无法判断其因果顺序,那么就说明他们受到同一个隐混杂因子的影响;
s8)、结合khead、ktail、klist的信息为因果骨架图g定向,对于排在任意变量前面的所有变量进行多元最小二乘回归,得到互相有因果关系的变量之间的因果强度,构建因果关系网络。
进一步的,上述方法中,步骤s3)中,寻找外生变量具体包括以下步骤:
s301)、对于每个变量xi,将其邻接变量xj(xj∈adj(g,xi))与变量xi一一进行回归,得到残差
其中,cov(xj,xi)为xi和xj的协方差,var(xi)为xi的方差;
s302)、对u中的变量重复步骤s301),直到找不到满足步骤s301)中的外生变量或khead>n-1。
进一步的,上述方法中,步骤s4),寻找叶子节点,具体包括以下步骤:
s401)、对每个变量xj∈u,将xi与其所有邻接变量组成的向量x(-j),即adj(g,xj)进行回归,得到残差
其中,
s402)、对u中的变量重复步骤s401),直到找不到满足步骤s401)的叶子节点或u<2时。
本发明还提供一种适用于多个隐混杂因子数据的因果网络发现系统,包括以下模块:
用户输入数据模块,用于用户输入需要进行因果网络发现的可能含有多个隐混杂因子的数据集;
参数配置模块,用于用户进行参数配置,用户可通过系统上的表单选项进行选择,因果网络发现方法中采用的条件独立性检验的方法以及条件独立性检验的阈值,对其输入的数据集进行因果关系发现;
因果骨架学习模块,根据用户选择的参数,对用户输入的数据进行因果骨架学习,得到因果骨架图;
局部因果顺序识别模块,基于因果骨架学习模块学习得到的因果骨架,识别不受隐混杂因子影响的外生变量和叶子节点,得到局部的因果顺序;
隐混杂因子检测模块,用于通过因果骨架学习模块学习到的因果骨架得到多个最大团,排除局部因果顺序识别模块识别到的外生变量和叶子节点,检测隐混杂因子的存在性;
因果网络构建模块,用于根据因果骨架学习模块、局部因果顺序识别模块、隐混杂因子检测模块的结果,构建观察变量间的因果网络;
结果可视化模块,用于对因果网络构建模块中的因果网络进行可视化实现,并以图的形式展示隐混杂因子与其影响的观察变量之间的关系;
输入与反馈接口,用于用户输入想查看的结果,系统将结果可视化反馈给用户。
进一步的,所述的参数配置模块,用户可以通过自己的需求,设置因果网络中采用的条件独立性检验的方法及其阈值,从而实现个性化的因果关系发现,可以适用于多个领域;
同时根据用户输入数据模块输入的数据,进行如下设置:
设置观察数据集x=[x1,x2,…,xn],其中每个变量xi包括p个样本数据,并假定存在未知维度和相同数量的隐混杂因子集z=[z1,z2,…,zm],并设置前部因果顺序集khead,及尾部因果次序集ktail为空集,记录包含观察数据集的候选变量集u={x1,x2,…,xn}。
进一步的,所述的因果骨架学习模块通过构建所有观察变量间的完全无向图,并利用基于(条件)独立性检验的方法学习观察变量之间的因果骨架图g,并记录下每个观察变量xi的邻接变量adj(g,xi)。
进一步的,所述的局部因果顺序识别模块通过自上而下寻找每个观察变量xi的可识别的外生变量,以及自下而上寻找每个观察变量xi的可识别的叶子节点。
进一步的,所述的局部因果顺序识别模块寻找外生变量具体包括以下步骤:
对于每个变量xi,将其邻接变量xj(xj∈adj(g,xi))与变量xi一一进行回归,得到残差
其中,cov(xj,xi)为xi,xj,var(xi)为xi的方差;
对u中的变量重复上述步骤,直到找不到满足上述步骤的的外生变量或khead>n-1。
进一步的,所述的局部因果顺序识别模块寻找叶子节点具体包括以下步骤:
对每个变量xj∈u,将xi与其所有邻接变量组成的向量x(-j),即adj(g,xj)进行回归,得到残差
其中,
对u中的变量重复上述步骤,直到找不到满足上述步骤的叶子节点或u<2时。
进一步的,隐混杂因子检测模块通过将因果骨架学习模块获得的因果骨架图g按最大团分成多个变量子集s=[s1,s2,....,sl],保留s中包含u中元素的子集集合,更新s,得到更多的因果顺序klist,如果存在两个或两个以上变量之间无法判断其因果顺序,那么就说明他们受到同一个隐混杂因子的影响。
进一步的,所述的因果网络构建模块通过结合khead、ktail、klist的信息为因果骨架图g定向,对于排在任意变量前面的所有变量进行多元最小二乘回归,得到互相有因果关系的变量之间的因果强度,构建因果关系网络,并将因果关系网络输出给结果可视化模块。
本发明的有益效果为:
本发明能够以用户输入的可能含有多个隐混杂因子的情况下,学习因果骨架图,结合图的邻接信息,减少回归和独立性检验的次数,识别局部因果顺序;通过最大团结构,检测隐混杂因子的个数,发现受同一隐混杂因子影响的观察变量,并最终构建因果关系网络,使用可视化技术将其通过前端绘图呈现给用户。整个方法和系统复杂度低,操作简便,同时输出的因果关系网络的正确率和识别率高。
附图说明
图1为本发明的适用于多个隐混杂因子数据的因果网络发现方法流程图;
图2为本发明的适用于多个隐混杂因子数据的因果网络发现系统架构图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步说明:
如图1所示,一种适用于多个隐混杂因子数据的因果网络发现方法,包括以下步骤:
s1)、设置观察数据集x=[x1,x2,…,xn],其中每个变量xi包括p个样本数据,并假定存在未知维度和相同数量的隐混杂因子集z=[z1,z2,…,zm],并设置前部因果顺序集khead,及尾部因果次序集ktail为空集,记录包含观察数据集的候选变量集u={x1,x2,…,xn};
s2)、从一个完全无向图出发,利用(条件)独立性检验的方法学习观察数据之间的因果骨架图g,并记录下每个观察变量xi的邻接变量adj(g,xi);
s3)、自上而下寻找每个变量xi可识别的外生变量,具体包括以下步骤:
s301)、对于每个变量xi,将其邻接变量xj(xj∈adj(g,xi))与变量xi一一进行回归,得到残差
其中,cov(xj,xi)为xi和xj的协方差,var(xi)为xi的方差;
s302)、对u中的变量重复步骤s301),直到找不到满足步骤s301)中的外生变量或khead>n-1;
s4)、更新u=u\khead,自下而上寻找可识别的叶子节点,具体包括以下步骤:
s401)、对每个变量xj∈u,将xi与其所有邻接变量组成的向量x(-j),即adj(g,xj)进行回归,得到残差
其中,
s402)、对u中的变量重复步骤s401),直到找不到满足步骤s401)的叶子节点或u<2时;
s5)、将步骤s2)中获得的因果骨架图g按最大团分成多个变量子集s=[s1,s2,....,sl];
s6)、保留s中包含u中元素的子集集合,更新s;
s7)、对s中每个集合si,重复步骤s3)和步骤s4)找出更多的外生变量和叶子节点,得到更多的因果顺序klist,如果存在两个或两个以上变量之间无法判断其因果顺序,那么就说明他们受到同一个隐混杂因子的影响;
s8)、结合khead、ktail、klist的信息为因果骨架图g定向,对于排在任意变量前面的所有变量进行多元最小二乘回归,得到互相有因果关系的变量之间的因果强度,构建因果关系网络。
如图2所示,本发明还提供一种适用于多个隐混杂因子数据的因果网络发现系统,包括以下模块:
用户输入数据模块,用于用户输入需要进行因果网络发现的可能含有多个隐混杂因子的数据集;
参数配置模块,用于用户进行参数配置,用户可以通过自己的需求,设置因果网络中采用的条件独立性检验的方法及其阈值,从而实现个性化的因果关系发现,可以适用于多个领域;同时根据用户输入数据模块输入的数据,进行如下设置:
设置观察数据集x=[x1,x2,…,xn],其中每个变量xi包括p个样本数据,并假定存在未知维度和相同数量的隐混杂因子集z=[z1,z2,…,zm],并设置前部因果顺序集khead,及尾部因果次序集ktail为空集,记录包含观察数据集的候选变量集u={x1,x2,…,xn}。
因果骨架学习模块,根据用户选择的参数,对用户输入的数据进行因果骨架学习,得到因果骨架图,具体为,通过构建所有观察变量间的完全无向图,并利用基于(条件)独立性检验的方法学习观察变量之间的因果骨架图g,并记录下每个观察变量xi的邻接变量adj(g,xi)。
局部因果顺序识别模块,基于因果骨架学习模块学习得到的因果骨架,识别不受隐混杂因子影响的外生变量和叶子节点,得到局部的因果顺序,具体为:
所述的局部因果顺序识别模块通过自上而下寻找每个观察变量xi的可识别的外生变量,以及自下而上寻找每个观察变量xi的可识别的叶子节点;
所述的局部因果顺序识别模块寻找外生变量具体包括以下步骤:
对于每个变量xi,将其邻接变量xj(xj∈adj(g,xi))与变量xi一一进行回归,得到残差
其中,cov(xj,xi)为xi和xj的协方差,var(xi)为xi的方差;
对u中的变量重复上述步骤,直到找不到满足上述步骤的外生变量或khead>n-1。
所述的局部因果顺序识别模块寻找叶子节点具体包括以下步骤:
对每个变量xj∈u,将xi与其所有邻接变量组成的向量x(-j),即adj(g,xj)进行回归,得到残差
其中,
对u中的变量重复上述步骤,直到找不到满足上述步骤的叶子节点或u<2时。
隐混杂因子检测模块,用于通过因果骨架学习模块学习到的因果骨架得到多个最大团,排除局部因果顺序识别模块识别到的外生变量和叶子节点,检测隐混杂因子的存在性,具体为:隐混杂因子检测模块通过将因果骨架学习模块获得的因果骨架图g按最大团分成多个变量子集s=[s1,s2,....,sl],保留s中包含u中元素的子集集合,更新s,得到更多的因果顺序klist,如果存在两个或两个以上变量之间无法判断其因果顺序,那么就说明他们受到同一个隐混杂因子的影响。
因果网络构建模块,用于根据因果骨架学习模块、局部因果顺序识别模块、隐混杂因子检测模块的结果,构建观察变量间的因果网络;
具体为:所述的因果网络构建模块通过结合khead、ktail、klist的信息为因果骨架图g定向,对于排在任意变量前面的所有变量进行多元最小二乘回归,得到互相有因果关系的变量之间的因果强度,构建因果关系网络,并将因果关系网络输出给结果可视化模块。
结果可视化模块,用于对因果网络构建模块中的因果网络进行可视化实现,并以图的形式展示隐混杂因子与其影响的观察变量之间的关系;
输入与反馈接口,用于用户输入想查看的结果,系统将结果可视化反馈给用户。
上述实施例和说明书中描述的只是说明本发明的原理和最佳实施例,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。