RapidMiner GSP 序列模式挖掘 练习

上周记了序列模式挖掘的算法GSP,http://www.ryanzhang.info/archives/1620

这周为了练习下序列模式挖掘,模拟了一个数据集:http://www.ryanzhang.info/other/sequential_data.csv

  • 数据中每一行对应于一次观测。
  • 第1列代表观测的对象id。
  • 第3-6对应于6个不同的观测结果,0代表没有观测到,1代表观测到了。

先在R里看一下数据的总结:

数据包含对30个不同对象的370次观测。

以对象1的前6行数据为例,转换成上周博文中的形式即为:

  • 对象1:A,C,AD,AE,AE

下面将序列模式挖掘任务交给RapidMiner:

1 用Read CSV模块读入数据

添加Read CSV模块

rapidminer readcsv

 

选择右侧的数据导入设置助手:

read csv import conf

读入数据的第二步中要设定列的分隔符为",":

column separation

 

第四步中重要的一项是将6个不同观测结果的变量类型全部设为binomial。

set binomial

 

2 GSP模块的设置

首先拖入GSP模块:

gsp

 

将Read CSV模块的输出端连至GSP的输入端:

connect gsp and readcsv

 

选中GSP模块,在右边的参数视图中设置参数:

parameters GSP

 

  • 将customer id选择为id,即数据中的观测对象
  • time attribute选为observation,即数据中的每一次观测
  • 设定阀值为支持程度0.6
  • 设置观测窗口大小、最大间隔、最小间隔等

最后:设置好后将GSP的第二个输出端连至右方的结果端,点击上方的运行:

run gsp

 

3 序列模式挖掘的结果

结果按支持程度排序:

results

结果表明:

  • 如果观测到A,非常有可能在接下来5次观测内观测到E。
  • 如果观测到E,非常有可能在接下来5次观测内观测到E。

这两个序列模式的支持程度最高。

也能看到E->A->AE这样的较长的序列模式的支持程度也不低。


结合R 做挖掘出的序列模式的检验:

在RapidMiner里,重新调整GSP模块的参数,将max gap设为1,仅仅尝试发现连续两次观测中出现的时序关系。

即类似:“此时此刻观测到A,那么较大可能会在下一时刻观测到E 。”这样的序列模式关系。

结果仍然是A->E具有最高的支持程度1。

现在的任务是:用各种关联规则的评价指标检验序列关系“A->E”的有趣程度。

为了便于计算,对数据框做一些转换:

处理后的数据是这样的:

  • 第1列代表观测对象
  • 第2列代表对A的观测结果
  • 第3列代表的是在下一次观测中对E的观测结果

计算在对30个对象的观测中,观测到“A->E”序列关系的对象有多少个:

计算结果表明:在对30个对象的观测中,对28个对象都观测到了A->E

计算“A->E”的置信程度:

(满足“A->E”的数据点数量)除以(所有满足A条件的数据点的数量)

计算“A->E”的cosine有趣程度:

(A->E出现的概率)除以((A、E分别出现的概率的乘机)的平方根)

根据Merceron & Yacef (2008) 的文章,cosine越接近1越好,超过0.65一般已经足够好。

下面计算“A->E”的lift有趣程度:

(A->E置信程度)除以(E出现的概率)

同样根据Merceron & Yacef (2008) ,Lift指数大于1一般代表规则是“有趣”的。

Leave a Reply

Your email address will not be published. Required fields are marked *