Apriori(关联规则挖掘算法)

news2024/9/24 17:15:21

关联规则分析

  • 事务库

    上表所示的购物篮数据即是一个事务库,该事务库记录的是用户行为的数据。

  • 事务
    上表事务库中的每一条记录被称为一笔事务。在购物篮事务中,每一次购物行为即为一笔事务,例如第一行数据“用户1购买商品A,B,C”即为一条事务。

  • 项和项集
    在购物篮事务中,每样商品代表一个项,项的集合称为项集。每样商品的组合构成项集,例如“A,B”、 “A,C”、 “B,C”、 “A,B,C”都是一个项集,其实也就是不同商品的组合。

  • 关联规则
    关联规则是形如X → Y的表达式,X称为前件,Y称为后件。
    注意X和Y不是指单一的商品,而是指上面提到的项集,比如其形式可以为:{A, B} →{C},其含义就是如果购买商品A和B的用户也会买C。

  • 支持度(Support)
    项集的支持度定义为包含该项集的事务在所有事务中所占的比例。

  • 频繁项集
    支持度大于等于人为设定的阈值(该阈值也称为最小支持度)的项集即为频繁项集,其实也就是指该项集在所有事务中出现的较为频繁。

  • 置信度(Confidence)
    置信度表示在关联规则的先决条件X发生的条件下,关联结果Y发生的概率

在购物篮事务当中,关联规则X → Y的置信度为购买商品X的基础上购买商品Y的概率P(Y|X),据公式有:

image-20230111122654456

  • 强关联规则

寻找强关联规则的主要步骤:

  1. 先寻找满足最小支持度的频繁项集
  2. 在频繁项集中寻找到满足最小置信度的关联规则
  • 提升度(Lift)

提升度表示先购买X对Y的概率的提升作用,用来判断规则是否有实际价值,即使用规则后商品在购物车中出现的频率是否高于商品单独出现在购物车中的频率。如果大于1说明规则有效,小于1则无效,等于1则表示X与Y相互独立。

满足最小支持度和最小置信度的规则,叫做“强关联规则”。然而,强关联规则里,又分为有效的强关联规则和无效的强关联规则。具体划分情况如下:
若Lift(X→Y)>1,则规则“X→Y”是有效的强关联规则。

若Lift(X→Y)<1,则规则“X→Y”是无效的强关联规则。

若Lift(X→Y) =1,则表示X与Y相互独立。

注意:

关联规则分析与协同过滤算法都可以用来作为推荐系统的实现,但仍有区别:

  • 协同过滤算法是基于用户或商品之间的距离或相似度进行推荐
  • 关联规则分析是通过寻找强关联规则后进行推荐

Apriori

Apriori 是一种数据挖掘算法,用于发现数据集中的频繁项集和关联规则。它通常用于市场篮分析,以确定哪些商品通常一起购买。这个算法基于"先验原则",它假设如果一个项集是频繁的,那么它的所有子集也必须是频繁的。这一假设有助于减少搜索空间,提高算法的效率

Apriori算法步骤

  1. 设定最小支持度和最小置信度
  2. 根据最小支持度找出所有的频繁项集
  3. 根据最小置信度发现强关联规则

以购物篮数据演示Apriori算法的计算步骤,数据如下所示:
image-20230111203055752

  1. 设定最小支持度和最小置信度

    • 首先设置最小支持度为2/5,也即40%
    • 其次设置最小置信度为4/5,也即80%
  2. 根据最小支持度找出所有的频繁项集
    Apriori算法采用了一个精巧的思路来加快运算速度:
    先计算长度为1的项集,然后挖掘其中的频繁项集;再将长度为1的频繁项集进行排列组合,从中挖掘长度为2的频繁项集,然后以此推。核心逻辑是一个迭代判断的思想:如果连长度为n-1的项集都不是频繁项集,那就不用考虑长度为n的项集了,例如,如果在迭代的过程发现{A, B, C}不是频繁项集,那么{A, B, C, D}必然不是频繁项集,也就不用去考虑它了。
    首先计算长度为1的候选项集,扫描交易数据集,统计每种商品出现的次数,如下表 所示:

    image-20230111204154652
    将长度为1的频繁项集进行两两组合,形成长度为2的候选集,扫描交易数据集,统
    计各个候选项集在购物篮事务中出现的次数,如下表所示:
    image-20230111204340579
    将长度为2的频繁项集进行两两组合,形成长度为3的候选集,扫描交易数据集,统计各个候选项集在购物篮事务中出现的次数,如下表所示:
    image-20230111204621616
    两个数据之间,所以我们需要选择长度大于1的频繁项集,长度大于1的所有频繁项 集,如下表所示:
    image-20230111204910445

  3. 根据最小置信度发现强关联规则
    image-20230111211805524

