Page 103 - 《软件学报》2021年第10期
P. 103

王双成  等:基于贝叶斯网络的时间序列因果关系学习                                                       3075


                 其中,N ijk [t]是充分统计因子,是在时间序列的转换数据集中 X                i []t   x i k []t 且 Π []t    i j [ ]t 的情况数量,N ij [t]=
                                                                                i
                  k  1 N ijk []t ; ijk [t]和 ij [t]是先验充分统计因子,可以依据经验和历史数据获得.我们采用最大似然估计方法进行
                   i r
                 因果关系的参数学习,多变量时间序列的因果关系学习算法如算法 1 所示.
                    算法 1.  多变量时间序列的因果关系学习算法.
                    输入:多变量时间序列数据集 D c [n,T];
                    输出:多变量时间序列的因果关系(包括结构和参数).
                    时间序列丢失数据的初始化、离散化和迭代修复
                    时序变量的排序
                    For i=1 to n
                      基于{x i [t]}(1≤t≤T)的转换数据集,通过局部贪婪打分-搜索发现 X i [t]的时滞父节点集
                      确定 X i [t]的时滞变量
                    End for
                    For i=1 to n
                      基于{x 1 [t],x 2 [t],...,x n [t]}(1≤t≤T)的转换数据集,通过局部贪婪打分-搜索发现 X i [t]的 3 种父节点集
                      依据最大似然估计方法进行 X i [t]的参数学习
                    End for
                    在多变量时间序列的因果关系学习算法中,运算的主要部分是确定时滞变量(单变量时间序列的因果关系
                 结构学习)和多变量时间序列的因果关系结构学习.在单变量时间序列的因果关系结构学习中,需要进行不超过
                    *
                                                                 *
                 n(4s 6)次的 MDL 计算(我们限定父节点数量不超过 4),其中,s =max{s 1 ,s 2 ,…,s n };而在多变量时间序列的因果关
                                        1
                                                                                                   *
                                                                       *
                                          *
                 系结构学习中,最多需要进行           qn (qn  *  1) 1  次的 MDL 计算,其中,q =max{q 1 ,q 2 ,…,q n },q i ≤s i (1≤i≤n).s 和 q *
                                        2
                                                                                                 2
                 是与 n 无关的量,因此,相对于 MDL 打分计算,多变量时间序列因果关系学习算法的时间复杂度是 O(n ).
                 2    时间序列的元因果关系学习
                    时间序列的元因果关系学习是因果关系学习的深化和拓展.时间序列的因果关系学习适合于低频常规时
                 间序列(也可以用于高频时间序列的局部或子列),而时间序列的元因果关系学习则主要针对高频大时间序列.
                 时间序列的元因果关系学习包括时间序列预处理、在时间序列段因果关系结构学习基础上的因果关系结构数
                 据集构建和变量选择,以及元因果关系的结构与参数学习这 3 个部分.

                 2.1   时间序列预处理
                    在时间序列预处理中,除丢失数据修复(如果需要突出效率,可以只采用滑动平均的方法来修复丢失的数
                 据)和离散化(适合于使用模式离散化方法)之外,还需要时间序列分段.如果时间序列中的数据是按照固定时间
                 跨度采集(时间均匀地采集),那么可选择确定的时间跨度来为时间序列分段;当时间序列中的数据不是按时间
                 均匀分布时,则可按数据量为时间序列分段;当然,也可以根据实际情况和需求为时间序列分段.时间序列段的
                 大小可以一致,也可以不一致.无论采用哪种方式分段,时间序列段的大小和数量应该能够有效地进行因果关系
                 和元因果关系学习.
                    假设将时间序列分为个段,用 X          1 ()m  [],tX 2 ()m  [ ],...,t  X n ( )m  []t 表示第 m 个时间序列段的排序后(同样采用变量删
                 除法来排序)非时滞变量,其中,T 1 ,T 2 ,…,T 1 是时间序列段的分点,T m1 +1≤t≤T m ,1≤m≤,T 0 =0,T  =T, D d ()m  [, ]n T
                 是对应的时 序数据集 , 那么 , D       d ()m  [ , , ] {n T q   x 1 ()m  [t v  1 1 q  ],..., x 1 ( )m  [t v  1 1 ], x 1 ( )m  [ ],...,t  x ()m  [t v  n n q  ],..., x ( )m  [t v  1 n  ], x n ()m  [ ]}t
                                                                                           n
                                                                                n
                                                                         t
                 (T m1 +max{q 1 ,q 2 ,…,q n }+1≤t≤T m )是 {x 1 ()m  [ ],tx 2 ()m  [ ],...,t  x ( )m  [ ]}(t  T m 1   1≤ ≤ T m ) 的转换数据集.在时间序列预处
                                                            n
                 理、时间序列段的时序变量排序与转换数据集构建的基础上,同样采用打分-搜索方法进行时间序列段的因果
                                (m)
                 关系结构学习,用 G [t]表示学习得到的因果关系结构.接下来是因果关系结构数据集构建和因果关系变量选
   98   99   100   101   102   103   104   105   106   107   108