什么是关联分析?

简介:

引言:

在认识什么是关联分析之前。先了解一下关联分析能用来干什么吧:

演示样例1:例如以下是一个超市几名顾客的交易信息。

TID Items
001 Cola, Egg, Ham
002 Cola, Diaper, Beer
003 Cola, Diaper, Beer, Ham
004 Diaper, Beer

TID代表交易流水号。Items代表一次交易的商品。

我们对这个数据集进行关联分析,能够找出关联规则{Diaper}→{Beer}。 
它代表的意义是:购买了Diaper的顾客会购买Beer。这个关系不是必定的。可是可能性非常大,这就已经足够用来辅助商家调整Diaper和Beer的摆放位置了,比如摆放在相近的位置,进行捆绑促销来提高销售量。

所以。关联分析的任务就是从数据集中挖掘出频繁项集,然后从频繁项集中提取出事物之间的强关联规则。辅助决策。 


各种定义:

1、:每一条交易称为一个事务。比如演示样例1中的数据集就包括四个事务。 
2、:交易的每个物品称为一个项,比如Cola、Egg等。 
3、:包括零个或多个项的集合叫做项集,比如{Cola, Egg, Ham}。 
4、k:包括k个项的项集叫做k-项集,比如{Cola}叫做1-项集,{Cola, Egg}叫做2-项集。 
5、:一个项集出如今几个事务其中,它的支持度计数就是几。

比如{Diaper, Beer}出如今事务002、003和004中。所以它的支持度计数是3。


6、:支持度计数除于总的事务数。比如上例中总的事务数为4,{Diaper, Beer}的支持度计数为3。所以它的支持度是3÷4=75%。说明有75%的人同一时候买了Diaper和Beer。 
7、:支持度大于或等于某个阈值的项集就叫做频繁项集。

比如阈值设为50%时,由于{Diaper, Beer}的支持度是75%,所以它是频繁项集。


8、:对于规则{Diaper}→{Beer},{Diaper}叫做前件。{Beer}叫做后件。 
9、:对于规则{Diaper}→{Beer},{Diaper, Beer}的支持度计数除于{Diaper}的支持度计数。为这个规则的置信度。比如规则{Diaper}→{Beer}的置信度为3÷3=100%。说明买了Diaper的人100%也买了Beer。 
10、:大于或等于最小支持度阈值和最小置信度阈值的规则叫做强关联规则。关联分析的终于目标就是要找出强关联规则。

我们easy发现,假设一个项集是频繁项集。则它的子项集也都是频繁项集。假设一个项集是非频繁项集,则它的超集也一定是非频繁项集。(可用反证法证明,此处略) 
比如{Diaper, Beer}是频繁项集。则{Diaper}、{Beer}也都是频繁项集。 
比如{Egg}是非频繁项集。则{Cola, Egg}也是非频繁项集。


关联分析:

关联分析分为两个步骤: 
<1> 利用支持度找出数据集中的频繁项集。 
<2> 利用置信度从频繁项集中提取出强关联规则。

频繁项集的挖掘:

Apriori算法:

Apriori算法的思路是先找出候选项集,然后依据最小支持度阈值筛选出频繁项集。


比如先找出全部1-项集。然后筛选出里面的频繁1-项集; 依据频繁1-项集生成候选2-项集,然后筛选出里面的频繁2-项集; 再依据频繁2-项集生成候选3-项集。从里面筛选出频繁3-项集;·······

Apriori算法的缺点是须要不断扫描数据集,不断地求候选项集的支持度从而推断它是否是频繁项集。当数据集非常大的时候。这样的算法的效率将会非常低。


很多其它关于Apriori。请见Apriori算法的介绍

FP-Growth算法:

FP-Growth算法仅仅须要扫描两次数据集。它的思想是把构造一棵FP-Tree。把数据集中的数据映射到树上,再依据这棵FP-Tree找出全部频繁项集。 
很多其它关于FP-Growth,请见FP-Growth算法的介绍FP_Growth算法python实现


关联规则的生成:

从步骤一已经得到了频繁项集,而此时的任务就是在频繁项集里面挖掘出大于最小置信度阈值的关联规则。


