数据挖掘——关联规则挖掘

数据挖掘——关联规则挖掘《数据挖掘》国防科技大学《数据挖掘》青岛大学数据挖掘之关联规则挖掘关联规则挖掘(AssociationRuleMining)最早是由Agrawal等人提出。最初的动机是解决购物篮分析(BasketAnalysis)问题,目的是发现交易数据库(TransactionDatabase)中不同商品之间的联系规则。定义关联规则是描述在一个交易中物品之间同时出现的规律的知识模式,更确切的说,关联规则是通过量化的数字描述物品X的出现对物品Y的出现有多大的影响。关联分析associationana

大家好,又见面了,我是你们的朋友全栈君。

《数据挖掘》国防科技大学
《数据挖掘》青岛大学

数据挖掘之关联规则挖掘

关联规则挖掘(Association Rule Mining)最早是由Agrawal等人提出。最初的动机是解决购物篮分析(Basket Analysis)问题,目的是发现交易数据库(Transaction Database)中不同商品之间的联系规则。

1. 定义

关联规则是描述在一个交易中物品之间同时出现的规律的知识模式,更确切的说,关联规则是通过量化的数字描述物品X的出现对物品Y的出现有多大的影响。
关联分析 association analysis:关联分析用于发现隐藏在大型数据集中的令人感兴趣的联系,所发现的模式通常用关联规则或频繁项集的形式表示。
在这里插入图片描述

形式化描述

• 关联规则挖掘的交易数据集记为D
• D ={T1,T2,…,Tk,…,Tn},Tk(k=1,2,…,n)称为交易,每个交易有唯一的标识,记作TID。
• 元素 im(m=1,2,…,p)称为项。在交易数据集中,每个项 ik 代表一种商品的编号或名称。
• 设 I = { i1,i2,…,im}是 D 中全体项组成的集合。D 中的每个事务Tk都是 I 的一个子集,即 Tk ⊆ I ( j=1,2,…,n)。
• 由 I 中部分或全部项构成的一个集合称为项(itemset),任何非空项集中均不含有重复项。若 I 包含m个项,那么可以产生2m个非空项集。
• 设 X 是一个 I 中项的集合,如果 X ⊆ Tk,那么称交易 Tk 包含项集 X。
◆ 若X,Y为项集,X⊂I, Y⊂I,并且X∩Y=Ø,则形如X→Y的表达式称为关联规则。

度量

  • 支持度(support)
    支持度是对关联规则重要性的衡量,反映关联是否是普遍存在的规律,体现这条规则在所有交易中有多大的代表性。记为:support(X→Y)
    在这里插入图片描述
  • 置信度(confidence)
    置信度(或可信度、信任度)是对关联规则准确度的衡量,度量关联规则的强度。即在所有出现了X的活动中出现Y的频率,说明规则X→Y的必然性有多大。记为confidence(X→Y)。
    在这里插入图片描述

基本概念

  • 挖掘关联规则
    在给定一个交易数据集D上,挖掘关联规则问题就是产生支持度和置信度分别大于等于用户给定的最小支持度阈值和最小置信度阈值的关联规则。
  • 支持度计数
    一般地,项集支持度是一个0~1的数值,由于在计算项集支持度时,所有分母是相同的,所以可以用分子即该项集出现的次数来代表支持度,称为支持度计数。
  • 频繁项集
    给定全局项集 I 和交易数据集 D,对于 I 的非空项集 I1,若其支持度大于或等于最小支持度阈值min_sup,则称 I1 为频繁项集(Frequent Itemsets)。
  • k-项集和频繁 k-项集
    对于I的非空子集 I1,若项集 I1 中包含有 I 中的 k 个项,称 I1 为 k-项集。若 k-项集 I1 是频繁项集,称为频繁 k-项集。
  • 超集
    如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S1就是S2的一个超集,反过来,S2是S1的子集。 S1是S2的超集,若S1中一定有S2中没有的元素,则S1是S2的真超集,反过来S2是S1的真子集。

2. 基本过程

① 找频繁项集:通过用户给定最小支持度阈值min_sup,寻找所有频繁项集,即仅保留大于或等于最小支持度阈值的项集。
② 生成强关联规则:通过用户给定最小置信度阈值min_conf,在每个最大频繁项集中寻找关联规则,即删除不满足最小置信度阈值的规则。
注意:一个频繁X项集能够生成2X-2个候选关联规则

