关联规则分析

article/2025/9/7 4:03:02

文章目录

  • 一、经典案例
  • 二、相关概念
    • 由k个项构成的集合
    • X=>Y含义
    • 事务仅包含其涉及到的项目,而不包含项目的具体信息
    • 支持度 (support)
    • 置信度 (confidence)
    • 提升度 (lift)
  • 三、实验分析
    • 自制数据集
    • 电影数据集题材

一、经典案例

  • 在美国,一些年轻的父亲下班后经常要到超市去买婴儿尿布,超市也因此发现了一个规律,在购买婴儿尿布的年轻父亲们中,有30%~40%的人同时要买一些啤酒。超市随后调整了货架的摆放,把尿布和啤酒放在一起,明显增加了销售额。如图1所示。
  • 若两个或多个变量的取值之间存在某种规律性,就称为关联。
  • 关联规则是寻找在同一个事件中出现的不同项的相关性,比如在一次购买活动中所买不同商品的相关性。
  • 例如:“在购买计算机的顾客中,有20%的人也同时购买了打印机。”
    在这里插入图片描述
图1 购买尿布和啤酒的关联规则集合

二、相关概念

图2为一个实例。
在这里插入图片描述

图2 关联规则实例
  • 一个样本称为一个“事务”
  • 每个事务由多个属性来确定,这里的属性称为“项”
  • 多个项组成的集合称为“项集”

由k个项构成的集合

  • {牛奶}、{花生酱}都是1-项集;
  • {牛奶, 啤酒}是2-项集;
  • {啤酒, 面包, 牛奶}是3-项集

X=>Y含义

  • X和Y是项集
  • X称为规则前项(antecedent)
  • Y称为规则后项(consequent)

事务仅包含其涉及到的项目,而不包含项目的具体信息

  • 在超级市场的关联规则挖掘问题中事务是顾客一次购物所购买的商品,但事务中并不包含这些商品的具体信息,如商品的数量、价格等。

支持度 (support)

  • 一个项集或者规则在所有事务中出现的频率。 σ ( X ) \sigma(X) σ(X):表示项集 X X X的支持度计数
  • 项集 X X X的支持度: s ( X ) = σ ( X ) / N s(X)=\sigma(X)/N s(X)=σ(X)/N
  • 规则 X = > Y X=>Y X=>Y表示项集 X X X对项集 Y Y Y的支持度,也就是项集 X X X和项集 Y Y Y同时出现的概率
  • 某天共有100个顾客到电脑城购买物品,其中有20个顾客同时购买了计算机和打印机,那么上述的关联规则的支持度就是20%

置信度 (confidence)

  • 确定 Y Y Y在包含 X X X的事务中出现的频率,即: c ( X = > Y ) = σ ( X ∪ Y ) / σ ( X ) c(X=>Y) = \sigma(X\cup Y)/\sigma(X) c(X=>Y)=σ(XY)/σ(X)
  • P ( Y ∣ X ) = P ( X Y ) / P ( X ) P(Y|X)=P(XY)/P(X) P(YX)P(XY)/P(X)
  • 置信度反应了关联规则的可信度,即购买了项集 X X X中的商品的顾客同时也购买了 Y Y Y中商品的可能性有多大
  • 购买咖啡的顾客中有50%的人购买了茶叶,则置信度为50%

如图3所示,规则 ( A , B ) = > C (A,B)=>C (A,B)=>C

  • 支持度:交易中包含 { A , B , C } \{A,B,C\} {A,B,C}的可能性 (25%)
  • 置信度:在 { A , B } \{A,B\} {A,B}交易的前提下包含 C C C的条件概率 (100%)
    在这里插入图片描述
图3

设最小支持度为50%, 最小可信度为 50%, 则可得到 :

  • A = > C A=>C A=>C (50%, 66.6%)
  • C = > A C=>A C=>A (50%, 100%)

若关联规则 X = > Y X=>Y X=>Y的支持度和置信度分别大于或等于用户指定的最小支持度 m i n s u p p o r t minsupport minsupport和最小置信度 m i n c o n f i d e n c e minconfidence minconfidence,则称关联规则 X = > Y X=>Y X=>Y为强关联规则,否则称关联规则 X = > Y X=>Y X=>Y为弱关联规则。

提升度 (lift)

  • l i f t ( A = > B ) = c o n f i d e n c e ( A = > B ) / s u p p o r t ( B ) = P ( B ∣ A ) / P ( B ) lift(A=>B)=confidence(A=>B)/support(B)=P(B|A)/P(B) lift(A=>B)=confidence(A=>B)/support(B)=P(BA)/P(B)
  • 现在有1000 个消费者,有500人购买了茶叶,其中有400人同时购买了咖啡,另100人没有。由于confidence(茶叶=>咖啡)=450/500=80%,由此可能会认为喜欢喝茶的人往往喜欢喝咖啡。但如果另外没有购买茶叶的500人,其中同样有400人购买了咖啡,同样是很高的置信度80%,由此,得到不爱喝茶的也爱喝咖啡。这样看来,其实是否购买咖啡,与有没有购买茶叶并没有关联,两者是相互独立的,其提升度为90%/[(450+450)/1000]=1 。

