python 关联规则

article/2025/9/7 4:06:00

文章目录

  • 一、基本概念
    • 定义1. 记录(事务)
    • 定义2. 事务集
    • 定义3. 项目(项)
    • 定义4. 项目集(项集)
    • 定义5. k项集
    • 定义6. 支持度(Support)
    • 定义7. 置信度(Confidence)
    • 定义8. 最小支持度(min Support)
    • 定义9. 最小置信度(min Confidence)
    • 定义10. 提升度
    • 定义11. 频繁K项集
    • 定义12. 候选K项集
    • 定理1
    • 定理2
  • 二、Apriori 算法流程
  • 三、Apriori 算法小案例
  • 四、python 实战

一、基本概念

  • 例表
    在这里插入图片描述

定义1. 记录(事务)

  • 如 {ABCD}, {ABCE}, … 每一个都是一条记录(事务)
    在这里插入图片描述

定义2. 事务集

  • 如表,{ABCD,ABCE,…} 所有记录构成的集合叫做事务集
    在这里插入图片描述

定义3. 项目(项)

  • A、B、C … 每一个都称为一个项目(项)

定义4. 项目集(项集)

  • 由项目组成的集合,如{A,B,C,D}、 {A、B、C、E}

定义5. k项集

  • 如{A,B,C,D} 称为4项集(k=4)

定义6. 支持度(Support)

  • 简单理解就是概率(频率)
    S u p = 某 个 项 集 在 事 物 集 出 现 的 次 数 事 物 集 总 的 记 录 个 数 Sup = \dfrac{某个项集在事物集出现的次数}{事物集总的记录个数} Sup=
    例:如项集 {AC} ,其支持度 S u p { A C } = 4 7 = 0.57 \ Sup\left\{AC\right\} = \dfrac{4}{7} = 0.57  Sup{AC}=74=0.57
    在这里插入图片描述

定义7. 置信度(Confidence)

  • 简单理解就是条件概率: P ( Y ∣ X ) = P ( X Y ) P ( X ) \ P(Y|X) = \dfrac{P(XY)}{P(X)}  P(YX)=P(X)P(XY),即在X出现的条件下,Y出现的概率
    C o n ( X → Y ) = S u p ( X Y ) S u p ( X ) \ Con(X\rightarrow Y) = \dfrac{Sup(XY)}{Sup(X)}  Con(XY)=Sup(X)Sup(XY)

定义8. 最小支持度(min Support)

  • 人为规定的一个支持度

定义9. 最小置信度(min Confidence)

  • 人为规定的一个置信度

定义10. 提升度

L i f t ( A → B ) = c o n ( A → B ) s u p ( B ) \ Lift(A\rightarrow B) = \frac{con(A \rightarrow B)}{sup(B)}  Lift(AB)=sup(B)con(AB)
在A发生的基础上发生B的概率与B单独发生的概率比值

定义11. 频繁K项集

  • 满足最小支持度的K项集
  • 假设给定最小支持度为0.5,2项集{AC}的支持度Sup{AC} = 0.57,则称{AC}为频繁2项集

定义12. 候选K项集

  • 用来生成频繁K项集的K项集(不等价所有K项集)

定理1

  • 如果X是一个频繁K项集,则它的所有子集也一定是频繁的

定理2

  • 如果X不是K-1项频繁,则它一定不是频繁K项集

二、Apriori 算法流程

  • Step 1:令K=1,计算单个项目的支持度,并筛选出频繁1项集(≥最小支持度)
  • Step 2:从K=2开始)根据K-1项的频繁项目集生成候选K项目集,并进行预剪枝
  • Step 3:由候选K项目集生成频繁K项集(筛选出满足最小支持度的K项集)

重复步骤2和3,直到无法满足最小支持度的集合。(第一阶段结束)

  • Step 4:将获得的最终频繁K项集,依次取出,同时计算该次取出的这个K项集的所有真子集,然后以排列组合的方式形成关联规则,并计算规则的置信度以及提升度,将符合要求的关联规则生成提出。

三、Apriori 算法小案例