3. 原始方法

蛮力法(brute-force approach):计算每个可能的规则的支持度和置信度
计算代价过高(可能提取的规则的数量达指数级)

4. Apriori

先验原理:
· 如果一个项集是频繁的,则它的所有子集一定也是频繁的;相反,如果一个项集是非频繁的,则它的所有超集也一定是非频繁的。→提前剪枝
注意事项:

  • 项的字典序:尽管集合具有无序性,但为了快速连接操作,通常对所有商品做一个默认的排序(类似于建立一个字典索引)。
  • 项的连接:可以降低候选项的生成
    在这里插入图片描述
    例子:
    在这里插入图片描述
    算法特点:
  • 多次扫描数据库
  • 候选项规模庞大
  • 计算支持度开销大
    提高算法性能的方法:
  • 散列项集计数 Hash-based itemset counting
  • 事务压缩 Transaction reduction
  • 划分 Partitioning
  • 采样 Sampling

FPGrowth

基本思想:

  • 只扫描数据库两遍,构造频繁模式树(FP-Tree)
  • 自底向上递归产生频繁项集
  • FP树是一种输入数据的压缩表示,它通过逐个读入事务,并把每个事务映射到FP树中的一条路径来构造。
    构造FP树:
  • 扫描数据库,得到频繁1-项集,并把项按支持度递减排序
  • 再一次扫描数据库,建立FP-tree(遍历每一个事务,构造成一条路径,并给项计数)
    在这里插入图片描述
    生成条件模式:
  • 从FP-tree的头表开始
  • 按照每个频繁项的连接遍历FP-tree
  • 列出能够到达此项的所有前缀路径,得到条件模式基
    在这里插入图片描述
    递归生成FP树:
    对每个模式库,计算库中每个项的支持度,用模式库中的频繁项建立FP-tree
    在这里插入图片描述
    优点:
  • 完备性:不会打破交易中的任何模式,包含了频繁模式挖掘所需的全部信息
  • 紧密性:支持度降序排列,支持度高的项在FP-tree中共享的机会也高;绝不会比原数据库大

Apriori和FP-tree性能对比

在这里插入图片描述
!在这里插入图片描述
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160718.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • navicat for mysql 15 for mac激活码【2021.10最新】

    (navicat for mysql 15 for mac激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

  • Linux抓包命令_怎么使用wireshark抓包

    Linux抓包命令_怎么使用wireshark抓包Wireshark是一款图形化的抓包软件,在LInux和Windows下都可以下载。用命令安装wireshark相关软件包命令:查看安装wireshark产生了哪些文件直接通过命令打开或者是图形化页面点开就好点击InterfaceList,就可以看到接口列表,选择需要抓哪个网卡的包这里我选择ens33网卡,点击start开始抓包我们ping我们的主机地址,看看抓包情况ping工具使用的就是协议,ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息。它主要是

  • 前端开发写代码哪个软件更好用?

    前端开发写代码哪个软件更好用?群里的朋友,经常问到web前端开发写代码用那个软件好?今天在这里统一回答下,主流的web前端开发写代码的软件有这些Webstorm、Vscode、SublimeText、HBuilder、Dreamweaver、notepad++、editplus等,做前端这么多年了,下面谈下我的使用感受吧。1.WebStorm【推荐】WebStorm是jetbrai…

  • c语言之选择排序法

    c语言之选择排序法c语言之选择排序法啊,这是我第一次写文章,可能会有很多不足,希望大家可以给我指出。问题:选择法排序题目描述输入一个正整数n,再输入n个整数,将他们从大到小排序后输出。样例输入525134样例输出54321//精髓就是要交换数值大小;#include<stdio.h>intmain(){ intn; scanf(“%d”,&n);//定义有多少数; inti,a[n]; for(i=0;i<n;i++) { s

  • gb50174-2017数据中心机房等级标准_计算机机房设计标准GB50174

    gb50174-2017数据中心机房等级标准_计算机机房设计标准GB501742.0.1数据中心datacenter为集中放置的电子信息设备提供运行环境的建筑场所,可以是一栋或几栋建筑物,也可以是一栋建筑物的一部分,包括主机房、辅助区、支持区和行政管理区等。2.0.2灾备数据中心businessrecoverydatacenter用于灾难发生时,接替生产系统运行,进行数据处理和支持关键业务功能继续运作的场所,包括限制区、普通区和专用区。2.0.3主机房c…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号