理解关联规则

    • 市场购物篮分析的结果是一组指定商品之间关系模式的关联规则。

    • 一个典型的规则可以表述为: 奶爸去买尿不湿会顺便买啤酒,而且这个规则是有顺序的

    • 关联规则用通俗易懂的语言来表达就是:

                如果有规则{花生酱,果冻} —> {面包},如果购买了花生酱和果冻,那么也很有可能会购买面包。

支持度和置信度

    • 支持度 (support)  是指 一个项集 在数据中出现的频率

    • 置信度 (confidence)  是指 一个规则预测能力(准确度的度量)

    公式:

        

    数据:

交易号购买的商品
1{鲜花,慰问卡,苏打水}
2{毛绒玩具熊,鲜花,气球,单独包装的块状糖}
3{慰问卡,单独包装的块状糖,鲜花}
4{毛绒玩具熊,气球,苏打水}
5{鲜花,慰问卡,苏打水}

     求规则{鲜花} —> {慰问卡} 的置信度 ?

                {鲜花} 的支持度 = 4/5 , {鲜花,慰问卡} 的支持度 = 3/5 

                 所以 {鲜花} —> {慰问卡} 的置信度 为 (3/5)/ (4/5) = 3/4

理解Apriori算法

    • Apriori算法原则 指的是一个频繁项集的所有子集也必须是频繁的(频繁即项集支持度高)

              即如果{A,B}是频繁的,那么{A}和{B}都必须是频繁的。

              因为根据定义,支持度表示一个项集出现在数据中的频率。因此,如果知道{A}不满足所期望的支持度阈值,那么就没有考虑{A,B}或者任何包含{A}的项集,这些项集绝对不可能是频繁的。

    • Apriori算法利用这个逻辑在实际评估他们之前排除潜在的关联规则 ,即首先排除掉单个项集不满足支持度的,让它们不参与接下来的组合

    • 排除之后又分为 两个阶段

             1、将数据组合成各种项集,然后识别所有满足最小支持度阈值的项集 排除掉不满足支持度的项集

             2、根据这些项集来创建各种关联规则,然后 根据最小置信度阈值评估排除规则

                        例如,{A,B,C}将产生候选规则{A}->{B}、{A}->{C}、{B}->{C}、{B}->{A}、{C}->{A}、{C}->{B}

                        这些规则将根据最小置信度阈值评估,任何不满足所期望的置信度的规则将被排除。


例子:

    每一个顾客的购物车买的东西,求哪些物品有对某一个有关联关系

数据:


代码:


#csv文件以,间隔
#这里是将每个单元格作为一行
#read.transactions为arules包方法,需先安装再导入
groceries <- read.transactions("AssociationRules/data/groceries.csv", sep=",")
summary(groceries)


inspect(groceries[1:5])
itemFrequency(groceries[,1:3]) #查看频繁项集
itemFrequencyPlot(groceries, support=0.1) #支持度0.1上的柱状图
itemFrequencyPlot(groceries, topN=20) #前20
image(groceries[1:5])
image(sample(groceries, 100))


#apriori(groceries)
#parameter指定参数 list(支持度,置信度,最小关联两个)
grocery_rules <- apriori(groceries, parameter = list(support=0.006, confidence=0.25, minlen=2))
grocery_rules



#概要 lift为support、confidence合在一起的参数,越大越关联
summary(grocery_rules)



#查看关联前三个
inspect(grocery_rules[1:3])
#以lift排序,再查看前5
inspect(sort(grocery_rules, by="lift")[1:5])


完整代码:

#csv文件以,间隔
#这里是将每个单元格作为一行
#read.transactions为arules包方法,需先安装再导入
groceries <- read.transactions("AssociationRules/data/groceries.csv", sep=",")
summary(groceries)

inspect(groceries[1:5])
itemFrequency(groceries[,1:3]) #查看频繁项集
itemFrequencyPlot(groceries, support=0.1) #支持度0.1上的柱状图
itemFrequencyPlot(groceries, topN=20) #前20
image(groceries[1:5])
image(sample(groceries, 100))

#apriori(groceries)
#parameter指定参数 list(支持度,置信度,最小关联两个)
grocery_rules <- apriori(groceries, parameter = list(support=0.006, confidence=0.25, minlen=2))
grocery_rules
#概要 lift为support、confidence合在一起的参数,越大越关联
summary(grocery_rules)

#查看关联前三个
inspect(grocery_rules[1:3])
#以lift排序,再查看前5
inspect(sort(grocery_rules, by="lift")[1:5])

#Subset函数第一个参数是所要选择的数据框,第二个参数是所要查看信息的方法
berry_rules <- subset(grocery_rules, items %in% "berries")
inspect(berry_rules)

#写入文件
write(grocery_rules, file="AssociationRules/output/groceryrules.csv", sep=",", quote=TRUE, row.names = FALSE)

#转为dataframe
groceryrules_df <- as(grocery_rules, "data.frame")
str(groceryrules_df)


添加新评论