首页 > 编程语言 >【机器学习-23】关联规则(Apriori)算法:介绍、应用与实现

【机器学习-23】关联规则(Apriori)算法:介绍、应用与实现

时间:2024-05-26 18:57:59浏览次数:14  
标签:0.666667 23 Apriori 关联 规则学习 算法 项集

在现代数据分析中,经常需要从大规模数据集中挖掘有用的信息。关联规则挖掘是一种强大的技术,可以揭示数据中的隐藏关系和规律。本文将介绍如何使用Python进行关联规则挖掘,以帮助您发现数据中的有趣模式。

在这里插入图片描述

一、引言

1. 简要介绍关联规则学习的概念和重要性

关联规则学习是一种数据挖掘技术,旨在发现数据集中项之间的有趣关系。这些关系通常以“如果…那么…”的形式呈现,表示一种条件与结论的关联性。在商业分析中,关联规则学习常用于识别顾客购买行为中的模式,例如哪些商品经常被一起购买。通过发现这些模式,企业可以制定更有效的营销策略,提高销售额和客户满意度。

关联规则学习的重要性在于它能够从大量数据中提取出有价值的信息,帮助企业更好地理解客户行为和市场需求。这些信息不仅可以用于产品推荐、交叉销售等场景,还可以为企业的战略决策提供有力支持。

2. 引入Apriori算法,解释其在关联规则学习中的地位

在关联规则学习领域,Apriori算法是一种广泛应用的算法。它基于两个核心思想:频繁项集生成和剪枝策略。通过逐步生成和评估候选项集,Apriori算法能够有效地找出数据中的频繁项集和关联规则。由于其高效性和实用性,Apriori算法在关联规则学习中占据了重要地位。

Apriori算法的重要性在于它提供了一种有效的手段来发现数据中的关联关系。与其他算法相比,Apriori算法具有较低的计算复杂度和较高的准确性,使得它成为关联规则学习中的首选算法之一。

3. 阐述本文的目的和结构

本文旨在详细介绍Apriori算法及其在关联规则学习中的应用。首先,我们将对关联规则学习进行概述,阐述其基本概念和应用场景。接着,我们将深入介绍Apriori算法的原理和实现过程,包括频繁项集生成、剪枝策略以及算法优化等方面。最后,我们将通过案例研究来展示Apriori算法在实际应用中的效果和价值。

本文的结构如下:引言部分将介绍关联规则学习和Apriori算法的基本概念;关联规则学习概述部分将详细阐述关联规则学习的应用场景和主要挑战;Apriori算法介绍部分将深入探讨算法的原理和实现细节;Apriori算法的应用部分将通过案例研究来展示算法的实际应用效果;最后,总结与展望部分将对全文进行总结,并展望关联规则学习领域的未来发展方向。

二、关联规则学习概述

定义关联规则学习

关联规则学习是一种在大型数据集中寻找有趣关系的方法。这种关系通常表现为项集之间的强关联性,即如果某个项集(集合中的一组项)在数据集中频繁出现,那么另一个项集也很有可能随之出现。关联规则学习的主要目标是找出这样的项集,并生成形如“如果购买了A商品,那么也可能会购买B商品”的规则。

在关联规则学习中,通常使用支持度和置信度这两个指标来量化项集之间的关联性。支持度表示项集在数据集中出现的频率,而置信度则表示在给定一个项集出现的情况下,另一个项集也出现的概率。

关联规则学习的应用场景
  1. 市场篮子分析:关联规则学习在零售行业中有着广泛的应用,特别是在市场篮子分析方面。通过分析顾客的购买记录,可以发现哪些商品经常被一起购买,从而制定更有效的商品摆放策略、促销活动和交叉销售策略。

  2. 推荐系统:关联规则学习也被广泛应用于推荐系统中。通过分析用户的历史行为和偏好,可以找出用户可能感兴趣的物品或服务,并为其推荐相关的内容。这种推荐方式简单直观,且易于理解和实现。

  3. 网络日志分析:在网络安全和日志分析中,关联规则学习可以帮助发现异常行为和潜在的安全威胁。通过分析网络日志中的事件和模式,可以发现哪些事件之间存在关联,从而识别出可能的攻击行为或安全漏洞。

  4. 疾病诊断:在医疗领域,关联规则学习可以帮助医生发现疾病之间的关联性和潜在风险因素。通过分析病人的病历和诊断记录,可以发现哪些症状或疾病经常同时出现,从而为疾病的诊断和治疗提供有价值的参考。

