深入理解机器学习——关联规则挖掘:基础知识

news2024/9/29 17:32:29

分类目录:《深入理解机器学习》总目录


许多商业企业在日复一日的运营中积聚了大量的数据。例如,食品商店的收银台每天都收集大量的顾客购物数据。下图给出一个这种数据的例子,通常称作购物篮事务(Market Basket Transaction)。表中每一行对应一个事务,包含一个唯一标识TID和给定顾客购买的商品的集合。零售商对分析这些数据很感兴趣,以便了解他们的顾客的购买行为。可以使用这种有价值的信息来支持各种商务应用,如市场促销,库存管理和顾客关系管理等。
购物篮数据

关联规则挖掘系列文章主要是介绍一种称作关联分析(Association Analysis)的方法,用于发现隐藏在大型数据集中的有意义的联系。所发现的联系可以用关联规则(Association Rule)或频繁项集的形式表示。例如,从上图数据中可以提取出如下规则:

尿布 → 啤酒

该规则表明尿布和啤酒的销售之间存在着很强的联系,因为许多购买尿布的顾客也购买啤酒。零售商们可以使用这类规则,帮助他们发现新的交叉销售商机。

除了购物篮数据外,关联分析也可以应用于其他领域,如生物信息学、医疗诊断、网页挖掘和科学数据分析等。例如,在地球科学数据分析中,关联模式可以揭示海洋、陆地和大气过程之间的有趣联系。这样的信息能够帮助地球科学家更好地理解地球系统中不同的自然力之间的相互作用。尽管这里提供的技术一般可以都用于更广泛的数据集,但是为了便于解释,讨论将主要集中在购物篮数据上。

在对购物篮数据进行关联分析时,需要处理两个关键的问题:第一,从大型事务数据集中发现模式可能在计算上要付出很高的代价:第二,所发现的某些模式可能是虚假的,因为它们可能是偶然发生的。

二元表示

购物篮数据可以用下图所示的二元形式来表示,其中每行对应一个事务,而每列对应一个项。项可以用二元变量表示,如果项在事务中出现,则它的值为1,否则为0。因为通常认为项在事务中出现比不出现更重要,因此项是非对称(Asymmetric)二元变量。或许这种表示是实际购物篮数据极其简单的展现,因为这种表示忽略数据的某些重要的方面,如所购商品的数量和价格等。
二元表示

项集和支持度计数

I = { i 1 , i 2 , ⋯   , i d } I=\{i_1, i_2, \cdots, i_d\} I={i1,i2,,id}是购物篮数据中所有项的集合,而 T = { t 1 , t 2 , ⋅ , t N } T=\{t_1, t_2, \cdot, t_N\} T={t1,t2,,tN}是所有事务的集合。每个事务 t i t_i ti包含的项集都是 I I I的子集。在关联分析中,包含0个或多个项的集合被称为项集(Itemset)。如果一个项集包含 k k k个项,则称它为 k k k-项集。例如,{啤酒,尿布,牛奶}是一个3-项集,而空集是指不包含任何项的项集。

事务的宽度定义为事务中出现项的个数。如果项集 X X X是事务 t j t_j tj的子集,则称事务 t j t_j tj包括项集 X X X。例如,在上图中第二个事务包括项集{面包,尿布},但不包括项集{面包,牛奶}。项集的一个重要性质是它的支持度计数,即包含特定项集的事务个数。数学上,项集 X X X的支持度计数 σ ( X ) \sigma(X) σ(X)可以表示为:
σ ( X ) = ∣ { t i ∣ X ⊆ t i , t i ∈ T } ∣ \sigma(X)=|\{t_i|X\subseteq t_i, t_i\in T\}| σ(X)={tiXti,tiT}

其中,符号 ∣ ⋅ ∣ |·| 表示集合中元素的个数。在上图显示的数据集中,项集{啤酒,尿布,牛奶}的支持度计数为2,因为只有2个事务同时包含这3个项。