在这里插入图片描述

  • 首先,给定最小支持度 0.3 = 2.1 7 \ 0.3 = \frac{2.1}{7}  0.3=72.1

  • Step 1:令K=1,计算单个项目的支持度,并筛选出频繁1项集(≥最小支持度)
      {A},{B},{C},{D},{E},{F}的支持度分别为:0.71,0.86,0.71,0.57,0.57,0.29. {F}的支持度小于给定的最小支持度0.3,去掉,得到频繁1项集为{A},{B},{C},{D},{E}

  • Step 2:从K=2开始)根据K-1项的频繁项目集生成候选K项目集,并进行预剪枝
      用K-1项集进行排列组合(这里K-1=1,K=2)(这里没有用到预剪枝),得到候选2项集
    在这里插入图片描述

  • Step 3:由候选K项目集生成频繁K项集(筛选出满足最小支持度的K项集)
    由最小支持度为2.1/7,可以筛选出频繁2项集:{A,B},{A,C},{B,C},{B,D},{B,E},{C,D}

  • 重复步骤2和3,直到无法满足最小支持度的集合:
    重复第1次
    (Step 2):根据频繁2项集,进行排列组合,生成候选3项集
    在这里插入图片描述
    (Step 3):首先将不满足K-1=2的项集删去,其次删去不满足最小支持度的项集(其实也可以用定理2,如项集{A,B,D},其K-1项子集{A,D}不是频繁2项集,故可以认为{A,B,D}也一定不是频繁项集)

最终得到的频繁3项集为:{A,B,C} ——(这里案例只有一个,实际情况可能很多)

  • Step 4:将获得的最终频繁K项集,依次取出,同时计算该次取出的这个K项集的所有真子集,然后以排列组合的方式形成关联规则,并计算规则的置信度以及提升度,将符合要求的关联规则生成提出。
      1)将获得的最终频繁K项集,依次取出:这里只有1个频繁K项集{A,B,C},故只取1次
      2)计算该次取出的这个K项集的所有真子集.
            {A,B,C}的所有真子集:{A},{B},{C},{AB},{AC},{BC}

    3)以排列组合的方式形成关联规则(两个项集之间不能有交集)
          {A}->{B}、 {A}->{C}、{A}->{BC}、
          {B}->{A}、 {B}->{C}、{B}->{AC}、
          {C}->{A}、 {C}->{B}、{C}->{AB}、
          {AB}->{C}、{AC}->{B}、{BC}->{A}

    4)计算规则的置信度以及提升度(以{A}->{BC}为例)
      置信度 C o n ( { A } → { B , C } ) = S u p ( { B , C } ) S u p ( { A } ) = 3 / 5 = 0.6 \ Con(\left\{A\right\}→\left\{B,C\right\})=\frac{Sup(\left\{B,C\right\})}{Sup(\left\{A\right\})}=3/5=0.6  Con({A}{B,C})=Sup({A})Sup({B,C})=3/5=0.6

      提升度 L i f t ( { A } → { B , C } ) = C o n ( { A } → { B , C } ) S u p ( { B , C } ) = 0.6 / ( 4 / 7 ) = 1.05 > 1 \ Lift(\left\{A\right\}→\left\{B,C\right\})=\frac{Con(\left\{A\right\}→\left\{B,C\right\})}{Sup(\left\{B,C\right\})}=0.6/(4/7)=1.05>1  Lift({A}{B,C})=Sup({B,C})Con({A}{B,C})=0.6/(4/7)=1.05>1
因此{A}→{BC}是一条比较令人信服的关联规则
同理,计算其它关联规则的置信度和提升度即可。最后输出满足条件的关联规则。

四、python 实战

  • 以上文数据集为例
  • 采用mlxtend库,没有安装的需要pip install mlxtend。最后的结果也表明,跟上文的结果一致。
  • 参考:关联规则算法Apriori的Python实现