关联规则学习的主要挑战
  1. 数据稀疏性:在大型数据集中,许多项集可能只出现一次或几次,导致支持度和置信度的计算变得不准确。此外,数据中的噪声和异常值也可能对关联规则的学习产生负面影响。

  2. 计算复杂性:关联规则学习需要计算所有可能项集的支持度和置信度,这可能导致计算量非常大。特别是在项集数量较多时,计算时间可能呈指数级增长。

  3. 规则解释性:生成的关联规则需要具有可解释性,以便用户能够理解和应用这些规则。然而,在某些情况下,生成的规则可能过于复杂或难以理解,这会影响其在实际应用中的效果。

  4. 规则冗余性:在生成的关联规则中,可能存在大量的冗余规则。这些规则在内容上相似或重复,但可能具有不同的支持度和置信度。如何有效地去除冗余规则并保留最有价值的规则是一个挑战。

三、关联规则中的一些概念

序号牛奶啤酒面包花生酱果冻
T110011
T200101
T301001
T410101
T511000
T601001
T711000
T811011
T911001
  • 一个样本称为一个“事务” ;上面的T1称为一个“事务
  • 每个事务由多个属性来确定,这里的属性称为“项” ,这里的 牛奶啤酒面包花生酱果冻 都“
  • 多个项组成的集合称为“项集
由k个项构成的集合
  • {牛奶}、{啤酒}都是1-项集;
  • {牛奶,果冻}是2-项集;
  • {啤酒,面包,牛奶}是3-项集
X==>Y含义:
  • X和Y是项集
  • X称为规则前项(antecedent)
  • Y称为规则后项(consequent)
事务仅包含其涉及到的项目,而不包含项目的具体信息。
  • 在超级市场的关联规则挖掘问题中事务是顾客一次购物所购买的商品,但事务中并不包含这些商品的具体信息,如商品的数量、价格等。
支持度(support):一个项集或者规则在所有事务中出现的频率,σ(X):表示项集X的支持度计数
  • 项集X的支持度:s(X)=σ(X)/N
  • 规则X==>Y表示物品集X对物品集Y的支持度,也就是物品集X和物品集Y同时出现的概率
  • 某天共有100个顾客到商场购买物品,其中有30个顾客同时购买了啤酒和尿布,那么上述的关联规则的支持度就是30%
置信度(confidence):确定Y在包含X的事务中出现的频繁程度。c(X → Y) = σ(X∪Y)/σ(X)
  • p(Y│X)=p(XY)/p(X)。
  • 置信度反应了关联规则的可信度—购买了项目集X中的商品的顾客同时也购买了Y中商品的可能性有多大
  • 购买薯片的顾客中有50%的人购买了可乐,则置信度为50%
(X , Y)==>Z :
交易ID购买的商品
1A,B,C
2A,C
3A,D
4B,E,F
  • 支持度:交易中包含{X 、 Y 、 Z}的可能性

  • 置信度:包含{X 、 Y}的交易中也包含Z的条件概率

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

  • A==>C (50%, 66.6%)
  • C==>A (50%, 100%)
    若关联规则X->Y的支持度和置信度分别大于或等于用户指定的最小支持率minsupport和最小置信度minconfidence,则称关联规则X->Y为强关联规则,否则称关联规则X->Y为弱关联规则。
提升度(lift):物品集A的出现对物品集B的出现概率发生了多大的变化
  • lift(A==>B)=confidence(A==>B)/support(B)=p(B|A)/p(B)
  • 现在有** 1000 ** 个消费者,有** 500** 人购买了茶叶,其中有** 450人同时** 购买了咖啡,另** 50人** 没有。由于** confidence(茶叶=>咖啡)=450/500=90%** ,由此可能会认为喜欢喝茶的人往往喜欢喝咖啡。但如果另外没有购买茶叶的** 500人** ,其中同样有** 450人** 购买了咖啡,同样是很高的** 置信度90%** ,由此,得到不爱喝茶的也爱喝咖啡。这样看来,其实是否购买咖啡,与有没有购买茶叶并没有关联,两者是相互独立的,其** 提升度90%/[(450+450)/1000]=1** 。

由此可见,lift正是弥补了confidence的这一缺陷,if lift=1,X与Y独立,X对Y出现的可能性没有提升作用,其值越大(lift>1),则表明X对Y的提升程度越大,也表明关联性越强。
在这里插入图片描述#### Leverage 与 Conviction的作用和lift类似,都是值越大代表越关联

