目录
一、背景
现象
故事发生于20世纪90年代的美国超市中,超市人员分析销售数据时发现了奇怪的现象:“啤酒”与“尿布”两件看上去毫无关系的商品会经常出现在同一张购物小票上,这种独特的销售现象引起了超市人员的注意,经过后续调查发现,这种现象出现在年轻的父亲身上。
原因
在美国有婴儿的家庭中,一般是母亲在家政中照看婴儿,年轻父亲去超市购买尿布。父亲在购买尿布的同时,往往会顺便为自己购买啤酒,这样就会出现啤酒与尿布这两件看上去不相干的商品经常会出现在同一张购物小票的现象
二、数据挖掘与关联规则
数据挖掘(Data mining)一般是指从大量的数据中通过算法搜索隐藏于其中有价值信息的过程。其中关联规则是数据挖掘经典算法之一。
三、关联规则算法目标
寻找哪些总是一起出现的商品
四、关联规则如何表示
啤酒 => 尿布 [support=60%; confidence= 70%]
尿布 => 尿布 [支持度=60%; 置信度= 70%]
五、关联规则算法中相关概念
支持度; 置信度; 项集; 频繁项集
项集:
项:是指每个购物小票的每个商品,例如面包是项、牛奶是项,即对于的每个商品成为项。
项集:是指大于等于1个以上的项构成的集合,例如{面包}是一项集{面包,牛奶}是两项集,集合中有几个项,就成为几项集。
支持数:
是指项集出现在所有购物小票中的次数。
例如项集{面包、牛奶}是两项集,出现在购物小票中三次,则支持数为3。支持度为3/6=0.5。
频繁项集:
假设我们设置支持数阈值为2.而上述两项集的支持度计数是3》2,所以该2项集{面包、牛奶}是频繁项集。(阈值为人为设定)
置信度:
含有频繁项集{面包,牛奶}的小票数,占所有含有购买{面包}小票数的比例--置信度
六、关联规则算法(案例演示)
支持度
置信度
出现{面包,牛奶。啤酒}则60%出现啤酒
出现{面包,啤酒}则100%出现牛奶
出现{牛奶,啤酒}则100%出现面包
七、提升度计算
八、代码实战
"""
# 关联挖掘实战
"""
from apyori import apriori
# 数据 每一条相当于一个小票
data = [["面包", "牛奶", "啤酒"],
["啤酒", "泡面", "尿布"],
["矿泉水", "泡面", "尿布"],
["啤酒", "尿布"],
["面包", "牛奶", "啤酒", "尿布"],
["面包", "牛奶", "啤酒"]]
# 调用apriori
result = list(apriori(transactions = data, min_support=0.3, min_confidence=0.6)) # min_support最小支持度 min_confidence最小置信度
print("输出结果")
for item in result:
print(item)
# RelationRecord(items=frozenset({'尿布', '泡面'}), support=0.3333333333333333, ordered_statistics=[OrderedStatistic(items_base=frozenset({'泡面'}), items_add=frozenset({'尿布'}), confidence=1.0, lift=1.5)])
# frozenset({'尿布', '泡面'}平凡项极 ; support=0.3333333333333333 支持度0.3 ; ordered_statistics=[OrderedStatistic(items_base=frozenset({'泡面'}), items_add=frozenset({'尿布'}) 关联规则 ; confidence=1.0 置信度