关联规则2:相关知识

关联规则的常用术语包括:

  • 项目(Item):I={I1,I2,…Im}是m个不同项目的集合,集合中的元素称为项目(Item)。项目可以看做是每次交易/订单的基本组成元素。例如在超市中,该项目可以是一个笔记本,一杯牛奶。

  • 事务(transaction):可以看做是消费者发生一笔交易中所有项目的集合注意,此处项目是去重的。对于客户购物篮来说,发生的所有项目的集合:如{牛奶,面包,啤酒},{保湿水,洗面奶,发箍}。

  • 项集(Item set):在一次事务中,包含若干个项目的集合,一般会大于0个。

  • 支持度:项集{X,Y}在总项集中出现的概率(见下面的例子)
    在这里插入图片描述

  • 频繁项集:某个项集的支持度大于设定阈值(人为设定或者根据数据分布和经验来设定),即称这个项集为频繁项集。

  • 置信度:在先决条件X发生的条件下,由关联规则{X->Y }推出Y的概率
    关联规则2:相关知识_第1张图片

  • 提升度:表示含有X的条件下同时含有Y的概率,与无论含不含X含有Y的概率之比。
    当lift>1,说明A和B之间有正相关关系,且数值越大正相关程度越高
    当lift<1,说明A和B之间有负相关关系,且数值越小负相关程度越高
    当lift=1,说明A和B之间没有相关关系
    l i s t ( X → Y ) = c o n f i d e n c e ( X → Y ) s u p p o r t ( Y ) list({X→Y}) = \frac{confidence({X→Y})}{support({Y})} list(XY)=support(Y)confidence(XY)

  • 杠杆率Leverage: Leverage=0时X和Y独立,Leverage越大X和Y的关系越密切。

L e v e r a g e = P ( X , Y ) − P ( X ) P ( Y ) Leverage =P(X,Y)-P(X)P(Y) Leverage=P(X,Y)P(X)P(Y)

  • 确信度Conviction:Conviction用来衡量X和Y的独立性,值越大, A、B越关联。
    C o n v i c t i o n = P ( A ) P ( ! B ) / P ( A , ! B ) ( ! B 表 示 B 没 有 发 生 ) Conviction = P(A)P(!B)/P(A,!B) (!B表示B没有发生) Conviction=P(A)P(!B)/P(A,!B)!BB
    注意:以上提及的X和Y不能有重合的项集(itemset).

从例子中应用关联规则–python

  1. 构建数据集

     records = [['牛奶','洋葱','肉豆蔻','芸豆','鸡蛋','酸奶'],
     ['莳萝','洋葱','肉豆蔻','芸豆','鸡蛋','酸奶'],
     ['牛奶','苹果','芸豆','鸡蛋'],
     ['牛奶','独角兽','玉米','芸豆','酸奶'],
     ['玉米','洋葱','洋葱','芸豆','冰淇淋','鸡蛋']]
    
  2. 安装程序包:

     pip install mlxtend
    
  3. 数据预处理及转换

     import pandas as pd	
     from mlxtend.preprocessing import TransactionEncoder	
    
     myencoder = TransactionEncoder()  
     #进行 one-hot 编码,转换交易记录
     te_ary = myencoder.fit(records).transform(records)
    
     ##onehot编码后数据会变成稀疏矩阵,行数是交易数,列是项目数
     df = pd.DataFrame(te_ary, columns=te.columns_)
     df  
    

项目及项目的编号
在这里插入图片描述
稀疏矩阵关联规则2:相关知识_第2张图片

  1. 计算支持度阈值以上的所有频繁项集
    n 个 i t e m 可 以 生 成 的 项 集 数 量 = 2 n − 1 。 n个item可以生成的项集数量 = \quad 2^{n}-1。 nitem=2n1
    因此,需要指定最小支持度,用于过滤掉非频繁项集。

     Apriori算法的参数说明
     def apriori(df, min_support=0.5,  
         use_colnames=False, 
         max_len=None)
         
     参数如下:
     df:数据集。
     min_support:给定的最小支持度。
     use_colnames:默认False,则返回的物品组合用编号显示,为True的话直接显示物品名称。
     max_len:最大物品组合数,默认是None,不做限制。如果只需要计算两个物品组合的话,便将这个值设置为2。
    
     ## 当最小支持度=0.05时,找到了148个频繁项集
     freq = apriori(df, min_support=0.05, use_colnames=True)
     freq
    

关联规则2:相关知识_第3张图片
关联规则2:相关知识_第4张图片

  1. 计算关联规则
    关联规则2:相关知识_第5张图片

     from mlxtend.frequent_patterns import association_rules
     ass_rule = association_rules(freq, metric='confidence', min_threshold=0.8)
     ass_rule.sort_values(by='leverage', ascending=False, inplace=True)
     ass_rule
    

在确定有效关联规则时,需要结合置信度,提升度,和杠杆率一起考虑。
关联规则评价体系

你可能感兴趣的:(关联规则,大数据)