机器学习模型——关联规则

目录

关联规则 - 基本概念

关联规则的挖掘步骤:

Apriori算法

Apriori算法简介:

Apriori算法举例:

Apriori算法优缺点:

Apriori算法应用

FP-growth算法:

FP-growth算法简介:

FP-growth的数据结构:

FP-Growth算法流程:

FP-Growth算法优缺点: 


关联规则 - 基本概念

项集:项的集合,包含k个项的项集称为k项集。

频繁项集:满足规定的最小支持度的项集。

支持度:support((X,Y)) =|X交Y|/N,表示物品集X和Y同时出现的次数占总记录数的比例。就是几个关联的数据在数据集中出现的次数占总数据集的比重,或者说几个数据关联出现的概率。一般来说,支持度高的数据不一定构成频繁项集,但是支持度太低的数据肯定不构成频繁项集。

置信度:confidence(X→Y) = |X交Y|/|X| ,集合X与集合Y同时出现的总次数/集合X出现的记录数 。体现了一个数据出现后,另一个数据出现的概率,或者说数据的条件概率。

提升度:lift(X→Y)=confidence(X→Y)/P(Y),表示含有X的条件下,同时含有Y的概率,与Y总体发生的概率之比。

利用提升度体现了X和Y之间的关联关系:

  •     提升度大于1则𝑋→𝑌是强关联规则;
  •     提升度小于等于1则𝑋→𝑌是无效的关联规则;
  •     如果X和Y独立,则有 Lift(X→Y)=1 ,因为此时P(X|Y)=P(X)。

最小支持度:专家定义的衡量支持度的阈值,表示项目集在统计意义上的最低重要性。

最小置信度:专家定义的衡量置信度的阈值,表示关联规则的最低可靠性。

强关联规则:同时满足最小支持度阈值和最小置信度阈值的规则。

关联规则的挖掘步骤:

生成频繁项集和生成规则

找出强关联规则

找到所有满足强关联规则的项集

Apriori算法

Apriori算法简介:

Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过频繁项集生成和关联规则生成两个阶段来挖掘频繁项集。它的主要任务就是设法发现事物之间的内在联系。

比如在常见的超市购物数据集,或者电商的网购数据集中,如果我们找到了频繁出现的数据集,那么对于超市,我们可以优化产品的位置摆放,对于电商,我们可以优化商品所在的仓库位置,达到节约成本,增加经济效益的目的。

Apriori算法举例:

Apriori使用频繁项集的先验知识,使用一种称作逐层搜索的迭代方法,k项集用于探索(k+1)项集。其原理是如果某个项集是频繁的,那么它的子集也是频繁的。反过来说,如果一个项集是非频繁的,那么它的所有超集也是非频繁的。比如{1,2}出现的次数已经小于最小支持度了(非频繁的),那么超集{0,1,2}的组合肯定也是非频繁项集。

连接步

若有两个k-1项集,每个项集按照“属性-值”(一般按值)的字母顺序进行排序。如果两个k-1项集的前k-2个项相同,而最后一个项不同,则证明它们是可连接的,即这个k-1项集可以联姻,即可连接生成k项集。使如有两个3项集:{a, b, c}{a, b, d},这两个3项集就是可连接的,它们可以连接生成4项集{a, b, c, d}。又如两个3项集{a, b, c}{a, d, e},这两个3项集显示是不能连接生成3项集的; 

剪枝步

若一个项集的子集不是频繁项集,则该项集肯定也不是频繁项集。例如,若存在3项集{a, b, c},如果它的2项子集{a, b}的支持度即同时出现的次数达不到阈值,则{a, b, c}同时出现的次数显然也是达不到阈值的。因此,若存在一个项集的子集不是频繁项集,那么该项集就应该被无情的舍弃。

Apriori算法优缺点:

优点:

(1)使用先验原理,大大提高了频繁项集逐层产生的效率;

(2)简单易理解;数据集要求低。

缺点:

(1)每一步产生侯选项目集时循环产生的组合过多,没有排除不应该参与组合的元素;

(2)每次计算项集的支持度时,都对数据库D中的全部记录进行了一遍扫描比较,如果是一个大型的数据库的话,这种扫描比较会大大增加计算机系统的I/O开销。而这种代价是随着数据库的记录的增加呈现出几何级数的增加。因此人们开始寻求更好性能的算法。

Apriori算法是一个非常经典的频繁项集的挖掘算法,很多算法都是基于Apriori算法而产生的,包括FP-Tree,GSP, CBA等。这些算法利用了Apriori算法的思想,但是对算法做了改进,数据挖掘效率更好一些,因此现在一般很少直接用Apriori算法来挖掘数据了,但是理解Apriori算法是理解其它Apriori类算法的前提,同时算法本身也不复杂。

scikit-learn中并没有频繁集挖掘相关的算法类库,这不得不说是一个遗憾。

Apriori算法应用

推荐系统:用关联算法做协同过滤

可以找出用户购买的所有物品数据里频繁出现的项集,找到满足支持度阈值的关联物品的频繁N项集或者序列。如果用户购买了频繁N项集或者序列里的部分物品,可以将频繁项集或序列里的其他物品按一定的评分准则推荐给用户,这个评分准则可以包括支持度,置信度和提升度等。

Apriori不适于非重复项集数元素较多的案例,建议分析的商品种类为10类左右。

FP-growth算法:

FP-growth算法简介:

FP-growth算法建立在Apriori算法的概念之上,不同之处是它采用了更高级的数据结构FP-tree减少扫描数据次数,只需要两次扫描数据库,相比于Apriori减少了I/O操作,克服了Apriori算法需要多次扫描数据库的问题。

FP-growth的数据结构:

为了减少I/O次数, FP-growth算法引入了一些数据结构来临时存储数据。这个数据结构包括三部分:

