用于发现隐藏在大型数据集中有意义的联系,所发现的联系可以用频繁项集或者关联规则的形式表示
相关概念
项目:交易数据库中的一个字段,对超市的交易来说一般是指一次交易中的一个物品,如:牛奶
事务:某个客户在一次交易中,发生的所有项目的集合:如{牛奶,面包,啤酒}
项集:包含若干个项目的集合(一次事务中的),一般会大于0个(包含K个 项目就是K-项集)
支持度:项集{X,Y}在总项集中出现的概率(见下面的例子)(支持度计数)
频繁项集:某个项集的支持度大于设定阈值(人为设定或者根据数据分布和经验来设定),即称这个项集为频繁项集。[图片上传中...(123.png-7ecaad-1603444849225-0)]
置信度:在先决条件X发生的条件下,由关联规则{X->Y }推出Y的概率。表示在发生X的项集中,同时会发生Y的可能性,即 X和Y 同时发生的个数占包含X发生个数的比例
Confidence(X→Y) = P(Y|X) = P(X,Y) / P(X) = P(X∩Y) / P(X)
- 提升度:表示含有X的条件下同时含有Y的概率,与无论含不含X含有Y的概率之比。
即表示“包含X的事务中同时包含Y事务的比例”与“包含Y事务的比例”的比值。
提升度反映了关联规则中的X与Y的相关性,提升度>1且越高表明正相关性越高,提升度<1且越低表明负相关性越高,提升度=1表明没有相关性。
123.png
支持度,置信度,提升度的例子
https://www.jianshu.com/p/dc053deb94f2
关联规则的挖掘:
1.找出所有频繁项集,满足最小支持度
2.由频繁项集产生强关联规则,,满足最小置信度
Apriori
一个包含k个项目的数据集可能产生(2的k次方-1)个频繁项集
算法性质:(具有方向性,从一个项到N)
搜索-匹配-计数-求比例·····
- 频繁项集的所有非空子集也一定是频繁的
-
非频繁项集的超集必定是非频繁的
Apriori.png
候选集的产生.png
111.png
222.png
333.png
模型评估
利用提升度
https://www.jianshu.com/p/dc053deb94f2
规则X-Y
P(Y|X)/P(Y),称之为X条件对Y事务的提升度,即有X作为前提。
#####################################
666.png
R语言
- 载入 arules包
- 数据处理,转换成事务型数据集 ##cjb_trans <- as(cjb,'transactions')
- 设置参数
- 找出频繁项集(Apriori算法)
- 得出强规则
- 去除冗余规则
- 可视化