作者:甜甜天蚕宝_431 | 来源:互联网 | 2023-10-13 16:49
目录
关联规则
衡量标准
支持度
置信度
杠杆率(leverage)
确信度(conviction)
提升度
实现
美国沃尔玛超市对一年多的原始交易数据进行了详细的分析,得到一个意外发现:与尿布一起被购买最多的商品竟然是啤酒。
--关联规则在客户关系管理系统中的经典案例
关联规则
形如"如果A那么B(If…Then…)",前者为条件,后者为结果。例如一个顾客,如果买了A,那么他也会购B。
衡量标准
如何来度量一个规则是否够好?主要有两个量,置信度(Confidence)和支持度(Support)。
支持度
对于关联规则R:X=>Y,其中,,并且。
规则R的的支持度(Support)是交易集中同时包含X和Y的交易数与所有交易数之比。
关联规则的最小支持度也就是衡量频繁集的最小支持度(Minimum Support),记为supmin,它用于衡量规则需要满足的最低重要性。
置信度
表示了这条规则有多大程度上值得可信。
设条件的项的集合为A,结果的集合为B。置信度计算在A中,同时也含有B的概率(即:if A ,then B的概率)。即 Confidence(AàB)=P(B|A)。
关联规则的最小置信度(Minimum Confidence)记为confmin,它表示关联规则需要满足的最低可靠性。
如果规则R:X=>Y满足support(X=>Y)>supmin且confidence(X=>Y)>confmin,称关联规则X=>Y为强关联规则,否则称关联规则X=>Y为弱关联规则。
在挖掘关联规则时,产生的关联规则要经过supmin和confmin的衡量,筛选出来的强关联规则才能用于指导商家的决策。
杠杆率(leverage)
P(A,B)−P(A)P(B)P(A,B)-P(A)P(B)P(A,B)−P(A)P(B),为0时A和B独立,越大A和B的关系越密切。
确信度(conviction)
P(A)P(!B)/(P(A,!B)+1/K)P(A)P(!B)/(P(A,!B)+1/K)P(A)P(!B)/(P(A,!B)+1/K) ,(!B表示B没有发生,K表示总条目数量) 也是用来衡量A和B的独立性。
提升度
引入提升度Lift,以度量此规则是否可用。它描述的是:相对于不用规则,使用规则可以提高多少。
实现
#定义函数读取购物篮数据
def read_file_apriori(filename):k=[]with open(filename) as f:for i in f:k.append(i.split())return k
data=read_file_apriori("d:/datasets/basket.txt")from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori
import pandas as pd
te = TransactionEncoder()
#编码
te_ary = te.fit(data).transform(data)
df = pd.DataFrame(te_ary, columns=te.columns_)
freq=apriori(df,min_support=0.05, use_colnames=True)
#导入关联规则包
from mlxtend.frequent_patterns import association_rules
#计算关联规则
result = association_rules(freq, metric="confidence", min_threshold=0.4)