简单代码

transactions = [['A', 'B', 'C'], ['A', 'B'], ['B', 'C'], ['A', 'B', 'C', 'D'], ['B', 'C', 'D']]

from apyori import apriori
# 调用apriori函数,指定最小支持度和最小置信度
rules = apriori(transactions, min_support=0.4, min_confidence=0.8)
# 将生成器对象转化成列表
results = list(rules)

for i in results: # 遍历results中的每一个频繁项集
  for j in i.ordered_statistics: # 获取频繁项集中的关联规则
    X = j.items_base # 关联规则的前件
    Y = j.items_add # 关联规则的后件
    x = ', '.join([item for item in X]) # 连接前件中的元素
    y = ', '.join([item for item in Y]) # 连接后件中的元素
    if x != '': # 防止出现关联规则前件为空的情况
      print(x + ' → ' + y) # 通过字符串拼接的方式更好呈现结果

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

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

相关文章

【MATLAB源码-第51期】基于matlab的粒子群算法(PSO)的栅格地图路径规划。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 粒子群算法&#xff08;Particle Swarm Optimization&#xff0c;简称PSO&#xff09;是一种模拟鸟群觅食行为的启发式优化方法。以下是其详细描述&#xff1a; 基本思想&#xff1a; 鸟群在寻找食物时&#xff0c;每只鸟都会…

完美解决 在将最终稿件上传到 IEEE PDF eXpress进行格式检查是出现“font not embedded“的问题 (不会出现自动压缩图像的现象)

最近中了一篇IEEE的论文&#xff0c;在校稿阶段&#xff0c;final paper是需要通过IEEE PDF eXpress网站的格式检查&#xff0c;然后出现一下问题&#xff1a; Errors: Font TimesNewRomanPS-BoldMT, TimesNewRomanPS-ItalicMT, TimesNewRomanPSMT is not embedded 用人话说就…

贝锐花生壳+Fooocus,快速自建可远程访问的SDXL,平替Midjourney

Midjourney、stable diffusion两款AI绘图工具是最近这段时间的热点。不过&#xff0c;事无完美&#xff0c;他们各有一些优缺点。 例如&#xff1a;stable diffusion虽然开源可私有化部署&#xff0c;但操作相对复杂&#xff0c;需要设置各类参数&#xff1b;Midjourney虽然简单…

轻松实现数据操作:JVS低代码列表页与逻辑联动的解决方案

列表页是用户对数据查询、操作的基础入口&#xff0c;那么按钮对逻辑的联动操作是我们常见的业务形态&#xff0c;那么我们先看一个示例&#xff0c;如下所示&#xff1a; 通过列表页的顶部按钮和行级按钮触发不同的逻辑&#xff0c;对本列表页的数据进行修改&#xff0c;表级按…

自动化测试中如何编写配置文件 ? 该使用什么工具 ? 一文详解使用ConfigParser读写配置文件

1. 配置文件说明 只要是用编写项目&#xff0c;你就肯定离不开配置文件 。就以测试人员编写的自动化测试项目为例 &#xff0c;如果你做连接数据库 、访问一些第三方接口、或者访问登录接口的用户名和密码。这些输入的信息最大特点就是都可能是变量&#xff0c;比如访问数据库…

STM32标准外设库下载(下载地址与步骤详解)

文章目录 1. 概述2. 官方下载地址3. 步骤详解3.1 打开官网3.2 工具与软件 ➡ 嵌入式软件 ➡ MEMS软件3.3 微控制器软件 ➡ STM32微控制器软件 ➡ STM32标准外设软件库 ➡ 选择产品系列3.4 选择版本 ➡ 点击下载3.5 点击“接受” ➡ 填写邮箱信息 ➡ 点击“下载”3.6 点击接收到…

【Django 03】QuerySet 和 Instance应用

1. DRF QuerySet 和 Instance功能概述 1.1 QuerySet 从数据库中查询结果存放的集合称为 QuerySet。 Django ORM用到三个类&#xff1a;Manager、QuerySet、Model。每个Model都有一个默认的 manager实例&#xff0c;名为objects。Django的ORM通过Mode的objects属性提供各种数据…

【Typora】解决单词爆红问题

问题&#xff1a;写笔记时&#xff0c;有许多单词爆红&#xff0c;看着十分不舒服 解决方案&#xff1a; 点击文件 --> 偏好设置 编辑器 --> 检查拼写错误&#xff0c;修改为&#xff1a;不使用拼写检查 修改好后返回界面&#xff0c;效果如下&#xff1a;

