A-priori算法

  • A-priori算法
    • 相关概念
    • A-priori算法流程
    • 算法示例
    • A-priori算法的优缺点
      • 优点
      • 缺点

A-priori算法

关联规则是一种有效且很重要的数据挖掘方法,它可以从海量数据中挖掘出数据之间有意义的关联规则及它们之间的相关联系,帮助相关人员分析数据并做出合适的决策;其最典型的应用例子是购物车分析,即通过分析顾客放入购物车中的商品来分析顾客的购买习惯,从而指导零售商制定更好的营销策略。

购物篮模型:描述两类对象之间多对多的关系。

目前常用的关联规则方法有很多,如贝叶斯网络、决策树、A-priori 算法等。其中 A-priori 算法是关联规则挖掘频繁项集的经典算法,最早由 R.Agrawal 等人在 1993 年提出来的,是一种挖掘单维布尔型的关联规则算法,很多算法也是以其为核心进行改进的。

A-priori算法的目的

A-priori算法的中心思想

相关概念

  1. 项(Item):是关联规则最基础的元素,用 in(n= 1, 2, 3…)表示某一项

  2. 项集:是项的集合,假设项集 I = {i1, i2, …, in},包括 n 项的项集成为 n 项集

  3. 频繁项集:在多个购物篮中出现的项集

  4. 事务(TID):是由一个唯一的事务标识号和一个组成事务的项的列表构成的

  5. 事务集:是所有事务构成的集合。假设事务数据集 T = {t1, t2, …, tn}

  6. 关联规则:可以表示为如 X=>Y 所示的蕴涵式。其中,X⊆I,Y⊆I 且 X∩Y=Ø。该关系式表示如果项集X在某一事物中出现时,那么项集Y也可能以某一概率出现在该事务中。

  7. 支持度:是某一项集的频繁程度,是关联规则重要性的衡量准则,用于表示该项集的重要性。假设包含项集 X、Y 的事务数量与事务集总数 countAll 的比值,反映了 X、Y 项集同时出现的频率:

  8. 支持度阈值s:设 I 是一个项集,I 的支持度就是包含 I 的购物篮的数量,当其大于等于 s 时,称 I 为频繁项集

  9. 置信度:用来确定 Y 在包含 X 的事务中出现的频繁程度,即 Y 在 X 条件下的条件概率,是对关联规则准确度的衡量准则,表示规则的可靠程度。假设包含项集 X、Y 的事务数量与项集X事务数量的比值:

  10. 频繁项集与最小支持度:最小支持度是预先设置好的项集满足支持度的下限,用 Min_sup 表示,反映了所关注的项集的最低重要性。当项集 X 的支持度不小于最小支持度阈值时,X 为频繁项集:

  11. 强关联规则与最小置信度:最小置信度是预先设置好的项集满足置信度的下限,用Min_conf表示,反映了所关注的项集的最低可靠程度。当关联规则R同时满足支持度与置信度不小于最小阈值,则称其为强关联规则:

  12. 项集单调性:如果项集 I 是频繁项集,那么其所有的子集都是频繁项集;反之,如果项集 I 不是频繁项集,那么其所有的超集都不是频繁项集

挖掘关联规则的主要任务就是为了找出满足条件的各种强关联规则。

A-priori算法流程

输入:数据集合 D ,支持度阈值 α(支持度阈值一般为经验值或实验值)

输出:最大的频繁k项集

相关定义:

  • 自连接步骤:频繁k-1项集Lk-1的自身连接产生候选k项集Ck
  • 剪枝策略:由于存在先验性质:任何非频繁的k-1项集都不是频繁k项集的子集。因此,如果一个候选k项集Ck的k-1项子集不在Lk-1中,则该候选也不可能是频繁的,从而可以从Ck中删除,获得压缩后的Ck
  • 删除策略:基于压缩后的Ck,扫描所有事务,对Ck中的每个项进行计数,然后删除不满足支持度阈值s的项,从而获得频繁k项集。

算法步骤:

  1. 扫描整个数据集,得到所有出现过的数据,作为候选频繁1项集。k = 1,频繁0项集为空集。
  2. 挖掘频繁k项集:
    a. 扫描数据计算候选频繁k项集的支持度
    b. 去除候选频繁k项集中支持度低于阈值的数据集,得到频繁k项集(使用剪枝策略和删除策略)。如果得到的频繁k项集为空,则直接返回频繁k-1项集的集合作为算法结果,算法结束。如果得到的频繁k项集只有一项,则直接返回频繁k项集的集合作为算法结果,算法结束。
    c. 基于频繁k项集,自连接生成候选频繁k+1项集(自连接步骤)。
  3. 令k=k+1,转入步骤2。

算法示例

假定事物数据库如下所示:

Step 1:将所有的单个项作为候选集,通过扫描数据库中所有事务,生成一个候选1项集C1;然后计算出每个候选集出现的次数,并根据预先设定的最小支持度阈值 s=2,选择频繁1项集L1

Step 2:通过项集L1产生候选频繁2项集L2

Step 3:通过项集L2产生候选频繁3项集L3

Step 4:因为L3无法产生候选4项集,所以终止迭代过程。在实际情况中,当数据较多的,一层一层向上寻找,当无法继续构造时停止处理。

Step 5:根据产生的频繁项集生成关联规则,利用L3={ B, C, D }产生关联规则,确定该频繁项集中所有非空子集。


Step 6:根据各项子集产生关联规则,并计算各个表达式的可信度。


支持度大,置信度则越高(如关联规则2与关联规则3),关联规则的实用机会就大,此关联规则就越重要;一些关联规则置信度很高,但支持度很低(如关联规则9, 10, 11),则此关联规则就不那么重要。