怎么挖呢?把频繁项集分成前件和后件两部分,然后求规则前件→后件的置信度。假设大于最小置信度阈值,则它就是一条强关联规则。 
可是把频繁项集分成前件和后件的情况有非常多,我们能够对其进行一些优化。


附加:

此处是针对购物篮演示样例来介绍关联分析,购物篮信息属于布尔型的,而现实生活中很多事物都是数值量化的,比如{购买1个时钟}→{购买2块电池}。 
另外。对于产生的强关联规则,并非全部都是有价值的,还须要对关联规则进行评价。 
很多其它内容兴许再补上。


转载请注明出处。谢谢!(原文链接:http://blog.csdn.net/bone_ace/article/details/46648965



本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5354562.html,如需转载请自行联系原作者
相关文章
|
Shell Linux C语言
【Shell 命令集合 文件管理】Linux 删除 rm命令使用指南
【Shell 命令集合 文件管理】Linux 删除 rm命令使用指南
376 0
|
JavaScript 前端开发 搜索推荐
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
《人工智能知识图谱构建与应用的最新突破与成果》
在人工智能蓬勃发展的背景下,知识图谱的构建与应用成为热点。新技术如基于大语言模型和向量库的方法,提升了实体识别、关系抽取及图谱优化的效率和精度。这些创新已在医疗、电力、信息检索等领域取得显著成效,如思通数科平台使病例处理速度提升40%,国网湖北电力提高信息检索准确性。未来,知识图谱将更高效、智能地处理多模态数据,并在金融、教育等更多领域发挥重要作用,但也需关注数据隐私和安全问题。
391 9
|
数据采集 人工智能 自然语言处理
从零开始学AI:Python完整操作教程
本教程详尽介绍了利用Python进行人工智能操作的核心方法与应用场景,涵盖数据预处理、模型训练与评估全过程。通过源码解析和实战案例(如房价与股票价格预测),读者将学会构建与测试AI模型,并理解其优缺点。教程还探讨了AI在智能客服与医疗诊断等领域的应用,以及如何通过单元测试确保代码质量。通过本教程,初学者能够快速掌握AI基本技能,为未来的技术发展奠定坚实基础。
1645 4
从零开始学AI:Python完整操作教程
|
运维 监控 算法
数据指标体系入门讲解(上)
数据指标体系入门讲解(上)
1854 2
|
11月前
|
运维 持续交付 开发工具
基础设施即代码(IaC):自动化基础设施管理的未来
基础设施即代码(IaC):自动化基础设施管理的未来
374 0
|
Web App开发 前端开发 定位技术
前端命名规范以及常用命名整理
这是一份关于HTML和CSS编码规范的摘要: - 文件编码统一使用UTF-8。 - 命名遵循语义化,CSS属性书写规范,推荐使用中线命名法(如`hello-world`),避免下划线和驼峰命名。 - 样式应复用,模块化,便于移植。 - 避免使用CSS Hack,优先考虑浏览器兼容性。 - 针对Firefox设计,用IE条件注释做修正。 - 使用英文命名,避免拼音,少用缩写,不以数字开头。 - 常见命名包括页面结构(如`container`、`header`)、导航(`nav`、`subnav`)、功能区域(`logo`、`search`)等,提供了一套常见的ID和Class命名约定。
|
运维 监控 Devops
基础设施即代码(IaC):自动化运维的新纪元
【6月更文挑战第21天】基础设施即代码(IaC)是将基础设施配置转为代码,实现自动化和标准化运维的实践。它通过文本文件描述基础设施,保证重复性、一致性和自动化部署。IaC提升效率,降低成本,加速产品上市,增强安全性和可移植性,在配置管理、环境管理、CI/CD及监控告警中发挥关键作用,推动DevOps和云时代的创新。
|
JSON 前端开发 Java
HTTP连接客户端,选 HttpClient 还是 OkHttp ?
HTTP连接客户端,选 HttpClient 还是 OkHttp ?
1209 0
HTTP连接客户端,选 HttpClient 还是 OkHttp ?
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之与SonarQube的集成该如何完成
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。