京公网安备 11010802034615号
经营许可证编号:京B2-20210330
来源:AI入门学习
作者:小伍哥
1、算法概述
关联规则挖掘可以让我们从数据集中发现项与项(item 与 item)之间的关系,它在我们的生活中有很多应用场景,“购物篮分析”就是一个常见的场景,这个场景可以从消费者交易记录中发掘商品与商品之间的关联关系,进而通过商品捆绑销售或者相关推荐的方式带来更多的销售量。所以说,关联规则挖掘是个非常有用的技术。
关联规则是反映一个事物与其他事物之间的相互依存性和关联性,常用于实体商店或在线电商的推荐系统:通过对顾客的购买记录数据库进行关联规则挖掘,最终目的是发现顾客群体的购买习惯的内在共性,例如购买产品A的同时也连带购买产品B的概率,根据挖掘结果,调整货架的布局陈列、设计促销组合方案,实现销量的提升,最经典的应用案例莫过于<啤酒和尿布>。
关联分析又称关联挖掘,就是在交易数据、关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式、关联、相关性或因果结构。能从大量数据中发现项集之间有趣的关联和相关联系。关联分析的一个典型例子是购物篮分析。该过程通过发现顾客放人其购物篮中的不同商品之间的联系,分析顾客的购买习惯。通过了解哪些商品频繁地被顾客同时购买,这种关联的发现可以帮助零售商制定营销策略。其他的应用还包括价目表设计、商品促销、商品的排放和基于购买模式的顾客划分。
可从数据库中关联分析出形如“由于某些事件的发生而引起另外一些事件的发生”之类的规则。如“67%的顾客在购买啤酒的同时也会购买尿布”,因此通过合理的啤酒和尿布的货架摆放或捆绑销售可提高超市的服务质量和效益。又如“C语言课程优秀的同学,在学习‘数据结构’时为优秀的可能性达88%”,那么就可以通过强化“C语言”的学习来提高教学效果。
2、应用场景
01)互联网推荐
个性化推荐:在界面上给用户推荐相关商品
组合优惠券:给购买过得用户发放同时购买组合内商品的优惠券
捆绑销售:将相关商品组合起来销售
02)线下店铺分析
商品配置分析:哪些商品可以一起购买,关联商品如何陈列/促销
客户需求分析:分析顾客的购买习惯/顾客购买商品的时间/地点等
3)金融保险
经由购物篮分析能够设计不同的服务组合以扩大利润;能藉由购物篮分析侦测出可能不寻常的投保组合并作预防。
4)风控领域
分析同时行动的账号、寻找有效的策略组合
3、几个概念
关联规则三个核心概念:支持度、置信度、提升度,用最经典的啤酒-尿不湿给大家举例说明这三个概念,以下是几名客户购买的商品列表:
01)支持度
支持度 (Support):指某个商品组合出现的次数与总次数之间的比例。
在这个例子中,我们可以看到“牛奶”出现了 4 次,那么这 5 笔订单中“牛奶”的支持度就是 4/5=0.8。
同样“牛奶 + 面包”出现了 3 次,那么这 5 笔订单中“牛奶 + 面包”的支持度就是 3/5=0.6
这样理解起来是不是非常简单了呢,大家可以动动手计算下 '尿不湿+啤酒'的支持度是多少
02)置信度
置信度 (Confidence):指的就是当你购买了商品 A,会有多大的概率购买商品 B
置信度(牛奶→啤酒)= 3/4=0.75,代表如果你购买了牛奶,有多大的概率会购买啤酒
置信度(啤酒→牛奶)= 3/4=0.75,代表如果你购买了啤酒,有多大的概率会购买牛奶?
置信度(啤酒→尿不湿)= 4/4=1.0,代表如果你购买了啤酒,有多大的概率会买尿不湿
由上面的例子可以看出,置信度是个条件概念,就是说在 A 发生的情况下,B 发生的概率是多少。
03)提升度
提升度 (Lift):我们在做商品推荐或者策略的时候,重点考虑的是提升度,因为提升度代表的是商品 A 的出现,对商品 B 的出现概率提升的程度。
提升度 (A→B) = 置信度 (A→B)/ 支持度 (B)
所以提升度有三种可能:
提升度 (A→B)>1:代表有提升;
提升度 (A→B)=1:代表有没有提升,也没有下降;
提升度 (A→B)<1:代表有下降。
提升度 (啤酒→尿不湿) =置信度 (啤酒→尿不湿)/支持度 (尿不湿)=1.0/0.8=1.25
可见啤酒对尿不湿是有提升的,提升度为1.25,其实可以简单理解为:在全集的情况下,尿不湿的概率为0.8,
而在包含啤酒这个子集中,尿不湿的概率为1,因此,子集的限定,提高了尿不湿的概率。
04)频繁项集
频繁项集(frequent itemset) :就是支持度大于等于最小支持度 (Min Support) 阈值的项集,
所以小于最小值支持度的项目就是非频繁项集,而大于等于最小支持度的的项集就是频繁项集。项集可以是单个商品,也可以是组合
Apriori算法核心思想:
某个项集是频繁的,那么它的所有子集也是频繁的。
{Milk, Bread, Coke} is frequent → {Milk, Coke} is frequent
如果一个项集是 非频繁项集,那么它的所有超集也是非频繁项集
{Battery} is infrequent → {Milk, Battery} is infrequent
如图所示,我们发现{A,B}这个项集是非频繁的,那么{A,B}这个项集的超集,{A,B,C},{A,B,D}等等也都是非频繁的,这些就都可以忽略不去计算。
运用Apriori算法的思想,我们就能去掉很多非频繁的项集,大大简化计算量。
这里用的是Python举例,用的包是apriori,当然R语言等其他语言,也有对应的算法包,原来都是一样的。
#包安装 pip install efficient-apriori #加载包 from efficient_apriori import apriori #
构造数据集 data = [('牛奶','面包','尿不湿','啤酒','榴莲'),
('可乐','面包','尿不湿','啤酒','牛仔裤'),
('牛奶','尿不湿','啤酒','鸡蛋','咖啡'),
('面包','牛奶','尿不湿','啤酒','睡衣'),
('面包','牛奶','尿不湿','可乐','鸡翅')] #挖掘频繁项集和频繁规则 itemsets, rules =
apriori(data, min_support=0.6, min_confidence=1) #频繁项集 print(itemsets)
{1: {('啤酒',): 4, ('尿不湿',): 5, ('牛奶',): 4, ('面包',): 4}, 2: {('啤酒', '尿不湿'): 4,
('啤酒', '牛奶'): 3, ('啤酒', '面包'): 3, ('尿不湿', '牛奶'): 4, ('尿不湿', '面包'): 4,
('牛奶', '面包'): 3}, 3: {('啤酒', '尿不湿', '牛奶'): 3, ('啤酒', '尿不湿', '面包'): 3,
('尿不湿', '牛奶', '面包'): 3}}
itemsets[1] #满足条件的一元组合 {('啤酒',): 4, ('尿不湿',): 5, ('牛奶',): 4, ('面包',): 4}
itemsets[2]#满足条件的二元组合 {('啤酒', '尿不湿'): 4,('啤酒', '牛奶'): 3,('啤酒', '面包'):
3,('尿不湿', '牛奶'): 4,('尿不湿', '面包'): 4,('牛奶', '面包'): 3}
itemsets[3]#满足条件的三元组合 {('啤酒', '尿不湿', '牛奶'): 3, ('啤酒', '尿不湿', '面包'):
3, ('尿不湿', '牛奶', '面包'): 3} #频繁规则 print(rules)
[{啤酒} -> {尿不湿}, {牛奶} -> {尿不湿}, {面包} -> {尿不湿}, {啤酒, 牛奶} ->
{尿不湿}, {啤酒, 面包} -> {尿不湿}, {牛奶, 面包} -> {尿不湿}]
每个导演都有自己的偏好、比如周星驰有星女郎,张艺谋有谋女郎,且巩俐经常在张艺谋的电影里面出现,因此,每个导演对演员的选择都有一定的偏爱,我们以宁浩导演为例,分析下选择演员的一些偏好,没有找到公开的数据集,自己手动扒了一部分,大概如下,有些实在有点多,于是简化下进行分析
可以看到,我们一共扒了9部电影,计算的时候,支持度的时候,总数就是9.
#把电影数据转换成列表 data = [['葛优','黄渤','范伟','邓超','沈腾','张占义','
王宝强','徐峥','闫妮','马丽'],
['黄渤','张译','韩昊霖','杜江','葛优','刘昊然','宋佳','王千源','任素汐','吴京'],
['郭涛','刘桦','连晋','黄渤','徐峥','优恵','罗兰','王迅'],
['黄渤','舒淇','王宝强','张艺兴','于和伟','王迅','李勤勤','李又麟','宁浩','管虎','梁静','
徐峥','陈德森','张磊'],
['黄渤','沈腾','汤姆·派福瑞','马修·莫里森','徐峥','于和伟','雷佳音','刘桦','邓飞','
蔡明凯','王戈','凯特·纳尔逊','王砚伟','呲路'],
['徐峥','黄渤','余男','多布杰','王双宝','巴多','杨新鸣','郭虹','陶虹','黄精一','赵虎','王辉'],
['黄渤','戎祥','九孔','徐峥','王双宝','巴多','董立范','高捷','马少骅','王迅','刘刚','
WorapojThuantanon','赵奔','李麒麟','姜志刚','王鹭','宁浩'],
['黄渤','徐峥','袁泉','周冬雨','陶慧','岳小军','沈腾','张俪','马苏','刘美含','王砚辉','焦俊艳','郭涛'],
['雷佳音','陶虹','程媛媛','山崎敬一','郭涛','范伟','孙淳','刘桦','黄渤','岳小军','傅亨','王文','杨新鸣']]
#算法应用 itemsets, rules = apriori(data, min_support=0.5, min_confidence=1) print(itemsets)
{1: {('徐峥',): 7, ('黄渤',): 9}, 2: {('徐峥', '黄渤'): 7}} print(rules)
[{徐峥} -> {黄渤}]
通过上述分析可以看出:
在宁浩的电影中,用的最多的是黄渤和徐峥,黄渤9次,支持度100%,徐峥7次,支持度78%,('徐峥', '黄渤') 同时出现7次,置信度为100%,看来有徐峥,必有黄渤,真是宁浩必请的黄金搭档。
当然,这个数据量比较小,基本上肉眼也能看出来,这里只是提供一个分析案例,巩固下基础知识,大规模的数据,人眼无法直接感知的时候,算法的挖掘与发现,就显得特别有意义了。
CDA学员免费下载查看报告全文:2026全球数智化人才指数报告【CDA数据科学研究院】.pdf
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
近日,由 CDA 数据科学研究院重磅发布的《2026 全球数智化人才指数报告》,被中国教育科学研究院官方账号正式收录, ...
2026-04-22在数字化时代,客户每一次点击、浏览、下单、咨询等行为,都在传递其潜在需求与决策倾向——这些按时间顺序串联的行为轨迹,构成 ...
2026-04-22数据是数据分析、建模与业务决策的核心基石,而“数据清洗”作为数据预处理的核心环节,是打通数据从“原始杂乱”到“干净可用” ...
2026-04-22 很多数据分析师每天盯着GMV、转化率、DAU等数字看,但当被问到“什么是指标”“指标和维度有什么区别”“如何搭建一套完整的 ...
2026-04-22在数据分析与业务决策中,数据并非静止不变的数值,而是始终处于动态波动之中——股市收盘价的每日涨跌、企业月度销售额的起伏、 ...
2026-04-21在数据分析领域,当研究涉及多个自变量与多个因变量之间的复杂关联时,多变量一般线性分析(Multivariate General Linear Analys ...
2026-04-21很多数据分析师精通描述性统计,能熟练计算均值、中位数、标准差,但当被问到“用500个样本如何推断10万用户的真实满意度”“这 ...
2026-04-21在数据处理与分析的全流程中,日期数据是贯穿业务场景的核心维度之一——无论是业务报表统计、用户行为追踪,还是风控规则落地、 ...
2026-04-20在机器学习建模全流程中,特征工程是连接原始数据与模型效果的关键环节,而特征重要性分析则是特征工程的“灵魂”——它不仅能帮 ...
2026-04-20很多数据分析师沉迷于复杂的机器学习算法,却忽略了数据分析最基础也最核心的能力——描述性统计。事实上,80%的商业分析问题, ...
2026-04-20在数字化时代,数据已成为企业决策的核心驱动力,数据分析与数据挖掘作为解锁数据价值的关键手段,广泛应用于互联网、金融、医疗 ...
2026-04-17在数据处理、后端开发、报表生成与自动化脚本中,将 SQL 查询结果转换为字符串是一项高频且实用的操作。无论是拼接多行数据为逗 ...
2026-04-17面对一份上万行的销售明细表,要快速回答“哪个地区卖得最好”“哪款产品增长最快”“不同客户类型的购买力如何”——这些看似复 ...
2026-04-17数据分析师一天的工作,80% 的时间围绕表格结构数据展开。从一张销售明细表到一份完整的分析报告,表格结构数据贯穿始终。但你真 ...
2026-04-16在机器学习无监督学习领域,Kmeans聚类因其原理简洁、计算高效、可扩展性强的优势,成为数据聚类任务中的主流算法,广泛应用于用 ...
2026-04-16在机器学习建模实践中,特征工程是决定模型性能的核心环节之一。面对高维数据集,冗余特征、无关特征不仅会增加模型训练成本、延 ...
2026-04-16在数字化时代,用户是产品的核心资产,用户运营的本质的是通过科学的指标监测、分析与优化,实现“拉新、促活、留存、转化、复购 ...
2026-04-15在企业数字化转型、系统架构设计、数据治理与AI落地过程中,数据模型、本体模型、业务模型是三大核心基础模型,三者相互支撑、各 ...
2026-04-15数据分析师的一天,80%的时间花在表格数据上,但80%的坑也踩在表格数据上。 如果你分不清数值型和文本型的区别,不知道数据从哪 ...
2026-04-15在人工智能与机器学习落地过程中,模型质量直接决定了应用效果的优劣——无论是分类、回归、生成式模型,还是推荐、预测类模型, ...
2026-04-14