关联规则(Association Rule)

关联规则是形如 X → Y X\rightarrow Y XY的蕴涵表达式,其中 X X X Y Y Y是不相交的项集,即 X ∩ Y = ∅ X\cap Y=\varnothing XY=。关联规则的强度可以用它的支持度(Support)和置信度`(Confidence)度量。支持度确定规则可以用于给定数据集的频繁程度,而置信度确定 Y Y Y在包含 X X X的事务中出现的频繁程度。支持度 s s s和置信度 c c c这两种度量的形式定义如下:
s ( X → Y ) = σ ( X ∪ Y ) N c ( X → Y ) = σ ( X ∪ Y ) σ ( X ) \begin{align*} s(X\rightarrow Y) & =\frac{\sigma(X\cup Y)}{N}\\ c(X\rightarrow Y) & =\frac{\sigma(X\cup Y)}{\sigma(X)} \end{align*} s(XY)c(XY)=Nσ(XY)=σ(X)σ(XY)

考虑规则{牛奶,尿布} → {啤酒},由于项集{牛奶,尿布,啤酒}的支持度计数是2,而事务的总数是5,所以规则的支持度为 2 5 = 0.4 \frac{2}{5}=0.4 52=0.4。置信度是项集{牛奶,尿布,啤酒}的支持度计数与项集{牛奶,尿布}支持度计数的商。由于存在3个事务同时包含牛奶和尿布,所以该规则的置信度为 2 3 = 0.67 \frac{2}{3}=0.67 32=0.67

支持度是一种重要度量,因为支持度很低的规则可能只是偶然出现。从商务角度来看,低支持度的规则多半也是无意义的,因为对顾客很少同时购买的商品进行促销可能并无益处。因此,支持度通常用来删去那些无意义的规则。此外,支持度还具有一种期望的性质,可以用于关联规则的有效发现。另一方面,置信度度量通过规则进行推理具有可靠性。对于给定的规则 X → Y X\rightarrow Y XY,置信度越高, Y Y Y在包含 X X X的事务中出现的可能性就越大。置信度也可以估计 Y Y Y在给定 X X X下的条件概率。

应当小心解释关联分析的结果。由关联规则作出的推论并不必然蕴涵因果关系。它只表示规则前件和后件中的项明显地同时出现。另一方面,因果关系需要关于数据中原因和结果属性的知识,并且通常涉及长期出现的联系。

关联规则的挖掘问题可以形式地描述如下:关联规则发现给定事务的集合 T T T,关联规则发现是指找出支持度大于等于 minsup \text{minsup} minsup,并且置信度大于等于 minconf \text{minconf} minconf的所有规则,其中 minsup \text{minsup} minsup minconf \text{minconf} minconf是对应的支持度和置信度阀值。

控据关联规则的一种原始方法是:计算每个可能规则的支持度和置信度。但是这种方法的代价很高,令人望而却步,因为可以从数据集提取的规则的数目达指数级。更具体地说,从包含 d d d个项的数据集提取的可能规则的总数为:
R = 3 d + 2 d + 1 + 1 R=3^d+2^{d+1}+1 R=3d+2d+1+1

提高关联规则挖掘算法性能的第一步是拆分支持度和置信度要求。由前文可知,规则 X → Y X\rightarrow Y XY的支持度仅依赖于其对应项集 X ∪ Y X\cup Y XY的支持度。例如,{啤酒,尿布} → \rightarrow {牛奶}和{啤酒,牛奶} → \rightarrow {尿布}有相同的支持度,因为它们涉及的项都源自同一个项集{啤酒,尿布,牛奶}。

如果项集{啤酒,尿布,牛奶}是非频繁的,则可以立即剪掉所有相关的候选规则(如:{啤酒,尿布} → \rightarrow {牛奶}、{啤酒,牛奶} → \rightarrow {尿布}、{尿布,牛奶} → \rightarrow {啤酒}等),而不必计算它们的置信度值。

因此,大多数关联规则挖掘算法通常采用的一种策略是,将关联规则挖掘任务分解为如下两个主要的子任务:

  • 频繁项集产生:其目标是发现满足最小支持度阀值的所有项集,这些项集称作频繁项集(Frequent Itemset)。
  • 规则的产生:其目标是从上一步发现的频繁项集中提取所有高置信度的规则,这些规则称作强规则(Strongrule)。

通常,频繁项集产生所需的计算开销远大于产生规则所需的计算开销。频繁项集和关联规产生的有效技术将在后续文章中讨论。

参考文献:
[1] Pang-NingTan, MichaelSteinbach, VipinKumar. 数据挖掘导论[M]. 人民邮电出版社, 2006.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/174498.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch基本使用初体验01

ElasticSearch是一款非常强大的、基于Lucene的开源搜索及分析引擎;它是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据。 1.es的安装 工欲善其事,必先利其器;想要学es,我们…

九龙证券|磷酸铁锂电池包和铅酸电池有哪些区别?

目前,新能源汽车电动车一般用的电池有3种,铅酸蓄电池、镍氢充电电池、锂离子电池。伴随着电动车蓄电池技能工艺的升级换代,锂电池的发展壮大和应用领域日益持续上升。那么,磷酸铁锂电池包和铅酸电池有哪些差异呢?铅酸蓄…

PowerShell 美化(oh-my-posh)

文章目录PowerShell 美化一、 添加右键菜单1、 修改默认右键菜单2、 寻找安装目录3、 修改注册表二、 样式修改1、 环境安装2、 配置使用PowerShell 美化 一、 添加右键菜单 1、 修改默认右键菜单 直接使用这个命令可以将 win11 的右键菜单修改为 win10 的右键菜单&#xff1…

基础数学(三)位运算 JZ 15.位1的个数

正在刷DFS相关题的时候突然间,给我蹦出来这样一个回溯题: 401. 二进制手表 二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。每个 LED 代表一个 0 或 1&#xff…

maven 解决Cannot access alimaven以及Process terminated

maven 解决Cannot access alimaven以及Process terminated 目录maven 解决Cannot access alimaven以及Process terminated方案一:用idea打开settings.xml,更正红色报错方案二:将IDEA的Maven默认版本更换成你下载的maven文件夹方案三&#xff…

单片机堆栈知识总结

堆栈 在片内RAM中,常常要指定一个专门的区域来存放某些特别的数据 它遵循顺序存取和后进先出(LIFO/FILO)的原则,这个RAM区叫堆栈。 其实堆栈就是单片机中的一些存储单元,这些存储单元被指定保存一些特殊信息,比如地址&#xff0…

DFS(二)岛屿问题合集

目录 一、 463. 岛屿的周长 二、 130. 被围绕的区域 三、 200. 岛屿数量 四、695. 岛屿的最大面积 一、463. 岛屿的周长 给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] 1 表示陆地, grid[i][j] 0 表示水域。 网格中的格子 …

Java设计模式-解释器模式、解释器模式什么回事,抽象语法树又是什么

继续整理记录这段时间来的收获,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用! 6.12 解释器模式 6.12.1 概述 思维:翻译识别机器,如解析由数字、“”、“-”号构成的合法运算序列,若将数字和字符看作结点&a…

Lesson 4.1 逻辑回归模型构建与多分类学习方法

文章目录一、广义线性模型(Generalized liner model)的基本定义二、对数几率模型与逻辑回归1. 对数几率模型(logit model)2. 逻辑回归与 Sigmoid 函数3. Sigmoid 函数性质三、逻辑回归模型输出结果与模型可解释性四、多分类学习与…

CPU缓存一致性

CPU缓存一致性写直达写回缓存一致性总线嗅探MESI协议CPU Cache通常分为三级缓存,L1Cache,L2Cache,L3Cache,级别越低的离CPU越近,访问速度越快,但同时容量越小,价格越贵。在多核的CPU中,每个核都…

今天大年三十,新年快乐,我在这里给大家整理了一下除夕的习俗,来看看吧

今天是大年三十,阿玥在这里祝大家,一来风水,二来平安,阖家欢乐,四季平安,五福临门,六六大顺,七星高照,八方来财,十全十美,新年好! 名字:不晓得 学习:python,c 主页:木有 今天给大家整理一下大年三十的习俗等小知识,就不更python啦 目录 除夕要做的事情有什么…

Meta CTO:真正的全天候轻量化AR眼镜,可能要到2030年

去年Meta发布了售价高达1500美元的VST头显Quest Pro,该头显与Meta的Quest 2等产品在定价、技术路径上有很大不同,其搭载了眼球追踪、彩色VST等更高端的功能,而产品发布后,外界对其反馈也褒贬不一。作为Pro产品线首个产品&#xff…

Markdown基础总结

Markdown Tools TyporaVSCode Markdown Preview Enhanced扩展 有道云笔记… 上述工具都能很好地支持markdown书写 Markdown标题 1 使用 和 - 标记一级和二级标题 和 - 标记语法格式如下: 我展示的是一级标题我展示的是二级标题 ---效果如下: 2 使用 # 号标…

Java设计模式-访问者模式、访问者模式怎么使用,具体是怎么用

继续整理记录这段时间来的收获,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用! 6.10 访问者模式 6.10.1 定义 封装一些作用域某种数据结构中的各元素的操作,可以在不改变此数据结构的前提下定义作用于这些元素的新操作 6.10.2 结…

2023年新年烟花代码(背景音乐完整版)

文章目录前言烟花效果展示使用教程查看源码HTML代码CSS代码JavaScript新年祝福前言 大家过年好!新春佳节,在这个充满喜悦的日子里,愿新年的钟声带给你一份希望和期待,我相信,时空的距离不能阻隔你我,我的祝…

Solidity 中的数学(第 5 部分:指数和对数

本文是关于在 Solidity 中进行数学运算的系列文章中的第五篇。这次的主题是:指数和对数 介绍 几个世纪以来,对数被用来简化计算。在电子计算器广泛普及之前,计算尺、基于对数的机械计算器是工程师职业的标志。 对数函数连同指数函数&#x…

【matplotlib】21.多图合并【python3、numpy、pandas、matplotlib完结】

#【matplotlib】21.多图合并 2023.1.20 python3、numpy、pandas、matplotlib完结 新年快乐!! 21.1 多合一显示 21.1.1 均匀分布 方法很简单 就是一张图 分几块 第一张占几块 从哪开始;第二张… plt.subplot() # 打开一个窗口 import ma…

Redis数据类型简介

目录 1、字符串(Strings) 1.1、底层实现 1.2、基本命令 1.3、应用场景 2、列表(Lists) 2.1、底层实现 2.2、基本命令 2.3、应用场景 3、集合(Sets) 3.1、底层实现 3.2、基本命令 3.3、应用场景 4、哈希(Hashes) 4.1、底层实现 4.2、基本命令 4.3、应用场景 5、…

Caché数据库简要记录

前一阵子,实施的小伙伴找过来问我用过 Cach 数据库吗?我当时有点懵?难道是 redis、memcached 之流?后来我特意去搜索了一下,还真是有一款数据库叫做 Cach Database。 这里做一下简单的记录吧,Cach 在医疗系…

Mine Goose Duck 0.1版本发布

我本次制作了一款MC版的Goose Goose Duck模组,游戏版本是Forge 1.19.2。 1.身份物品 熟悉鹅鸭杀的朋友都知道游戏中含有许多的身份,有好人、坏人、中立三个阵营,本次我加入了原作中的一些基本角色: 1.警长 你可以杀死怪物但错…