PrefixSpan算法原理
1、简介
PrefixSpan算法的全称是Prefix-Projected Patten Growth,即前缀投影的模式挖掘,是一种关联规则挖掘算法,与Apriori算法,Fp-Growth算法一样,它们都是挖掘某个出现次数频繁的算法。Apriori和Fp-Growth算法都是挖掘频繁项集,而PrefixSpan算法挖掘的是频繁序列。
2、 概念
左边的数据记录称为项集,右边的数据记录称为序列。
左边表格的每一条记录称为项集(由不同字母组成)。
右边表格的每一条记录,是由多个项集组成的,并且组成序列的项集是有先后顺序的。
3、前缀、前缀投影(前缀投影又称后缀)的概念
对上面的表格求(a)元素的前缀及前缀投影,如下:
求前缀投影的方法是:对每条数据记录,从头开始扫描,如果不是前缀就删除这个元素,如果这个元素和前缀相同,也删除这个元素,此时对这一条记录停止扫描,并开始下一条数据记录的扫描。
_d符号:下划线称为占位符,这条元素数据记录为( ad )( c )( bc )( ae ),求a的前缀投影,从头开始扫描这条数据记录,第一个元素与和前缀a相同,此时发现a所在的项集有2个及2个以上的元素(即ad在同一个项集),那么删除a后,要用一个占位符下划线,代替a的位置。
同理,可求前缀(a)(a)的投影为:
4、PrefixSpan算法原理及流程
PrefixSpan算法的目的是挖掘出满足最小支持度的频繁序列,和Apriori算法类似,它是从长度为1的前缀开始挖掘序列模式,搜索对应的前缀投影数据库,得到长度为1的前缀对应的频繁序列,然后递归的挖掘长度为2的前缀对应的频繁序列,依此类推。直到某个前缀的前缀投影数据库为空时结束。
下面举例说明:所用数据库如下,设置的最小支持度为2:
* Step1:
扫描整个数据库,找出所有不同的元素,结果如下:
a b c d e f g 共7个元素
再求出每个元素在表格中出现的次数(如果某个元素在同一条数据记录中出现多次,也只认为时出现了一次,如( a )( abc )( ac)( d )( cf )这个序列,a元素在这条记录中出现了多次,但只记为1次)。元素统计次数如下:
显然元素g出现的次数小于2,所以删除所有序列中的g元素。得到table 1表:
* Step2:
对这个新的数据库table1,依次以刚才的频繁元素为前缀,求其前缀投影,结果如下:
* Step3:
开始挖掘频繁序列,以a为前缀的投影数据库为例:
数据库:
* Step4:对数据库table2求出频繁元素:
* Step5:再次递归,这次选(d)元素为前缀的前缀投影:
到此为止,这个table3中的所有元素,其出现的次数都小于2,即没有频繁元素了,因此递归到这就结束了。
所以以上步骤中,求了三次前缀投影及频繁元素统计。得到如下频繁序列:
* Step6:其他分支也是类似过程,上述可以看到大量的相同操作,这些相同的操作可以用递归表示。
PrefixSpan算法原理的更多相关文章
- PrefixSpan算法原理总结
前面我们讲到频繁项集挖掘的关联算法Apriori和FP Tree.这两个算法都是挖掘频繁项集的.而今天我们要介绍的PrefixSpan算法也是关联算法,但是它是挖掘频繁序列模式的,因此要解决的问题目标 ...
- 用Spark学习FP Tree算法和PrefixSpan算法
在FP Tree算法原理总结和PrefixSpan算法原理总结中,我们对FP Tree和PrefixSpan这两种关联算法的原理做了总结,这里就从实践的角度介绍如何使用这两个算法.由于scikit-l ...
- Bagging与随机森林算法原理小结
在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合. ...
- RSA算法原理
一直以来对linux中的ssh认证.SSL.TLS这些安全认证似懂非懂的.看到阮一峰博客中对RSA算法的原理做了非常详细的解释,看完之后茅塞顿开,关于RSA的相关文章如下 RSA算法原理(一) RSA ...
- LruCache算法原理及实现
LruCache算法原理及实现 LruCache算法原理 LRU为Least Recently Used的缩写,意思也就是近期最少使用算法.LruCache将LinkedHashMap的顺序设置为LR ...
- MySQL索引背后的数据结构及算法原理【转】
本文来自:张洋的MySQL索引背后的数据结构及算法原理 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持 ...
- OpenGL学习进程(13)第十课:基本图形的底层实现及算法原理
本节介绍OpenGL中绘制直线.圆.椭圆,多边形的算法原理. (1)绘制任意方向(任意斜率)的直线: 1)中点画线法: 中点画线法的算法原理不做介绍,但这里用到最基本的画0<=k ...
- 支持向量机原理(四)SMO算法原理
支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五) ...
- 分布式缓存技术memcached学习(四)—— 一致性hash算法原理
分布式一致性hash算法简介 当你看到“分布式一致性hash算法”这个词时,第一时间可能会问,什么是分布式,什么是一致性,hash又是什么.在分析分布式一致性hash算法原理之前,我们先来了解一下这几 ...
- Logistic回归分类算法原理分析与代码实现
前言 本文将介绍机器学习分类算法中的Logistic回归分类算法并给出伪代码,Python代码实现. (说明:从本文开始,将接触到最优化算法相关的学习.旨在将这些最优化的算法用于训练出一个非线性的函数 ...
随机推荐
- 【鸿蒙生态学堂04】ArkUI开发基础(上)
课程介绍 本课程将介绍HarmonyOS的ArkUI框架,包括其基础语法和如何使用常用组件构建页面.ArkUI是HarmonyOS应用的UI开发框架,提供简洁的UI语法.丰富的组件和实时界面预览工具. ...
- 「Note」数论方向 - 数论基础
0. 前置知识 0.1. 费马小定理 \[a ^{p-1}\equiv1\pmod p(p\in\mathbb P,a\perp p) \] 由此可以推出模意义下乘法逆元: \[a ^{-1}\equ ...
- 玩转AI新声态 | 玩转TTS/ASR/YuanQI 打造自己的AI助手
前言 halo, 各位佬友这是我24年写的整理一下发出来, 可能有点老了, ai发展这么快...... 本次带来的是腾讯云玩转AI新声态语音产品应用实践,利用 TTS / ASR / 元器智能体 打造 ...
- 雷池 7.x 主从节点分钟级自动同步 + 手动切换实战教程
雷池7.x版本新增配置同步功能,可以设置主节点和从节点,可以自动每分钟将主节点的配置同步到从节点,在主节点异常情况下,使用者手动切换流量后,实现从节点马上承接业务流量. 准备环境 ● 检查主从节点机器 ...
- 【Zookeeper】ZooKeeper集群搭建与选举原理终极指南(Docker版 + 三角色详解)
ZooKeeper集群搭建与选举原理终极指南(Docker版 + 三角色详解) 一.环境准备(Docker版) 1. 服务器准备(3台节点) # 所有节点执行 sudo apt-get update ...
- Redis基于@Cacheable注解实现接口缓存
说明 @Cacheable 注解在方法上,表示该方法的返回结果是可以缓存的.也就是说,该方法的返回结果会放在缓存中,以便于以后使用相同的参数调用该方法时,会返回缓存中的值,而不会实际执行该方法. 属性 ...
- 【机器人】—— 1. ROS 概述与环境搭建
1. ROS 简介 1.1 ROS 诞生背景 机器人是一种高度复杂的系统性实现,机器人设计包含了机械加工.机械结构设计.硬件设计.嵌入式软件设计.上层软件设计....是各种硬件与软件集成,甚至可以说机 ...
- C# Winform 下 DataGridView 行(SelectedRows)转 模型 Model
/// <summary> /// DataRow 转 Model /// </summary> /// <typeparam name="T"> ...
- jq通过自定义属性获取标签对象
https://blog.csdn.net/qq_44927883/article/details/106360358$("td[data-field='fieldHtmlType']&qu ...
- 只需一行命令,Win11秒变Linux开发主机!
大家好,我是六哥,今天为大家分享,只需一行命令,就能拥有原生的Linux系统体验! 本文以真实操作为例,带你一步步解决常见问题,轻松搞定WSL+Docker环境. 一.只需一行命令,开启WSL 在Po ...