A-priori算法的优缺点

优点

如果使用朴素算法,随着寻找频繁k项集中k值的增大,需要遍历的候选项集数会非常巨大,而A-priori算法可以通过减少候选集的大小来获得相对良好的性能,并且A-priori算法原理较简单,易于实现。

缺点

在数据集很大或支持度阈值设置较小时,A-priori算法依然会生成数量庞大的候选项集,并需要对数据进行反复的扫描,造成算法性能的低下。

A-priori算法相关推荐

  1. 关联规则算法c语言样例及分析_推荐系统总结系列-关联规则算法(四)

    基于关联规则的推荐有三种方法:Apriori关联规则算法FP Tree关联规则算法:PrefixSpan关联规则算法: 关联规则挖掘推荐算法: 关联规则挖掘是一种在大规模交易中识别类似规则关系模式的通 ...

  2. apriori和关联规则算法

    问题的背景: 超市的会员卡记录了大量的用户购买数据,通过分析这些数据可以帮助商店分析用户的购买行为.从大规模数据集中寻找物品间的隐含关系被称为关联规则分析(association analysis)或 ...

  3. 数据分析师成长路径-第二阶段

    第 二 阶 段 建 模 分 析 师 第1部分 实用型大数据挖掘算法 第一章 玩转大数据:深入浅出大数据挖掘技术(Apriori算法.Tanagra工具.决策树)priori 算法. Tanagra 工 ...

  4. SQL Server 2005 中的商务智能和数据仓库

    微软发布了SQL Server 2005,对于微软与BI来说这是一个非常重要的版本,它完善了微软在BI方面的产品线.SQL Server 2005以及 Visual Studio .net2005的整 ...

  5. Apriori算法介绍(Python实现)

    导读: 随着大数据概念的火热,啤酒与尿布的故事广为人知.我们如何发现买啤酒的人往往也会买尿布这一规律?数据挖掘中的用于挖掘频繁项集和关联规则的Apriori算法可以告诉我们.本文首先对Apriori算 ...

  6. Apriori算法简介及实现(python)

    Apriori这个词的意思是"先验的",从priori这个词根可以猜出来~;) .该算法用于从数据中挖掘频繁项数据集以及关联规则.其核心原理是基于这样一类"先验知识&qu ...

  7. AliCloudDenoise 语音增强算法:助力实时会议系统进入超清音质时代

    简介:近些年,随着实时通信技术的发展,在线会议逐渐成为人们工作中不可或缺的重要办公工具,据不完全统计,线上会议中约有 75% 为纯语音会议,即无需开启摄像头和屏幕共享功能,此时会议中的语音质量和清晰度 ...

  8. 层次聚类算法 算法_聚类算法简介

    层次聚类算法 算法 Take a look at the image below. It's a collection of bugs and creepy-crawlies of different ...

  9. 单目标多目标 灰狼算法算法讲解

    灰狼算法单目标&多目标算法讲解 引言 元启发式算法 概念 优势 特征 分类 1. 灰狼算法思想 参考文献 源代码下载 灰狼社会等级及捕猎过程 2. 单目标灰狼算法 包围猎物 追逐猎物 搜捕猎物 ...

  10. 机器学习基础(三十二) —— 使用 Apriori 算法进行关联分析

    Apriori 在拉丁语中指"来自以前".当定义问题时,通常会使用先验知识或者假设,这被称作"一个先验"(a priori).在贝叶斯统计中,使用先验知识作为条 ...

最新文章

  1. php熊掌号怎么设置json-ld,dedecms织梦系统怎么对接百度熊掌号并添加JSON_LD数据
  2. cocos2d-x 调用java_cocos2d-x中通过Jni实现Java与C++的互相调用
  3. Android gdb 调试
  4. 什么是RS-232-C接口与什么是RS-485接口?
  5. python怎么画简单图片-只需 45 秒,Python 给故宫画一组手绘图!
  6. 一些常用开发软件下载地址-msdn.itellyou.cn
  7. Java编程工具(10-1):idea moudle没有蓝色的小方块
  8. sequelize模型关联_Node.js Sequelize 模型(表)之间的关联及关系模型的操作
  9. Sequence定义
  10. WIN XP SP2系统经常性死机问题解决历程
  11. Python的excel表格操作,数据提取分析
  12. 如何玩转信用卡 银行不会告诉你的十个秘密
  13. 大数据工程师是不是青春饭,程序员30岁以后的路怎么走
  14. 预防XSS——后端HttpUtility.HtmlEncode,AntiXssEncoder.HtmlEncode方法;前端htmlencode,htmldecode,JavaScriptEncode
  15. sequelize 安装
  16. EMQ X 在上汽大众新一代车联网平台中的应用
  17. 互联网上还有适合普通人的红利项目吗?
  18. 算法刷题-哈希表-四数相加
  19. MYSQL 自定义函数,查询节点所有父节点、查询节点所有子节点
  20. PDF,png,jpg,bmp转换为word

热门文章

  1. 机器学习这10年我们能在各自的领域做点什么?
  2. npm run build 报错: No such file or directory
  3. 定时关机win10_Windows利用任务计划程序实现定时关[日常]
  4. 我的个人成长(1-3年)
  5. 连接方法:网线水晶头接法
  6. 实验吧-欢迎来到地狱题解
  7. python.exe无法找到入口 无法定位程序输入点
  8. C#从剪贴板上获取图片
  9. chm 转化为 html 转化为 txt
  10. 53Java模拟器,515最好的java模拟器