Apriori与FP-Growth:啤酒与尿布的故事
关联分析(无监督学习),目标是从大数据中找出那些经常一起出现的东西
项集(item set):可以是单个的项,也可以是一系列的项目的集合
关联规则:根据频繁项集挖掘出的结果。例如{尿布}-》{啤酒} 规则的左侧称为先导,右侧称为后继
支持度:一个项集在数据中出现的比例
支持度(尿布)=(尿布出现的次数)/(购物小票的数量)=0.9
置信度:在一条规则中,出现先导也出现后继的比例
置信度(尿布-》啤酒)=(支持度【尿布U啤酒】)/(支持度【尿布】)=8/9
提升度:衡量先导和后继的独立性
提升度(尿布-》啤酒)=(置信度(尿布-》啤酒)/(支持度【啤酒】)=10/9
【如果(尿布-》啤酒)的提升度等于1,这表示尿布和啤酒无关联;提升度大于1,这表示如果顾客购买了尿布,可能也会买啤酒;而提升度小于1则表示如果顾客购买了尿布,那么不太可能再购买啤酒】
确信度:对于一条规则,不发生先导而发生后继的概率与这条规则错误的概率比值
确信度(尿布-》啤酒)=(1-支持度(啤酒))/(1-置信度(尿布-》啤酒))=9/5
关联挖掘的步骤:找出频繁项集、从频繁项集中提取规则
Apriori算法的核心:如果某个项集是频繁项集,那么它的全部子集也都是频繁项集
Apriori算法:使用排列组合的方式列举出所有可能的项集,每一次计算都需要重新读取整个数据集,从而计算本轮次的项集支持度
FP-Growth:首先使用数据生成一颗FP-Growth树,然后再根据这棵树来生成频繁项集。如下图所示
#记得安装包pip install efficient-apriori from efficient_apriori import apriori #设置数据集 data=[('尿布','啤酒','奶粉','洋葱'), ('尿布','啤酒','奶粉','洋葱'),('尿布','啤酒','苹果','洋葱'),('尿布','啤酒','苹果'),('尿布','啤酒','奶粉'),
('尿布','啤酒','奶粉'),('尿布','啤酒','苹果'),('尿布','奶粉','洋葱'),('奶粉','洋葱')] #挖掘频繁项集和规则 itemsets,rules=apriori(data,min_support=0.4,min_confidence=1) print(itemsets)