由此可见, l i f t lift lift正是弥补了 c o n f i d e n c e confidence confidence的这一缺陷,如果 l i f t = 1 lift=1 lift=1,则 X X X Y Y Y独立, X X X Y Y Y出现的可能性没有提升作用,其值越大 ( l i f t > 1 ) (lift>1) (lift>1),则表明 X X X Y Y Y的提升程度越大,也表明关联性越强。
图4为一实例,可以看出, X X X Y Y Y的提升作用最大。
在这里插入图片描述

图4

三、实验分析

自制数据集

可以使用mlxtend工具包得出频繁项集与规则,导包如下:

import pandas as pd
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules

自定义一份购物数据集,即:

retail_shopping_basket = {'ID':[1,2,3,4,5,6],'Basket':[['Beer', 'Diaper', 'Pretzels', 'Chips', 'Aspirin'],['Diaper', 'Beer', 'Chips', 'Lotion', 'Juice', 'BabyFood', 'Milk'],['Soda', 'Chips', 'Milk'],['Soup', 'Beer', 'Diaper', 'Milk', 'IceCream'],['Soda', 'Coffee', 'Milk', 'Bread'],['Beer', 'Chips']]
}

展示一下:

retail = pd.DataFrame(retail_shopping_basket)
pd.options.display.max_colwidth=100
retail

在这里插入图片描述
需要将现实数据转换成one-hot编码格式。
首先,剔除无关特征。

retail_id = retail.drop('Basket',1)
retail_id

显示如下:
在这里插入图片描述
其次,使用join()方法将列表改成字符串:

retail_Basket = retail['Basket'].str.join(',')
retail_Basket

在这里插入图片描述
然后,利用get_dummies()将分类变量转换为虚拟/指示符变量:

retail_Basket = retail_Basket.str.get_dummies(',')
retail_Basket

在这里插入图片描述
最后,将无关特征加进来即可:

retail = retail_id.join(retail_Basket)
retail

在这里插入图片描述
计算该数据集的支持度:

frequent_itemsets = apriori(retail.drop('ID',1), use_colnames=True)
frequent_itemsets

在这里插入图片描述
如果光考虑支持度support(X>Y),[Beer, Chips]和[Beer, Diaper]一样,哪一种组合更相关呢?因此,需要计算提升度:

association_rules(frequent_itemsets,metric='lift')

在这里插入图片描述
显然{Diaper, Beer}更相关一些

电影数据集题材

数据集来源:https://grouplens.org/datasets/movielens/
查看该数据集前10项内容,显示如下:
在这里插入图片描述
数据集中包括电影名字与电影类型的标签,第一步还是先转换成one-hot格式,并把无关特征设置为索引:

movies_ohe = movies.drop('genres',1).join(movies.genres.str.get_dummies('|'))
movies_ohe.set_index(['movieId','title'],inplace=True)
pd.options.display.max_columns=100
movies_ohe.head()

部分显示如下:
在这里插入图片描述

movies_ohe.shape

(9125, 20),说明数据集包括9125部电影,一共有20种不同类型。
计算支持度大于0.015的频繁项集:

frequent_itemsets_movies = apriori(movies_ohe,min_support=0.015,use_colnames=True)
frequent_itemsets_movies

在这里插入图片描述
计算提升度大于1.25的项集:

rules_movies = association_rules(frequent_itemsets_movies,metric='lift',min_threshold=1.25)
rules_movies

在这里插入图片描述
计算提升度大于8的强关联项集,并按提升度值降序排列:

rules_movies[(rules_movies['lift']>8)].sort_values(by=['lift'], ascending=False)

在这里插入图片描述
这说明Children和Animation这两个题材是最相关的。
把包括{Children, Animation}的电影数据显示出来:

movies[(movies.genres.str.contains('Children')) & (movies.genres.str.contains('Animation'))]

在这里插入图片描述


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

相关文章

关联规则(Association Rules)笔记

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

关联规则(Apriori、FP-grpwth)

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

大数据分析笔记 (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 一、实验项目:关联规则算法学习 项目性质:设计型 二、实验目的: 理解并掌握关联规则经典算法Apriori算法,理解算法的原理,能够实现算法,并对给定的数据集进行关联规则挖掘 三、实…

统计分析 -- t分布

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

t分布表

非常需要,保存下来,随时可以取

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

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

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

目录 大样本抽样分布 正态分布小样本抽样分布—t分布 运用t分布构建小样本抽样均值的置信区间 运用t分布进行小样本抽样均值检验 大样本抽样分布 对于大样本的抽样分布,由中心极限定理,无论总体分布是否为正态分布,其均值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,大家好!最近有在学习一些有关偏态分布的数理知识,但在搜偏 t t t分布的相关资料的时候感觉比较散,所以做个整理,主要参考的书籍是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分布 统计量的分布称为 抽样分布,在使用统计量进行统计推断时需要知道它的分布,当总体的分布函数已知时,抽样分布是确定的,然而要求出统计量的精确分布,一般…

t检验、t分布、t值

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

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

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

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

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

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

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

卡方分布、F分布、t分布和正态分布的关系

这三个分布都是基于正态分布变形得到的,在实际中只能用来做假设检验。比如卡方分布(chi-square distribution, χ-distribution,或写作χ分布),已知样本X都是服从正态分布的样本,而且方差未知,那…