from mlxtend.preprocessing import TransactionEncoder  
from mlxtend.frequent_patterns import apriori  
from mlxtend.frequent_patterns import association_rules  
import pandas as pd  data_set = [['A','B','C','D'],['A','B','C','E'],['B','D','E','F'],['B','C','D','E'],['A','C','D','F'],['A','B','C'],['A','B','E']]  #转换为算法可接受模型(布尔值)  
te = TransactionEncoder()  
df_tf = te.fit_transform(data_set)  
df = pd.DataFrame(df_tf,columns=te.columns_)  #设置支持度求频繁项集  
frequent_itemsets = apriori(df,min_support=0.3,use_colnames= True)  
#求关联规则,设置最小置信度为0.15  
rules = association_rules(frequent_itemsets,metric = 'confidence',min_threshold = 0.15)  
#设置最小提升度  
rules = rules.drop(rules[rules.lift <1.0].index)  
#设置标题索引并打印结果  
rules.rename(columns = {'antecedents':'from','consequents':'to','support':'sup','confidence':'conf'},inplace = True)  
rules = rules[['from','to','sup','conf','lift']]  

在这里插入图片描述


http://chatgpt.dhexx.cn/article/NZfngBXq.shtml

相关文章

关联规则分析

文章目录 一、经典案例二、相关概念由k个项构成的集合X>Y含义事务仅包含其涉及到的项目&#xff0c;而不包含项目的具体信息支持度 (support)置信度 (confidence)提升度 (lift) 三、实验分析自制数据集电影数据集题材 一、经典案例 在美国&#xff0c;一些年轻的父亲下班后…

关联规则(Association Rules)笔记

1 关联规则产生的原因&#xff1a;购物篮问题 关联规则最初是为了解决购物篮问题而产生。上世纪九十年代&#xff0c;美国的沃尔玛超市发现&#xff0c;啤酒和尿布这两种完全不着边际的商品竟然有很高的概率一起被购买。 在一段时间之后&#xff0c;他终于分析出了原因&#xf…

关联规则(Apriori、FP-grpwth)

什么是关联规则 关联规则&#xff08;Association Rules&#xff09;是反映一个事物与其他事物之间的相互依存性和关联性&#xff0c;是数据挖掘的一个重要技术&#xff0c;用于从大量数据中挖掘出有价值的数据项之间的相关关系。 所谓数据挖掘就是以某种方式分析源数据&#…

大数据分析笔记 (4) -关联规则(Association Rules)