一个项头表里面记录了所有的1项频繁集出现的次数,按照次数降序排列。

FP-Tree将原始数据集映射到了内存中的一颗FP树。

节点链表所有项头表里的1项频繁集都是一个节点链表的头,它依次指向FP树中该1项频繁集出现的位置。这样做主要是方便项头表和FP-Tree之间的联系查找和更新,也好理解。

 https://www.cnblogs.com/pinard/p/6307064.html

FP-Growth算法流程:

  1. 扫描数据,得到所有频繁一项集的的计数。然后删除支持度低于阈值的项,将1项频繁集放入项头表,并按照支持度降序排列。
  2. 扫描数据,将读到的原始数据剔除非频繁1项集,并将每一条再按照支持度降序排列。
  3. 读入排序后的数据集,逐条插入FP树,插入时按照排序后的顺序,插入FP树中,排序靠前的节点是祖先节点,而靠后的是子孙节点。如果有共用的祖先,则对应的公用祖先节点计数加1。插入后,如果有新节点出现,则项头表对应的节点会通过节点链表链接上新节点。直到所有的数据都插入到FP树后,FP树的建立完成。
  4. 从项头表的底部项依次向上找到项头表项对应的条件模式基。从条件模式基递归挖掘得到项头表项项的频繁项集。
  5. 如果不限制频繁项集的项数,则返回步骤4所有的频繁项集,否则只返回满足项数要求的频繁项集。

FP-Growth算法优缺点: 

优点:     

FP-Growth一般要快于Apriori ;

缺点:

FP-Growth实现比较困难,在某些数据集上性能会下降;     

FP-Growth适用数据类型:离散型数据

由于python中并未封装有关关联规则欸到第三方库,因此代码实现部分我会放在将spark时在对关联规则进行代码实现

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode初级算法书Java题解日常更新

LeetCode初级算法高效题解(含思路注释) 文章目录 LeetCode初级算法高效题解(含思路注释)前言一、数组1.删除排序数组中的重复项2.买卖股票的最佳时机 II3.旋转数组4.存在重复元素 总结 前言 决定用四个月过一下算法 一、数组 1.…

基于Spring Boot的入职匹配推荐系统设计与实现

基于Spring Boot的入职匹配推荐系统设计与实现 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/idea 系统部分展示 管理员登录界面,登录成功后进入到系统操…

Deformable Convolutional Networks论文阅读

Deformable Convolutional Networks论文阅读 Abstract1. Introduction2. Deformable Convolutional Networks2.1. Deformable Convolution2.2. Deformable RoI Pooling 总结 文章信息: 原文链接:https://arxiv.org/abs/1703.06211 源代码:htt…

移动平台相关(安卓)

目录 安卓开发 Unity打包安卓 ​编辑​编辑 BuildSettings PlayerSettings OtherSettings 身份证明 配置 脚本编译 优化 PublishingSettings 调试 ReMote Android Logcat AndroidStudio的调试 Java语法 ​编辑​编辑​编辑 变量 运算符 ​编辑​编辑​编辑​…

【随笔】Git 基础篇 -- 分支与合并 git rebase(十)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

Vue3从入门到实战:路由知识点

本人在B站上关于vue3的尚硅谷的课程,以下是整理一些笔记。 1.两个知识点 1.路由组件通常存放在pages 或 views文件夹,一般组件通常存放在components文件夹。 组件可以分为: 1. 一般组件:亲手写标签出来的 2. 路由组件&#…

【第十二篇】使用BurpSuite实现CSRF(实战案例)

CSRF存在前提:简单的身份验证只能保证请求是发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的 业务场景:新增、删除、收藏、编辑、保存使用Burp发现CSRF漏洞的过程如下。 1、如图,存在修改邮箱的功能点如下: 2、修改邮箱的流量包,此时邮箱已被修改: 思路:是…

【拓扑的基】示例及详解

集合X的某拓扑的一个基是X的子集的一个族(其成员称为基元素),满足条件: 1. 2. 由基生成拓扑 由生成的拓扑(满足以上两个条件) 等价描述: 由所有可表示为的某些成员的井的那些集合组成 例1: 证明:由生成的族确实是拓扑…

vue2 父子组件通讯

父传子 父组件&#xff1a;app.vue <template><div>app 父组件<!-- 2.动态绑定定义的数据 --><LiCount :title"mytitle"></LiCount></div> </template><script> import LiCount from "./components/LiCount.…

机场数据治理系列介绍(5)民用机场智慧能源系统评价体系设计

目录 一、背景 二、体系设计 1、评价体系设计维度 2、评价体系相关约定 3、评价指标体系框架设计 4、能源利用评价指标 5、环境友好评价指标 6、智慧管控评价指标 7、安全保障评价指标 三、具体落地措施 一、背景 在“双碳”国策之下&#xff0c;各类机场将能源系统建…

6.10物联网RK3399项目开发实录-驱动开发之SPI接口的使用(wulianjishu666)

嵌入式实战开发例程&#xff0c;珍贵资料&#xff0c;开发必备&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1149x7q_Yg6Zb3HN6gBBAVA?pwdhs8b SPI 使用 SPI 简介 SPI 是一种高速的&#xff0c;全双工&#xff0c;同步串行通信接口&#xff0c;用于连接微控制器、…

使用单点登录(SSO)如何提高安全性和用户体验

什么是单点登录&#xff08;SSO&#xff09; 对于所有大量采用云应用程序的组织来说&#xff0c;有效的身份管理是一个巨大的挑战&#xff0c;如果每个 SaaS 应用程序的用户身份都是独立管理的&#xff0c;则用户必须记住多个密码&#xff0c;技术支持技术人员在混合环境中管理…