用SPADE解释序列挖掘的结果

时间:2016-03-10 17:34:25

标签: r algorithm sequences

请帮助解释SPADE频繁序列挖掘算法(http://www.inside-r.org/packages/cran/arulesSequences/docs/cspade

的结果

支持= 0.05:

s1 <- cspade(x, parameter = list(support = 0.05), control = list(verbose = TRUE))

例如,我得到了这些序列:

4          <{C},{V}> 0.15644023
5            <{C,V}> 0.73127376

看起来这些是相同的序列,不是吗?如何&lt; {C},{V}&gt;语义差异来自&lt; {C,V}&gt; ?任何现实生活中的例子?

来自Spade论文(M. J. Zaki。(2001).SPADE:一种高效的挖掘频繁序列算法。机器学习期刊,42,31--60):

“如果A是a,则称输入序列C包含另一个序列A. 输入序列C的子序列。序列的支持或频率是数据库D中包含A的输入序列的总数。“

然后,例如,如果:

            sequence    support
1              <{C}> 1.00000000

这是否意味着序列&lt; {C}&gt;包含在数据库D中的所有序列中,对吗?

我从数据中获得的完整输出:

> as(s1, "data.frame")
            sequence    support
1              <{C}> 1.00000000
2              <{L}> 0.20468120
3              <{V}> 0.73127376
4          <{C},{V}> 0.15644023
5            <{C,V}> 0.73127376
6            <{L,V}> 0.07882027
7          <{V},{V}> 0.13343431
8        <{C,V},{V}> 0.13343431
9      <{C},{C},{V}> 0.05558572
10         <{C,L,V}> 0.07882027
11       <{V},{C,V}> 0.13343431
12       <{C},{C,V}> 0.15644023
13     <{C,V},{C,V}> 0.13343431
14   <{C},{C},{C,V}> 0.05558572
15         <{C},{L}> 0.05738619
16           <{C,L}> 0.20468120
17       <{C},{C,L}> 0.05738619
18         <{C},{C}> 0.22128547
19         <{L},{C}> 0.06233031
20         <{V},{C}> 0.16921494
21     <{V},{V},{C}> 0.05047012
22     <{V},{C},{C}> 0.06233031
23       <{C,V},{C}> 0.16921494
24     <{C},{V},{C}> 0.05781487
25   <{C,V},{V},{C}> 0.05047012
26   <{V},{C,V},{C}> 0.05047012
27   <{C},{C,V},{C}> 0.05781487
28 <{C,V},{C,V},{C}> 0.05047012
29       <{C,L},{C}> 0.06233031
30     <{C},{C},{C}> 0.07882027
31   <{C,V},{C},{C}> 0.06233031
> summary(s1)
set of 31 sequences with

most frequent items:
      C       V       L (Other) 
     27      22       8       8 

most frequent elements:
    {C}     {V}   {C,V}     {L}   {C,L} (Other) 
     21      12      12       3       3       2 

element (sequence) size distribution:
sizes
 1  2  3 
 7 13 11 

sequence length distribution:
lengths
 1  2  3  4  5 
 3  9 12  6  1 

summary of quality measures:
    support       
 Min.   :0.05047  
 1st Qu.:0.05760  
 Median :0.07882  
 Mean   :0.17121  
 3rd Qu.:0.16283  
 Max.   :1.00000  

includes transaction ID lists: FALSE 

mining info:
 data ntransactions nsequences support
    x         61000      34991    0.05
> ​

2 个答案:

答案 0 :(得分:1)

使用SPADE算法时,请记住您还处理时态数据(即您可以知道项目发生的顺序或时间)。

  

看起来这些是相同的序列,不是吗?如何&lt; {C},{V}&gt;   语义上不同于&lt; {C,V}&gt; ?任何现实生活中的例子?

在您的示例中,&lt; {C},{V}&gt;表示项目C首先出现,然后出现项目V; &lt; {C,V}&gt;表示项目C和V同时发生。

  

然后,例如,如果:

            sequence    support
1              <{C}> 1.00000000
     

这是否意味着序列&lt; {C}&gt;包含在所有序列中   数据库D,对吗?

支持值为1的项目表示在所有交易中发生(在市场购物篮分析示例中)。

希望这有帮助。

答案 1 :(得分:1)

  

看起来这些是相同的序列,不是吗?如何&lt; {C},{V}&gt;   语义差异来自&lt; {C,V}&gt; ?任何现实生活中的例子?

正如用户2552108指出的那样,{C,V}意味着C和V同时发生。实际上,这可以用于编码多维顺序数据。例如,假设C是加拿大,V是温哥华。现在这可能是这样的:

[{C,V,M,花生,黄油,maple_syrup},...,{}]

在这种情况下,您的频繁项目集不仅可以具有单个长度集合,例如{C},{V},{U},{W}或{X},还可以设置长度为&gt; 1(同时出现的集合 - 同时)。

出于这个原因,事务/序列中的元素被定义为集合而不是单个元素。

  

这是否意味着序列&lt; {C}&gt;包含在所有序列中   数据库D,对吗?

这是对的!