Aprioi关联算法

news2024/11/25 13:31:54

国际权威的学术会议IEEE International Conference on Data Mining (ICDM) 评选出了数据挖掘领域的十大经典算法,他们分别是:C4.5、kMeans、SVM、Apriori、EM、PageRank、AdaBoost、KNN、Naive Bayes以及CART。今天就让我们共同探讨一下十大算法之一Apriori的具体应用。

#Apriori 算法简介

在算法学习过程中,有个经典的例子,当美国超市把纸尿布和啤酒放在一起的时候,两样商品的销售额双双上升。从表面上看,两者并没有直接关系,但却暗藏着一个鲜为人知的逻辑。美国消费者购买纸尿布的往往是男性消费者,而他们大多数都是啤酒爱好者。当然这是一个教科书上的故事,但是在如何提升销售量的问题上,把两件或多样的商品结合起来销售,提升其中一种或多种产品的销售额,成为了研究的热点,而其核心问题就是要找出两件物品之间的关联规则,这也是我们今天的主角Apriori模型[1]。


一. Apriori概述

Apriori在拉丁语中指“来自以前”。当定义问题时,通常会使用先验知识或假设,这被称作“一个先验”(a priori),Apriori算法的名字正是基于这样的事实:选择物品间的关联规则也就是要寻找物品之间的潜在关系。

举例:

1. 找出频繁一起出现的物品集的集合,我们称之为频繁项集。比如一个超市的频繁项集可能有(啤酒+尿布,纸巾+湿巾,苹果+西瓜)

2. 在频繁项集的基础上,使用Apriori关联规则算法找出其中物品的关联结果。

>综上所述,需要先找频繁项集,再根据关联规则找关联物品,对于频繁项集的筛选原因有两点:

1.若是商品并不是购买频次高的商品,则在统计学上,其购买次数与其他物品的关系无法得到验证。

2.考虑到若是有1万个商品,若对购买频次不高加入模型中,会大大影响模型的使用效率。所以从两方面来说,先找频繁项集,再根据关联规则找关联物品将极大帮助我们提高工作的效率。


二. Apriori算法基础

在介绍Apriori算法之前,首先要了解支持度、置信度以及提升度的基本概念。

以20条商品购买记录数据为例:

01 支持度(Support)

支持度可以理解为物品当前流行程度。

◎支持度=包含物品A的记录数量/总的记录数量

苹果的支持度:16/19

02 置信度(Confidence)

置信度是指如果购买物品A,有较大可能购买物品B。

◎置信度(A->B)=包含物品A和B的记录数量/包含 A 的记录数量

置信度(苹果→玉米): 支持度(苹果→玉米)/支持度(苹果)=9/10

03 提升度(Lift)

提升度指当销售一个物品时,另一个物品销售率会增加多少。

◎提升度(A->B)=置信度(A->B)/(支持度A)

苹果–>玉米的提升度为:

支持度(玉米): 玉米的支持度=16/19

置信度(苹果→玉米): 支持度(苹果→玉米)/支持度(苹果)=9/10

提升度(苹果→玉米): 置信度(苹果→玉米)/支持度(玉米)=(9/10)/(16/19)

其中支持度将帮助我们确定频繁项集,而置信度和提升度将会基于频繁项集在下一篇寻找物品关联规则的时候使用。


三.Apriori算法特点

Apriori算法首先根据物品间的支持度找出物品中的频繁项集。通过上面我们知道,支持度越高,说明物品越受欢迎。这个支持度是我们主观决定的,我们需要将这个参数传入到模型中,然后Apriori会返回支持度不小于预先设定的一个支持度阈值的那些频繁项集。

而后,置信度通过之前给出的计算规则进行计算,对于其规则苹果⟹玉米计算出其支持度(玉米)与置信度(苹果⟹玉米)。置信度越高,苹果⟹玉米存在关联的可能性越大。提升度则是衡量苹果⟹玉米关系强弱的标准。简单来说,置信度是判断两者是否存在相关,提升度是衡量关系的强弱。然而如果用引擎搜索所有组合,一旦数据量很大时,所产生的运算量无法估计,所以Apriori给出了一个解决方案即:某个项集是频繁的,那么它的所有子集也是频繁的;另一种解释是:若某个项集是非频繁的,那么它的所有子集也是非频繁的,这个推论将大大减少我们的运算时间。有了这些基础,下面进入实战环节。

算法实现,待补充。

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

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

相关文章

红黑树的插入和删除

红黑树(C) 红黑树简述红黑树的概念红黑树的性质红黑树结点定义 一,红黑树的插入插入调整插入代码 二,红黑树的验证三,红黑树的删除待删除的结点只有一个子树删除结点颜色为红色删除结点颜色为黑色 删除的结点为叶子节点…

【OpenMMLab AI实战营二期笔记】第六天 MMDetection代码课

0. 环境检测和安装 # 安装 mmengine 和 mmcv 依赖 # 为了防止后续版本变更导致的代码无法运行,暂时锁死版本 pip install -U "openmim0.3.7" mim install "mmengine0.7.1" mim install "mmcv2.0.0"# Install mmdetection rm -rf mmd…

软考A计划-系统架构师-知识点汇总-上篇

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

Python转行的一点心得

Python现在非常火,语法简单而且功能强大,很多同学都想学Python!最近陆陆续续有很多小伙伴问我,学Python到底应该做什么,从事哪种岗位。下面是我们工作圈里面一些同学的苦恼: 一转行要趁早 上面类似的问题群里还有很多…

华为HCIA备考 易错题整理