基于springboot实现线上教学平台项目【项目源码+论文说明】计算机毕业设计

摘要 在社会快速发展的影响下&#xff0c;使线上教学平台的管理和运营比过去十年更加理性化。依照这一现实为基础&#xff0c;设计一个快捷而又方便的网上线上教学平台系统是一项十分重要并且有价值的事情。对于传统的线上教学平台控制模型来说&#xff0c;网上线上教学平台系…

蓝桥杯(路径 动态规划 C++)

思路&#xff1a; 1、利用动态规划的思想。 2、用f[i]来记录从第一个点到第i个点的最短距离。 3、f[i]赋值分两种情况&#xff0c;第一种&#xff1a;f[i]为0的时候&#xff0c;也就是第一种刚到i点的情况&#xff0c;记录其距离为最小公倍数&#xff1b;第二种&#xff1a;…

原生Android与uniapp开发的H5混合开发

1、uniapp项目打包 vue版本选择2.0 记住一点&#xff0c;打包H5前修改配置&#xff0c;否则在Android中打开会白屏&#xff0c;修改方式如下 打包成H5&#xff0c;打包后可以在浏览器打开确保有内容 2、将打包后的uniappH5拷贝到Android项目 assets文件夹没有就自己建 3、And…

06496基于PHP的在线考试系统设计与实现-计算机毕业设计源码

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对在线考试等问题&#xff0c;对如何通过计算…

Leetcode.19 删除链表的倒数第 N 个结点

题目链接 Leetcode.19 删除链表的倒数第 N 个结点 mid 题目描述 给你一个链表&#xff0c;删除链表的倒数第 n n n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输…

XAMPP、Apache搭建本地PHP服务器(全网最保姆级)

XAMPP搭建本地PHP服务器 用XAMPP搭建本地PHP服务器&#xff0c;运行php文件 启动服务 打开后进入如下界面&#xff1a;根据自己的需要启动服务 我这里打开的是Apache和MySQL 可以根据自己的习惯修改端口号 默认是8080 我这里修改为80端口 修改监听的端口号 Httpd.conf文件…

【小笔记】为什么文本相似度要用余弦相似度而不用欧式距离?

欧式距离 它计算的是高维空间中两个点之间的绝对距离&#xff0c;不考虑向量的方向性 余弦相似度 它计算的是两个向量夹角的cos值&#xff0c;只关注向量的方向&#xff0c;不考虑向量的绝对大小&#xff08;因为不管长短&#xff0c;都会除以模变成单位向量&#xff09;&am…

【面试经典150 | 区间】用最少数量的箭引爆气球

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;合并区间 其他语言python3 写在最后 Tag 【合并区间】【排序】【数组】 题目来源 452. 用最少数量的箭引爆气球 题目解读 每个气球都有一个占据x轴的一个范围&#xff0c;在这个范围里射出一只箭就会引爆该气球&…

03、MySQL-------数据库中间件MyCat实现读写分离

目录 八、数据库中间件MyCat实现读写分离1、克隆&#xff1a;2、配置分析&#xff1a;1、schema.xml2、启动mycat&#xff1a;3、关闭防火墙&#xff1a;4、代码测试&#xff1a;测试写入&#xff1a;测试读&#xff1a;强制读Master 八、数据库中间件MyCat实现读写分离 作用&…

gcc编译C语言

目录 文章目录 一、gcc编译C语言过程1. 预处理阶段2. 编译阶段3. 汇编阶段4. 链接阶段 二、示例1.预处理2.编译3.汇编4.链接5.执行命令 一、gcc编译C语言过程 gcc编译C语言程序的过程分成四个阶段&#xff1a;预处理、编译、汇编和链接。 编译流程命令作用解释预处理阶段gcc …

EasyRule源码:EasyRule框架源码分析

目录 1.简要介绍EasyRule 2.从实例入手看EasyRule使用方法 3.执行过程源码分析 3.1 Fact&Facts 3.2 规则定义和注册 3.2.1 Rule接口 3.2.2 规则注册管理 3.2.3 创建规则代理 3.3 规则引擎调度执行 1.简要介绍EasyRule 当下的规则引擎选择非常多&#xff0c;例如 …

PN8016 宽输出范围非隔离交直流转换芯片适用于非隔离的辅助电源

PN8016集成PFM控制器及800V高雪崩能力智能功率MOSFET&#xff0c;用于外围元器件极精简的小功率非隔离开关电源&#xff0c;输出电压可通过FB电阻调整。 PN8016内置800V高压启动与自供电模块&#xff0c;实现系统快速启动、超低待机、自供电功能。该芯片提供了完整的智能化保护…