3.5 关联规则的实例计算
先用两个小数据[尿布与啤酒(数据挖掘的老故事),豆浆、烧饼与饭团]计算项目和规则,说明关联规则的计算,再用R语言计算比较结果。
3.5.1 尿布与啤酒
尿布与啤酒的故事:买尿布(项集)的顾客(事务)多数会买啤酒(项集)。
①数据
数据中有50个事务,取尿布与啤酒两个项目,如图3-6、图3-7所示。
图3-6 尿布与啤酒数据
图3-7 尿布与啤酒的数据
注:a=买尿布+啤酒人数;b=买尿布不买啤酒人数;c=不买尿布买啤酒人数;d=尿布啤酒都不买人数
②计算
尿布与啤酒的实例计算如图3-8所示。
图3-8 尿布与啤酒的实例计算
支持度(尿布→啤酒)= a /(a+b+c+d)= 24/ 50 = 0.48
置信度(尿布→啤酒)= a /(a+b)= 24/30 = 0.8
提升度(尿布→啤酒)= a(a+b+c+d)/(a+b)(a+c)= 24×50/(30×34)= 1.18
χ2期望值:χ2(A,B)=20.4,24>20.4。
所以,尿布与啤酒有正面的信息,提升度大于 1。
但是,如果零事务(A=0,B=0)增加或减少,会改变支持度和提升度,如图3-9所示。
图3-9 尿布与啤酒增加或减少零事务会改变支持度和提升度
两个项目(或项集)的支持度、置信度、提升度,其测度值越高,显示两个项集的关联越大。但是,支持度和提升度会受到零事务(A=0,B=0)和样本数的影响。所以Jaccard系数就没有将零事务计算在测量里面。
另外,因为置信度(A→B)≠置信度(B→A),可能会发生置信度(A→B)很高,但是置信度(B→A)很低的现象。
全置信度,最大置信度和Kulczynski测度的取值都是从0~1,值越大,关联越大,不受零事务影响。
③R语言
将图3-6尿布与啤酒数据的Excel表另存为AB.CSV,保存类型为CSV(逗号分隔)。
这是二元关联矩阵格式,不用转换,可以直接用apriori函数。
【R例3.1】尿布与啤酒:数据AB.csv,函数apriori、inspect{arules}
数据框格式data.frame:50个观察值2个变量
关联规则的分析结果。
3.5.2 豆浆、烧饼与饭团
①数据
假设有50位顾客,每个顾客购买豆浆、烧饼或饭团,记为 1,如图3-10所示。
计算{豆浆+烧饼}(项目集)和{饭团}(项目集)的关联规则,如图3-11所示。
a =买(豆浆+烧饼+饭团)的人数;
b =买(豆浆+烧饼),不买饭团的人数;
c =不买(豆浆+烧饼),而买饭团的人数;
d =不买(豆浆+烧饼),而且不买饭团的人数。
图3-10 豆浆、烧饼和饭团的数据
图3-11 豆浆、烧饼与饭团的计算
②计算
支持度(豆浆+烧饼→饭团)= a/(a+b+c+d)= 7/ 50 = 0.14
置信度(豆浆+烧饼→饭团)= a/(a+b)= 7/24 = 0.29
提升度(豆浆+烧饼→饭团)= a(a+b+c+d)/(a+b)(a+c)= 7×50 /(24×26)= 0.56
支持度阈值和置信度阈值0.2。
提升度小于 1,(豆浆+烧饼)对(饭团)是负面信息,负的关联。
χ2期望值:χ2(A,B)=12.48,7 < 12.48。
因为,(烧饼)和(饭团)互为替代品,两者较少同时存在,买烧饼的人不会再买饭团,除非他食量很大。
③R语言
【R例3.2】豆浆、烧饼或饭团:数据ABC.csv,函数{包}:apriori {arules}
itemFrequency {arules}
数据框格式 data.frame:50个观察值3个变量
图3-12 关联规则
图3-13 关联规则依照提升度lift大小排列
3.5.3 评估与应用
尿布和啤酒的评估和应用,有下列建议。
(1)将尿布和啤酒摆在出口结账的地方,方便顾客节省时间。
(2)换一个角度,买尿布的人会再买啤酒,将尿布和啤酒摆在距离较远的地方,让顾客多逛多买东西。
(3)选择一些品牌的尿布和啤酒包裹在一起卖,使获利增加。
(4)超级市场可以将上述方案(2)、(3)在两家分店分别实施,试验哪个方案对营业额有显著增加。
(5)关联规则应用在文本挖掘、产业新闻的关联分析:双11与阿里巴巴。
(6)书店的关联分析:买《大话数据科学》的人会买《大话统计学》。
(7)推荐系统:协同过滤法,找出那些有相同喜好的人,推荐给他们相关的产品。
(8)选择不同的支持度、置信度和提升度的阈值,使算法的计算和复杂度降低。