1.IEEE802.1Q定义的 VLAN 帧格式中VLAN ID总共有多少bit 答:12 2.NAPT允许多个私有IP地址通过不同的端口号映射到同一个公有IP地址上,且不需要做任何关于端口号的配置。 3.IEEE802.1Q定义的VLAN帧总长度为多少字节? 答:4 4.关于…

阿里云创建ALB_Ingress

阿里云参考文档 1、编写alb AlbConfig创建文档 rootbiking-pre-middleware:~/alb# cat ingress-alb.yaml apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: #alb名称name: ingress-alb spec:config:name: ingress-albaddressType: InternetzoneMappings:# 两个交换…

chatgpt赋能python:Python按行输出方法

Python按行输出方法 Python作为一种快速易用的编程语言,广泛应用于数据分析、科学计算、web开发等领域。在Python编程过程中,输出数据是必不可少的环节。本文将介绍如何按行输出Python数据,为Python编程初学者提供参考。 什么是按行输出 按…

consul入门案例及配置热更新的实现

Consul的简单入门 当Producer启动时,会向Consul发送一个post请求,告诉Consul自己的ip和Port;Consul接收到producer的注册后,每个10S(默认),会向producer发送一个健康检查的请求,检验Producer是否健康当Consumer发送GET方式请求/api/address到Producer时,会先从Consul中拿到一个…

超越密码:网络安全认证的未来

你的物理现实的数字对应物正在惊人地增长。虽然肯定会有积极的结果,但随着互联网的发展,与之相关的风险也在迅速增加。在讨论网络安全风险管理时,首先想到的是密码。但当出现诈骗、网络钓鱼等威胁时,这还不够。 那么,…

chatgpt赋能python:Python爬虫:抓取数据的实用技巧

Python爬虫:抓取数据的实用技巧 如果您是一名数字营销从业者,那么您一定知道SEO的重要性。SEO是一项复杂的工作,但是其中包含了一个非常关键的步骤,就是通过爬虫从网站中抓取数据。Python是一个非常强大的工具,可以帮…

网络层:静态路由配置及其可能产生的路由环路问题

网络层:静态路由配置及其可能产生的路由环路问题 笔记来源: 湖科大教书匠:静态路由配置及其可能产生的路由环路问题 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 静态路由配置是指用户或网络管理员使用路由器的…

chatgpt赋能python:Python实现直线拟合及求斜率

Python实现直线拟合及求斜率 什么是直线拟合 直线拟合是一种数据处理方法,将一组数据点拟合成一条直线的形式,以求出其中的规律性关系,从而更好地理解数据点之间的相关性。 直线拟合的应用场景 直线拟合在很多领域都有应用,例…

openGauss5 企业版之开发设计规范

文章目录 1.数据库对象命名2. Database和Schema设计2.1 Database设计建议2.2 Schema设计建议 3. 表设计3.1选择存储方案3.2 选择分布方案3.3 选择分区方案3.4 选择分布键 1.数据库对象命名 数据库对象命名需要满足约束: 标识符非时序表长度不超过63个字节&#xff…

SSTI---总结

Laravel Blade是Laravel提供的一个既简单又强大的模板引擎 和其他流行的PHP模板引擎不一样,Blade并不限制你在视图view中使用原生的PHP代码 所有的Blade视图页面都将被编译成原生的PHP代码并缓存起来,除非你的的模板文件修改,否则不会重新编…

【RabbitMQ教程】第一章 —— RabbitMQ - 安装

💧 【 R a b b i t M Q 教程】第一章—— R a b b i t M Q − 安装 \color{#FF1493}{【RabbitMQ教程】第一章 —— RabbitMQ - 安装} 【RabbitMQ教程】第一章——RabbitMQ−安装💧 🌷 仰望天空,妳我亦是行人.✨ &#x…

腾讯丁珂:以数字安全免疫力建设安全新范式

6月13日,腾讯安全联合IDC等多家机构在北京举办研讨论坛,并发布“数字安全免疫力”模型框架,提出用免疫的思维应对新时期下安全建设与企业发展难以协同的挑战。腾讯集团副总裁、腾讯安全总裁丁珂在论坛上表示,数智化新阶段&#xf…

springCloud 中,openFeign 使用说明

文章目录 1、openFeign 中的每个方法中的参数和注解不能少。2、开启日志打印功能3、超时 1、openFeign 中的每个方法中的参数和注解不能少。 如果服务端方法中的数据含有注解,则 客户端 openFeign 中的每个方法中的参数和注解一个不能少,比较完全一致。…

chatgpt赋能python:Python抠图教程:用代码实现高效抠图

Python 抠图教程:用代码实现高效抠图 什么是抠图? 在设计、美术、广告等领域中,经常需要把一张图片中的某个物体或人物单独提取出来,以便于进行后续的处理、叠加、合成等操作。这个过程就叫做抠图。 传统的抠图方式需要用到PS、…

【MCS-51】外接数码管

单片机可以连的显示外设有很多种,我们常用到的就是连接LED显示,但是除了LED以外,我们还有很多外部的显示元件,包括数码管、点阵屏等由圆管或者方管LED组成的显示屏,接下来我们着重来看如何使用51单片机外接数码管进行显…

chatgpt赋能python:Python如何打开Word文档?

Python 如何打开 Word 文档? Python 是一种强大的编程语言,可以帮助我们完成各种重复性工作,其中包括自动化文件的处理。在这篇文章中,我们将学习如何使用 Python 打开 Word 文档。本文将介绍三种不同的方式:使用 Pyt…