美文网首页
[R - ml]关联分析

[R - ml]关联分析

作者: XuXiaolu | 来源:发表于2018-11-28 17:23 被阅读4次

    数据准备

    9835条交易,也就是说大约327条每天,是一个不大也不小的店。
    对于交易数据arules提供了一个函数来处理(处理为稀疏矩阵)

    require(arules)
    groceries = read.transactions('E:/rpath/groceries.csv', sep = ',') # 注意这里 sep 要写准确
    summary(groceries)
    

    9835行,169列。

    inspect(groceries[1:5])
    

    itemFrequency查看1:3项出现频率

    itemFrequency(groceries[, 1:3])
    

    数据探索

    有8项的support 大于 0.1

    itemFrequencyPlot(groceries, support = 0.08)
    

    +参数一:数据集
    +参数二:频率

    top 20

    itemFrequencyPlot(groceries, topN = 20)
    

    稀疏矩阵可视化

    image(groceries[1:5]) # 第一行到第五行交易大致的交易数
    
    image(sample(groceries, 100)) # 抽100行交易大致的交易数
    

    模型

    apriori(groceries)
    

    没有一项 suport > 0.1, confidence > 0.8
    根据你的知识来选择参数,比如
    我们可以认为一个item如果一天买2次就是频繁项,
    那么30天*2/9835 = 0.006的support可以作为我们的起点。
    然后就是confidence,我们希望百分之几十的情况我们是正确的?
    最后是rule中的item的最少数目:minlen 最少 2个

    groceryrules = apriori(groceries, parameter = 
                             list(support = 0.006, confidence = 0.25, minlen = 2))
    groceryrules
    

    共有满足条件 463条 rule 关系

    模型评估

    distribution (lhs + rhs):sizes
    A -> B (A商品 导致 B商品)
    A:left-hand side (lhs)
    B:right-hand side (rhs)

    summary(groceryrules)
    
    • lift:有A出现对B的提升,最大的接近4, 最小的不到1
    inspect(groceryrules[1:3])
    
    inspect(sort(groceryrules, by = 'lift')[1:5])
    

    根据lift 大小排序,提升最高的前五条规则

    berryrules <- subset(groceryrules, items %in% 'berries')
    inspect(berryrules)
    

    看berries 出现后 买哪些最多

    保存规则

    write(groceryrules, file = 'groceryrules.csv',
          sep = ',', quote = TRUE, row.names = FALSE)
    groceryrules_df <- as(groceryrules, 'data.frame')
    str(groceryrules_df)
    

    相关文章

      网友评论

          本文标题:[R - ml]关联分析

          本文链接:https://www.haomeiwen.com/subject/kwszqqtx.html