R - 关联规则 - 先验

时间:2015-04-13 15:08:20

标签: r apriori

我正在运行这样的apriori算法:

rules <-apriori(dt)
inspect(rules)

其中dt是我的data.frame格式:

> head(dt)
   Cus T C B
1:  C1 0 1 1
2:  C2 0 1 0
3:  C3 0 1 0
4:  C4 0 1 0
5:  C5 0 1 0
6:  C6 0 1 1

数据集的想法是捕获客户以及他是否在特定购买时购买了三种不同的商品(T,C和B)。例如,根据上面的信息,我们可以看到C1买了C和B;客户C2至C5仅购买C而客户C6仅购买C和B.

输出如下:

   lhs      rhs   support confidence      lift
1  {}    => {T=0}    0.90  0.9000000 1.0000000
2  {}    => {C=1}    0.91  0.9100000 1.0000000
3  {B=0} => {T=0}    0.40  0.8163265 0.9070295
4  {B=0} => {C=1}    0.40  0.8163265 0.8970621
5  {B=1} => {T=0}    0.50  0.9803922 1.0893246
6  {B=1} => {C=1}    0.51  1.0000000 1.0989011

我的问题是:

1)如何摆脱T,C或B等于0的规则。如果你考虑一下,规则{B = 0} =&gt; {T = 0}或甚至{B = 1} =&gt; {T = 0}并没有多大意义。

2)我正在阅读有关apriori算法的内容,在大多数示例中,每一行代表实际的交易,所以在我的情况下,它应该是这样的:

C,B
C
C
C
C
C, B

而不是我的那些零和零,这是一个规则吗?或者我仍然可以使用我的格式吗?

由于

1 个答案:

答案 0 :(得分:2)

不确定该程序的目标应该是什么,但Apriori算法的目的是首先提取给定数据的频繁项目集,其中频繁项目集是一定数量的项目,通常表现为这样的数量在数据中。第二,生成那些提取的频繁项集关联规则。关联规则的示例如下:

B -> C

在所述情况下,意味着购买B的客户也以一定的概率购买C.由此,概率由Apriori算法的支持度和置信度确定。支持级别调整频繁项目集的数量以及关联规则的置信度。关于置信度的关联规则称为强关联规则。

在这种背景下不明白为什么要确定客户是否购买了Apriori算法的不同物品。这可以通过if语句来回答。在这种情况下,提供的输出没有任何意义。输出结果表示例如第三行,如果客户不购买B,那么他购买的不是T,支持率为40%,置信度为81.6%。除了该关联规则没有支持之外,只有关联规则B - > C是正确的,但它的置信度值是错误的。

然而,如果目的是生成所描述的关联规则,则原始Apriori不能以这种格式操作输入:

> head(dt)
  Cus T C B
1: C1 0 1 1
2: C2 0 1 0
3: C3 0 1 0
4: C4 0 1 0
5: C5 0 1 0
6: C6 0 1 1

对于未经过自定义的Apriori算法,数据集需要以下格式:

> head(dt) 
C1: {B, C} 
C2: {C}
C3: {C} 
C4: {C} 
C5: {C} 
C6: {B, C}

请参阅两个解决方案:要么将输入格式化,要么将Apriori算法自定义为此格式,这将是算法中输入格式的变化。为了澄清所述输入格式的必要性,Apriori算法简而言之,提供了数据:

Support level               = 0.3
Confidence level            = 0.3
Number of customers         = 6

Total number of B's bought  = 2
Total number of C's bought  = 6

Support of B                = 2 / 6 = 0.3 >= 0.3 = support level
Support of C                = 6 / 6 = 1   >= 0.3 = support level
Support of B, C             = 2 / 6 = 0.3 >= 0.3 = support level

-> Frequent itemsets        = {B, C, BC}

-> Association rules        = {B -> C}

Confidence of B -> C        = 2 / 2 = 1 >= 0.3 = confidence level

-> Strong association rules = {B -> C}

希望这有帮助。