【问题标题】:R - association rules - aprioriR - 关联规则 - 先验
【发布时间】:2023-04-01 03:12:01
【问题描述】:

我正在运行这样的先验算法:

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} => {T=0} 甚至 {B=1} => {T=0} 没有任何意义。

2)我正在阅读先验算法,在大多数示例中,每一行代表实际的交易,所以在我的例子中,它应该是这样的:

C,B
C
C
C
C
C, B

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

谢谢

【问题讨论】:

    标签: r apriori


    【解决方案1】:

    不确定程序的目的应该是什么,但 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}
    

    希望这会有所帮助。

    【讨论】:

    • 刚刚看到您的查询是从 2015 年开始的:(无论如何,它可能对某人有所帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    相关资源
    最近更新 更多