相关文章

  • 数据结构中的算法-KMP算法
    一、KMP算法串的模式匹配操作是指在当前串(主串)中寻找子串(模式串)的过程。当在主串中找到了和模式串相同的子串时,模式匹配成功;否则,模式匹配失败。当模式匹配成功时,返回模式串的首字符在主串中的位置;否则,返回-1。1.1暴力模式匹配算法(Brute-Force)假设有主串S和模式串T,T的长度为......
  • 算法设计与分析 头哥educoder 批处理作业调度
     给定n个作业的集合{J1,J2,…,Jn}。每个作业必须先由机器1处理,然后由机器2处理。所有任务必须先由机器1处理完成后,才能由机器2处理,并且在机器2的处理顺序必须与机器1的处理顺序一致,处理顺序一旦确定不能改变。设作业Ji需要机器1的处理时间为Ai,需要机器2的处理时间为Bi,怎样安......
  • 算法设计与分析 头哥educoder 旅行商问题
    设有n个城市组成的交通图,一个售货员从住地城市q出发,到其它城市各一次去推销货物,最后回到住地城市。要求:假定两个城市a,b从a到b的路程花费w_ab是已知的,问应该怎样选择一条花费最少的路线?输入格式:第一行nmq,n和m两个整数分别表示城市数n以及城市之间的单向路数量m,q表示住地城......
  • 风控图算法Graph Embedding(DeepWalk&Node2Vec)代码实现
    风控图算法GraphEmbedding(DeepWalk&Node2Vec)代码实现在上一篇中我们简单介绍了常用的GraphEmbedding算法,今天来对其中较为常用的两种算法——DeepWalk和Node2Vec进行python代码实现。文章目录风控图算法GraphEmbedding(DeepWalk&Node2Vec)代码实现一、KarateClub算......
  • 银行家算法—安全状态
    银行家算法中设置4个数据结构:Max:进程对资源的最大需求数Allocation:已分配给该进程的资源数Need:目前该进程还需要的资源数(在已分配部分资源情况下)******    且   Need=Max-Allocation  ******Available:系统中可用资源的数目......
  • SAP S4HANA2023 PCE系统上的VKM3?
    SAPS4HANA 2023PCE系统上的VKM3?  在SAPS4HANA2023PCE系统上,试图执行事务代码VKM3,为某个销售订单释放客户信用冻结,系统报错:无法执行事务VKM3(SAPNote2476734),     详细报错信息: 无法执行事务VKM3(SAPNote2476734)消息编号00977诊断系统配置(黑......
  • 代码随想录算法训练营第第18天 | 513.找树左下角的值 、112. 路径总和 、106.从中
    找树左下角的值本地递归偏难,反而迭代简单属于模板题,两种方法掌握一下题目链接/文章讲解/视频讲解:https://programmercarl.com/0513.找树左下角的值.html/***Definitionforabinarytreenode.*functionTreeNode(val,left,right){*this.val=(val===undef......
  • 超简单白话文机器学习 - 回归树&树剪枝(含算法介绍,公式,源代码实现以及调包实现)
    1.回归树1.1算法介绍大家看到这篇文章时想必已经对树这个概念已经有基础了,如果不是很了解的朋友可以看看笔者的这篇文章:超简单白话文机器学习-决策树算法全解(含算法介绍,公式,源代码实现以及调包实现)_白话决策树-CSDN博客对于回归树的建立,我们一般使用CART回归树,CART(Clas......
  • 自用:常见算法竞赛/刷题问题 & 模板
    以下是我平常刷题遇到的部分常见问题,随手记录一下。(不定时更新)基本算法二维前缀和for(inti=1;i<=m;++i){ for(intj=1;j<=n;++j) { pre[i][j]=pre[i-1][j]+pre[i][j-1]-pre[i-1][j-1]+nums[i][j]; }}//异或版本for(inti=1;i......
  • 【数据分享】仙桃市统计年鉴(2011-2023)
    大家好!今天我要向大家介绍一份重要的仙桃市统计数据资源——《仙桃市统计年鉴》。这份年鉴涵盖了从2011年到2023年仙桃市统计全面数据,并提供限时免费下载。(无需分享朋友圈即可获取)数据介绍在数字的海洋中,每一串数据都像是时间的足迹,静默而深刻。今天,让我们一起翻开那本记录着......