大数据分析笔记 - 关联规则 总览Apriori算法算法流程评估候选规则 (Evaluation of Candidate Rules)置信度 (Confidence)提升度 (Lift)杠杆率 (leverage)对比结合方法 (Combination of Measures) 验证和测试诊断 应用 总览 关联规则是一种无监督学习方法。这是一种描述性(desc…

机器学习-关联规则

关联规则:关联规则是描述在一个交易中物品之间同时出现的规律的知识模式,更确切的说,关联规则是通过量化的数字描述物品A的出现对物品B的出现有多大影响 A与B是独立的两个非空事务,且A、B同属于一个事务集,那么关联规则是形如A=>B的蕴含式。 关联规则有两种度量标准:…

关联规则算法学习—Apriori

关联规则算法学习—Apriori 一、实验项目&#xff1a;关联规则算法学习 项目性质&#xff1a;设计型 二、实验目的&#xff1a; 理解并掌握关联规则经典算法Apriori算法&#xff0c;理解算法的原理&#xff0c;能够实现算法&#xff0c;并对给定的数据集进行关联规则挖掘 三、实…

统计分析 -- t分布

t 分布的图形与特征 以0为中心&#xff0c;左右对称的单峰分布&#xff1b;t分布曲线是一簇曲线&#xff0c;其形态变化与自由度的大小有关。自由度越小&#xff0c;则t 值越分散&#xff0c;t分布曲线的峰部越矮而尾部翘得越高&#xff1b;说明尾部面积&#xff08;概率P&…

t分布表

非常需要&#xff0c;保存下来&#xff0c;随时可以取

正态分布/卡方分布/F分布/T分布

正态分布&#xff1a; 正态分布&#xff08;Normal distribution&#xff09;又名高斯分布&#xff08;Gaussiandistribution&#xff09;&#xff0c;若随机变量X服从一个数学期望为μ、方差为σ^2的高斯分布&#xff0c;记为N(μ&#xff0c;σ^2)。其概率密度函数为正态分布…

t分布(Student t distribution)——正态分布的小样本抽样分布

目录 大样本抽样分布 正态分布小样本抽样分布—t分布 运用t分布构建小样本抽样均值的置信区间 运用t分布进行小样本抽样均值检验 大样本抽样分布 对于大样本的抽样分布&#xff0c;由中心极限定理&#xff0c;无论总体分布是否为正态分布&#xff0c;其均值x_bar的抽样分布…

t分布的构造

t分布是在正态分布和卡方分布的基础上构造的, 我们通过代码实现一下 import numpy as np import seaborn as sns import matplotlib.pyplot as plt import warnings warnings.filterwarnings("ignore")# 正态分布 N np.random.normal(0, 1, 100000)# 自由度为 2, …

数理知识:偏t分布

Hello&#xff0c;大家好&#xff01;最近有在学习一些有关偏态分布的数理知识&#xff0c;但在搜偏 t t t分布的相关资料的时候感觉比较散&#xff0c;所以做个整理&#xff0c;主要参考的书籍是Azzalini在2014年出版的一本有关偏态分布族的书《The Skew-Normal and Related F…

正态分布、t分布、卡方分布、F分布的关系与差异

要理解这些分布,要从基础的正态分布开始。 1. 正态分布 下面是维基百科对正态分布的介绍: 正态分布(英语:normal distribution)又名高斯分布(英语:Gaussian distribution),是一个非常常见的连续概率分布。若随机变量 X服从一个位置参数为 ?、尺度参数为 σ 的正态分…

t分布与t检验详解

最近又遇到了t分布及t检验方面的内容,发现有些地方自己当初没有很明白,就又查了些资料,加深了一下自己的理解,这里也将自己的一些理解记录下来。 1. 理论基础——大数定理与中心极限定理 在正式介绍t分布前,还是再强调一下数理统计学中的两大基石般的定理:大数定理与中心…

抽样分布之χ2 分布,t分布,F分布

文章目录 1. χ 2 \chi^2 χ2 分布2. t t t分布3. F F F分布 统计量的分布称为 抽样分布&#xff0c;在使用统计量进行统计推断时需要知道它的分布&#xff0c;当总体的分布函数已知时&#xff0c;抽样分布是确定的&#xff0c;然而要求出统计量的精确分布&#xff0c;一般…

t检验、t分布、t值

1. t检验的历史 阿瑟健力士公司&#xff08;Arthur Guinness Son Co.&#xff09;是一家由阿瑟健力士&#xff08;Arthur Guinness&#xff09;于1759年在爱尔兰都柏林建立的一家酿酒公司&#xff1a; 不过它最出名的却不是啤酒&#xff0c;而是《吉尼斯世界纪录大全》&#xf…

详解三大抽样分布:t分布、卡方分布、F分布

转载自https://www.cnblogs.com/think-and-do/p/6509239.html T分布&#xff1a;温良宽厚 本文由“医学统计分析精粹”小编“Hiu”原创完成&#xff0c;文章采用知识共享Attribution-NonCommercial-NoDerivatives 4.0国际许可协议(http://creativecommons.org/licenses/by-nc-…

几大分布:正态分布、卡方分布、t分布、F分布整理

一、正态分布 正态分布&#xff08;Normal distribution&#xff09;又名高斯分布&#xff08;Gaussiandistribution&#xff09;&#xff0c;若随机变量X服从一个数学期望为μ、方差为σ2的高斯分布&#xff0c;记为N(μ&#xff0c;σ2)。其概率密度函数为正态分布的期望值μ…

数理统计三大分布:卡方分布、t分布、F分布

数理统计三大分布&#xff1a;卡方分布、t分布、F分布 正态分布卡方分布定义概率密度函数性质 t分布定义概率密度函数性质 F分布定义概率密度函数性质 Attention 正态分布 由于 χ 2 \chi^2 χ2&#xff08;chi-squard&#xff09;分布、t分布、F分布都是由正态分布构造的&…