写在前面:该算法的比较对象是UP-Span,其实我更想知道和UMEpi算法对比两者谁更优劣。因为双方采取的策略和定义优化有很大的相似性,区别在于存储结构的不同。个人认为这篇算法还是比较重要的,关键信息会着重标出。
Fast High Utility Episode Mining
样例
A complex event sequence
External utility
定义
首先我们需要明确什么是”event“?在 Episode Mining 中,event 可以指代一次购物商品记录,也可以是一次风险警告,这里的 event 是广义上的,清楚这一点很重要。理所当然地,每一个event发生都会有一个对应的时间点,时间序列上的每个事件(集)都是处于有序状态,时间维度是 Episode Mining 的必须条件,可以看作是在一个二维坐标系里进行讨论。
-
复杂事件序列(complex event sequence)在简单事件序列(simple event sequence,每一个时间点就只有一个 event 发生,event 前后之间处于有序状态)的基础上进一步扩展,每个时间点上有多个事件同时发生(event set),定义式为 CES=⟨(tSEt1,t1),…,(tSEtn,tn)⟩,其中 tSEtk 指的就是每个时间点上的事件集合,集合长度为 0∼∞,样例中的第一个也可以看得出来
-
情节(episode)情节是指一个非空且有多个事件同时发生的有序子序列,表现形式为 ⟨SE1,…,SEk⟩,由于事件组合方式不同,每个情节的表示也有点区别,如果两个事件是同时发生,那么我们用 ⟨(AB)⟩ 表示,如果两个事件是先后发生,那么我们用 ⟨(A),(B)⟩ 表示,注意区分
-
发生时间段(occurrence)任意情节 α 都会对应的一个或多个时间段(各个事件发生的时间点组成的跨度)[ts,te] 被称作事件发生。需要明确的是,第一个事件集 SE1 必须发生在时间点 ts,最后一个事件集 SEk 必须发生在时间点 te(这样才是情节发生的时间段,用 occSet(α) 表示)
-
最小发生时间段(minimal occurrence)当情节发生的时间段最小时,我们特别地规定该时间段以便后续计算。例如情节 ⟨(B),(C)⟩ 发生时间段为 [t2,t3],[t3,t4],[t2,t4](注意事件B和C之是有先后顺序的),其最小时间跨度为1,故 moSet(⟨(B),(C)⟩)={[t2,t3],[t3,t4]}
-
最长时间跨度(maximum time duration)该变量是用户自己设定的一个上限值,因为随着时间跨度不断增长的时候,不仅会增大工作量,而且各个事件之间的联系也会越来越微弱,一个情节的最小发生时间段满足最长时间跨度的要求是 te−ts+1≤maxDur
-
事件的效用值(utility of event)这一点和HUIM计算方式一致,即内部效用(quantity,数量)乘以外部效用(profit,利润),涉及到的计算公式(逐步递进)有以下几个:
- 单个时间点上单个事件的效用值:u(e,ti)=p(e)×q(e,ti)
- 单个时间点上同时发生的事件集的效用值:u(SEk,ti)=∑j=1lu(ej,ti),注意 SEk={e1,…,el}
- 最小发生时间段上单个情节的效用值:u(α,[ts,te])=∑i=1ku(SEi,tn),其中 ts≤tn≤te,注意每个事件需要与其时间点一一对应,不在对应时间点上事件的效用值都记为 0
- 在整个复杂事件序列上单个情节的效用值:u(α)=∑mo∈moSet(α)u(α,mo)
我们取最后一个效用值计算公式作为例子展示,设 α=⟨(B),(C)⟩,那么有
u(α)=u(⟨(B),(C)⟩,[t2,t3])+u(⟨(B),(C)⟩,[t3,t4])=[u((B),t2)+u((C),t3)]+[u((B),t3)+u((C),t4)]=[(1×2)+(3×1)]+[(1×3)+(3×1)]=11
注意 [t2,t4]⊆moSet(α) 且事件 (B) 和 (C) 之间是先后关系不是同时发生
-
高效用情节(high utility episode)当 u(α)≥minUtil 时,情节 α 就是我们要找的高效用情节(简称”HUE“),挖掘 HUEs 的过程叫做高效用情节挖掘(HUEM)
论文指出,因为一个情节可以在这个复杂事件序列上有多个存在(因为时间跨度,可以参考 ⟨(A),(B),(A)⟩),所以之前的HUEM计算只会考虑碰到的第一个情节的效用值,然而实际情况是:不同时间点上相同的事件可能具有不同的内部效用。这样产生的结果就是同一个情节,在不同时间段上产生的效用值大小也不尽相同
针对上面提出的不足,论文对原来的效用值计算方法做出以下修正
-
修正高效用情节(redefined high utility episode)给定两个约束阈值 minUtil 和 maxDur,当 mo∈moSet(α),mo⊆maxDur,u(α)≥minUtil 时,我们认为情节 α 是 HUE
-
修正最小发生时间段上单个情节的效用值:
u(α,[ts,te])=u(SE1,ts)+i=2∑k−1max{u(SEi,tg(i)x∣x∈[1,j]}+u(SEk,te)
可以把整个计算内容分成三段来看:开头,中间最大效用值的组合,结尾。同样以 α=⟨(A),(B),(A)⟩ 为例,
u(α,[t1,t4])=u((A),t1)+max{u((B),t2),u((B),t3)}+u((A),t4)=2+max(2,3)+4=9
-
其它公式计算保持不变
-
并行连接(simultaneous concatenation)在这种连接模式下,拼接后的情节事件跨度不会增加,simul-concat(α,β)=⟨SE1,…,SEx∪SE1′,…,SEy′⟩
-
串行连接(serial concatenation)在这种连接模式下,拼接后的情节事件跨度会增加,serial-concat(α,β)=⟨SE1,…,SEx,SE1′,…,SEy′⟩
-
情节权重效用值(episode-weighted utilization)和TWU、SWU类似,作为一个初步筛选的条件,具有向下封闭性(download closure property),在这里讨论的所有情节都必须有 te−ts+1≤maxDur,每一个同时发生事件 SEi 都有对应的时间点 tg(i)(Ps. 时间点至少有一个),涉及到的计算公式(逐步递进)有以下几个:
-
在最小发生时间段上单个情节的EWU:
EWU(α,[ts,te])=i=1∑k−1u(SEi,tg(i)+j=te∑ts+maxDur−1u(tSEj,j))
其中,tSEj 是指那些不属于 α,但在 α 对应的时间跨度内的事件集(可以参照后续举例理解)
-
在最小发生时间段上单个情节的ERU:与ru、reu相似,rSEte是指在 te 上除 α 内事件外的其它所有事件组成的剩余事件集,计算公式如下
ERU(α,[ts,te])=i=1∑ku(SEi,tg(i))+u(rSEte,te)+j=te+1∑ts+maxDur−1u(tSEj,j)u(rSEte,te)=x∈tSEte∧x≻SEk∑u(x,te)
-
在复杂事件序列上单个情节的ERU:ERU(α)=∑mo∈moSet(α)ERU(α,mo)
同样,我们取最后一个来计算作为样例,设 maxDur=3,α=⟨(A),(D)⟩,那么有
ERU(α)={[u((A),t1)+u((D,t2))]+u((B),t2)+u((BC),t3)}+{u((A),t4)+u((D),t5)}={[2+2]+0+6}+{4+2}=16
-
ERU的反单调性(anti-monotonicity of the ERU)对于待扩展情节 α 和情节 β,有 γ=simult-concat(α,β) 或 γ=serial-concat(α,β),有规则 u(γ)≤ERU(γ)≤ERU(α)≤EWU(α) 恒成立,比对它们的计算公式就可以推导出该规则
-
(action-Window Utilization of an episode)这是一个比较新颖的计算量,因为 EWU,ERU并不能直接运用在复杂事件序列上,所以使用该计算量来筛选候选集
∀mo∈moSet(α),mo⊆[tei−maxDur+1,tsi+maxDur−1]AWU(α)=i=1∑kj=tei−maxDur+1∑tsi+maxDur−1tSEj
例如设 α=(A),得 AWU(⟨(A)⟩)=[0+0+2+4+6]+[4+6+7+2+0]=31,
若 α=(AC),得 AWU(⟨(AC)⟩)=[4+6+7+2+0]=19(注意这里的 AC 是同时事件集,不是 A,C 序列)
策略
基于AWU的剪枝
利用 AWU 的定义,去替代原来的 EWU 得到长度为一的高效用事件集。因为 EWU 并不是一个很紧凑的上界值,加上计算误差问题(参照定义中的 redefined high utility episode),会产生精度问题
EEUCS structure and EEUCP strategy
如下图所示:EEUCS structure 和 EEUCP strategy 是用来减少 EWU 和 ERU 的计算量
算法
HUE-Span algorithm
MiningSimultHUE algorithm
MiningSerialHUE algorithm
总结
和之前的MEU算法的不同点在于使用了 AWU 作为初步剪枝策略(虽然暂时还没有弄清楚原理,为什么就可以替代),其次是存储结构上的改变,利用矩阵的上下左右延伸很容易得到串行扩展和并行扩展,后续上的拼接方法和以前的算法没有很大的区别。但该算法在剪枝策略上的改变就能得到完整的HUEs,从实验数据上看是很不错的,而且我注意到的是,该算法采用的测试集是transaction database,也就是说把每个tranID当成一个时间点,每一条交易项都是一个同时发生的事件集。