数据挖掘序列模式算法.ppt_第1页
数据挖掘序列模式算法.ppt_第2页
数据挖掘序列模式算法.ppt_第3页
数据挖掘序列模式算法.ppt_第4页
数据挖掘序列模式算法.ppt_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2020 4 12 1 数据挖掘序列模式算法 2020 4 12 2 主要内容 序列模式挖掘简介序列模式挖掘的应用背景序列模式挖掘算法概述GSP算法PrefixSpan算法Disc all算法支持约束的序列模式挖掘 2020 4 12 3 一 序列模式挖掘简介 序列模式的概念最早是由Agrawal和Srikant提出的 动机 大型连锁超市的交易数据有一系列的用户事务数据库 每一条记录包括用户的ID 事务发生的时间和事务涉及的项目 如果能在其中挖掘涉及事务间关联关系的模式 即用户几次购买行为间的联系 可以采取更有针对性的营销措施 2020 4 12 4 事务数据库实例 例 一个事务数据库 一个事务代表一笔交易 一个单项代表交易的商品 单项属性中的数字记录的是商品ID 2020 4 12 5 序列数据库 一般为了方便处理 需要把数据库转化为序列数据库 方法是把用户ID相同的记录合并 有时每个事务的发生时间可以忽略 仅保持事务间的偏序关系 2020 4 12 6 问题定义 项集 Itemset 是所有在序列数据库出现过的单项组成的集合例 对一个用户购买记录的序列数据库来说 项集包含用户购买的所有商品 一种商品就是一个单项 通常每个单项有一个唯一的ID 在数据库中记录的是单项的ID 2020 4 12 7 问题定义 元素 Element 可表示为 x1x2 xm xk 1 k m 为不同的单项 元素内的单项不考虑顺序关系 一般默认按照ID的字典序排列 在用户事务数据库里 一个事务就是一个元素 2020 4 12 8 问题定义 序列 Sequence 是不同元素 Element 的有序排列 序列s可以表示为s sj 1 j l 为序列s的元素一个序列包含的所有单项的个数称为序列的长度 长度为l的序列记为l 序列 2020 4 12 9 例 一条序列有3个元素 分别是 1020 30 406070 3个事务的发生时间是由前到后 这条序列是一个6 序列 2020 4 12 10 问题定义 设序列 序列 ai和bi都是元素 如果存在整数1 j1 j2 jn m 使得a1 bj1 a2 bj2 an bjn 则称序列 为序列 的子序列 又称序列 包含序列 记为 2020 4 12 11 问题定义 序列 在序列数据库S中的支持度为序列数据库S中包含序列 的序列个数 记为Support 给定支持度阈值 如果序列 在序列数据库中的支持数不低于 则称序列 为序列模式长度为l的序列模式记为l 模式 2020 4 12 12 例子 设序列数据库如下图所示 并设用户指定的最小支持度min support 2 序列是序列的子序列序列是长度为3的序列模式 2020 4 12 13 序列模式VS关联规则 2020 4 12 14 二 序列模式挖掘的应用背景 应用领域 客户购买行为模式预测Web访问模式预测疾病诊断自然灾害预测DNA序列分析 2020 4 12 15 应用案例1 客户购买行为模式分析 B2C电子商务网站可以根据客户购买纪录来分析客户购买行为模式 从而进行有针对性的营销策略 图书交易网站将用户购物纪录整合成用户购物序列集合 得到用户购物行为序列模式 相关商品推荐 如果用户购买了书籍 UML语言 则推荐 Visio2003实用技巧 2020 4 12 16 应用案例2 Web访问模式分析 大型网站的网站地图 sitemap 往往具有复杂的拓扑结构 用户访问序列模式的挖掘有助于改进网站地图的拓扑结构 比如用户经常访问网页web1然后访问web2 而在网站地图中二者距离较远 就有必要调整网站地图 缩短它们的距离 甚至直接增加一条链接 Index网站入口 web1 web2 2020 4 12 17 应用案例3 疾病诊断 医疗领域的专家系统可以作为疾病诊断的辅助决策手段 对应特定的疾病 众多该类病人的症状按时间顺序被记录 自动分析该纪录可以发现对应此类疾病普适的症状模式 每种疾病和对应的一系列症状模式被加入到知识库后 专家系统就可以依此来辅助人类专家进行疾病诊断 2020 4 12 18 应用案例3 疾病诊断 例 通过分析大量曾患A类疾病的病人发病纪录 发现以下症状发生的序列模式 如果病人具有以上症状 则有可能患A类疾病 2020 4 12 19 应用案例4 查询扩展 查询扩展是搜索领域一个重要的问题 用户提交的查询往往不能完全反映其信息需求 一些研究工作尝试用用户的查询序列模式来辅助原始查询 其主要思想是 1 挖掘用户的查询序列模式2 用这些序列模式构造查询词关系图3 找到每个极大全连通图作为一个 概念 4 对于一个查询 和它同处于一个 概念 的查询可以作为查询扩展的选项 2020 4 12 20 应用案例4 查询扩展 给定一组查询模式 查询关系图如上图 概念1 汽车品牌 概念2 汽车 2020 4 12 21 三 序列模式挖掘算法概述 Agrawal和Srikant在提出这个问题时提出了三个算法 AprioriAll AprioriSome和DynamicSome 它们都基于Apriori框架 构成了序列模式挖掘问题的基石 随后 这个领域的研究工作取得了大量的成果 2020 4 12 22 序列模式挖掘算法概述 类Apriori算法基于划分的模式生长算法基于序列比较的算法 2020 4 12 23 类Apriori算法 该类算法基于Apriori理论 即序列模式的任一子序列也是序列模式 算法首先自底向上的根据较短的序列模式生成较长的候选序列模式 然后计算候选序列模式的支持度 典型的代表有GSP算法 spade算法等 2020 4 12 24 基于划分的模式生长算法 该类算法基于分治的思想 迭代的将原始数据集进行划分 减少数据规模 同时在划分的过程中动态的挖掘序列模式 并将新发现的序列模式作为新的划分元 典型的代表有FreeSpan算法和prefixSpan算法 2020 4 12 25 基于序列比较的算法 该类算法首先定义序列的大小度量 接着从小到大的枚举原始序列数据库中包含的所有k 序列 理论上所有的k 序列模式都能被找到 算法制定特定的规则加快这种枚举过程 典型的代表为Disc all算法 2020 4 12 26 四 GSP算法 算法思想 类似于Apriori算法 采用冗余候选模式的剪除策略和特殊的数据结构 哈希树来实现候选模式的快速访存 2020 4 12 27 GSP算法描述 扫描序列数据库 得到长度为1的序列模式L1 作为初始的种子集根据长度为i的种子集Li 通过连接操作和修剪操作生成长度为i 1的候选序列模式Ci 1 然后扫描序列数据库 计算每个候选序列模式的支持度 产生长度为i 1的序列模式Li 1 并将Li 1作为新的种子集重复第二步 直到没有新的序列模式或新的候选序列模式产生为止 L1 C2 L2 C3 L3 C4 L4 2020 4 12 28 产生候选序列模式主要分两步 连接阶段 如果去掉序列模式s1的第一个项目与去掉序列模式s2的最后一个项目所得到的序列相同 则可以将s1与s2进行连接 即将s2的最后一个项目添加到s1中修切阶段 若某候选序列模式的某个子序列不是序列模式 则此候选序列模式不可能是序列模式 将它从候选序列模式中删除 L1 C2 L2 C3 L3 C4 L4 2020 4 12 29 候选序列模式的支持度计算 对于给定的候选序列模式集合C 扫描序列数据库 对于其中的每一条序列s 找出集合C中被s所包含的所有候选序列模式 并增加其支持度计数 L1 C2 L2 C3 L3 2020 4 12 30 哈希树 GSP采用哈希树存储候选序列模式 哈希树的节点分为三类 1 根节点 2 内部节点 3 叶子节点 2020 4 12 31 哈希树 根节点和内部节点中存放的是一个哈希表 每个哈希表项指向其它的节点 而叶子节点内存放的是一组候选序列模式 例 2020 4 12 32 添加候选序列模式 从根节点开始 用哈希函数对序列的第一个项目做映射来决定从哪个分支向下 依次在第n层对序列的第n个项目作映射来决定从哪个分支向下 直到到达一个叶子节点 将序列储存在此叶子节点 初始时所有节点都是叶子节点 当一个叶子节点所存放的序列数目达到一个阈值 它将转化为一个内部节点 2020 4 12 33 计算候选序列模式的支持度 给定一个序列s是序列数据库的一个记录 1 对于根节点 用哈希函数对序列s的每一个单项做映射来并从相应的表项向下迭代的进行操作2 2020 4 12 34 计算候选序列模式的支持度 2 对于内部节点 如果s是通过对单项x做哈希映射来到此节点的 则对s中每一个和x在一个元素中的单项以及在x所在元素之后第一个元素的第一个单项做哈希映射 然后从相应的表项向下迭代做操作2 或3 2020 4 12 35 计算候选序列模式的支持度 3 对一个叶子节点 检查每个候选序列模式c是不是s的子序列 如果是相应的候选序列模式支持度加一 这种计算候选序列的支持度的方法避免了大量无用的扫描 对于一条序列 仅检验那些最有可能成为它子序列的候选序列模式 扫描的时间复杂度由O n m 降为O n t 其中n表示序列数量 m表示候选序列模式的数量 t代表哈希树叶子节点的最大容量 2020 4 12 36 例 下图演示了如何从长度为3的序列模式产生长度为4的候选序列模式 2020 4 12 37 GSP算法存在的主要问题 如果序列数据库的规模比较大 则有可能会产生大量的候选序列模式需要对序列数据库进行循环扫描对于序列模式的长度比较长的情况 由于其对应的短的序列模式规模太大 本算法很难处理 2020 4 12 38 五 PrefixSpan算法 算法思想 采用分治的思想 不断产生序列数据库的多个更小的投影数据库 然后在各个投影数据库上进行序列模式挖掘 2020 4 12 39 相关定义 前缀 设每个元素中的所有项目按照字典序排列 给定序列 m n 如果ei ei i m 1 em em 并且 em em 中的项目均在em 中项目的后面 则称 是 的前缀例 序列是序列的一个前缀 序列则不是 2020 4 12 40 相关定义 投影 给定序列 和 如果 是 的子序列 则 关于 的投影 必须满足 是 的前缀 是 的满足上述条件的最大子序列例 对于序列 其子序列 的投影是 的投影是原序列 2020 4 12 41 相关定义 后缀 序列 关于子序列 的投影为 n m 则序列 关于子序列 的后缀为 其中em em em 例 对于序列 其子序列的投影是 则对于的后缀为 2020 4 12 42 例 a ab a abc 2020 4 12 43 相关定义 投影数据库 设 为序列数据库S中的一个序列模式 则 的投影数据库为S中所有以 为前缀的序列相对于 的后缀 记为S 投影数据库中的支持度 设 为序列数据库S中的一个序列 序列 以 为前缀 则 在 的投影数据库S 中的支持度为S 中满足条件 的序列 的个数 2020 4 12 44 算法描述 扫描序列数据库 生成所有长度为1的序列模式根据长度为1的序列模式 生成相应的投影数据库在相应的投影数据库上重复上述步骤 直到在相应的投影数据库上不能产生长度为1的序列模式为止分别对不同的投影数据库重复上述过程 直到没有新的长度为1的序列模式产生为止 S S1 Sm S11 S1n Sm1 Smp 2020 4 12 45 例 对于如下的序列数据库生成一系列的投影数据库 2020 4 12 46 扫描序列数据库S 产生长度为1的序列模式有 4 4 4 3 3 3序列模式的全集必然可以分为分别以 和为前缀的序列模式的集合 构造不同前缀所对应的投影数据库 结果如下页图所示 2020 4 12 47 2020 4 12 48 算法伪码 PrefixSpan算法输入 序列数据库S及最小支持度阈值min sup输出 所有的序列模式方法 去除所有非频繁的项目 然后调用子程序PrefixSpan 0 S 2020 4 12 49 算法伪码 子程序PrefixSpan L S 参数 一个序列模式L 序列模式 的长度S 如果 为空 则为S 否则为 的投影数据库扫描S 找到满足下述要求的长度为1的序列模式b b可以添加到 的最后一个元素中并为序列模式可以作为 的最后一个元素并为序列模式对每个生成的序列模式b 将b添加到 形成序列模式 并输出 对每个 构造 的投影数据库S 并调用子程序PrefixSpan L 1 S 2020 4 12 50 给定如下的序列数据库 2020 4 12 51 找出频繁单项 1 3 7 8 然后除去非频繁的单项 2020 4 12 52 为频繁1序列 频繁单项 生成投影数据库 2020 4 12 53 2020 4 12 54 在上面的投影数据库中 前缀的投影数据库中还有频繁单项 3 前缀的投影数据库中还有频繁单项7 生成频繁2序列 然后为其生成投影数据库 其中没有频繁项目 算法终止 2020 4 12 55 PrefixSpan算法分析 PrefixSpan算法不需要产生候选序列模式 从而大大缩减了检索空间相对于原始的序列数据库而言 投影数据库的规模不断减小PrefixSpan算法的主要开销在于投影数据库的构造 2020 4 12 56 PrefixSpan算法的主要改进 隔层投影 使用隔层投影代替逐层投影 从而可以有效减小投影数据库的个数伪投影 当序列数据库可以直接放入内存时 可以使用伪投影操作代替实际的投影数据库 从而可以有效减少构造投影数据库的开销 2020 4 12 57 隔层投影 扫描序列数据库 产生所有长度为1的序列模式再次扫描序列数据库 构造如下图所示的下三角矩阵 得到所有长度为2的序列模式构造长度为2的序列模式所对应的扫描数据库 然后对每个投影数据库 重复上面的操作 直到没有新的序列模式产生为止 2020 4 12 58 2020 4 12 59 伪投影 当数据库可以直接放入内存时 并不需要构造所有的序列模式对应的投影数据库 我们可以使用指向数据库中序列的指针及其偏移量作为伪投影例子 假设上述序列数据库可以放入内存 在构造a投影数据库时 序列S1 所对应的伪投影为 一个指向S1的指针 指针偏移设定为2 同样的 序列S1的投影数据库对应的伪投影为 一个指向S1的指针 指针偏移设定为4 2020 4 12 60 六 Disc all算法 算法思想 Disc all算法采用了Disc Directsequencecomparing 策略 其核心思想是对于给定的k和所有k 1序列模式 通过枚举所有合适的k序列发现k 序列模式 通过引入适当的枚举策略保证算法效率 2020 4 12 61 相关定义 给定两条l 序列 和 如果 那么下列条件必满足其一 1 的第m项 的第m项且 与 在其第m项之前的部分完全相同2 的第m项 的第m项但 的第m项和第m 1项不在同一元素中而 的第m项则相反 并且 与 在其第m项之前的部分完全相同 2020 4 12 62 例 小于因为条件1 小于因为条件2 定义序列的大小关系只是为了给序列排序 这种大小度量是相对的 没有真正的物理意义 2020 4 12 63 相关定义 一条l 序列序列所有长度为k的子序列 1kl 中最小的一条叫做这条序列的k 最小序列 给定k 序列c为条件序列 一条l 序列序列所有大于c的长度为k的子序列 1kl 中最小的一条叫做这条序列的k 条件最小序列 2020 4 12 64 Disc all算法概述 该算法首先划分数据库 然后在划分数据库上执行迭代的执行Disc策略 即基于序列比较的序列模式枚举过程 首先通过适当的枚举找到所有的k 序列模式 然后根据k 序列模式找到所有的k 1序列模式 2020 4 12 65 数据库划分 Disc all算法对原始序列数据库进行两层划分 一层划分 首先找到所有的频繁单项并删除所有的非频繁单项 然后进行一级划分 即对于每个频繁单项i 找到所有包含它的序列组成i划分 二层划分 找到所有的2 序列模式并删除所有的非频繁2 序列 然后进行二级划分 即对于每个2 序列模式 找到所有包含它的序列 2020 4 12 66 例 对如下数据库进行两层划分 给定最小支持度2 首先找到所有的频繁单项 a b c d e f 2020 4 12 67 生成一层划分数据库 下面给出了每个频繁单项的一层划分数据库 2020 4 12 68 在a 划分数据库里找到所有第一项为a的2 序列模式 并删除非频繁的以a开头的2 序列 删除规则为 1 如果单项i和a在同一元素内且是2 序列模式 2 如果单项i和a不在同一元素内且是2 序列模式 当条件1 2 全都不满足时删除i 2020 4 12 69 生成二层划分数据库 下面只给出根据a 划分找到的2 序列模式及其二层划分数据库 注意所有的非频繁2 序列已经被删除 2020 4 12 70 Disc策略 对于每一个划分数据库 给定一组k 序列模式集合S Disc策略通过枚举找到所有的k 1 序列模式 枚举过程如下 1 对于每个序列s 找到s的最小的k 1 子序列s 且s 的k前缀S 将s 加入k 1序列集 记录s 的源序列s 2020 4 12 71 Disc策略 2 对k 1序列集排序 设最小支持度为 排序后第 个序列称为条件序列 3 如果第一个序列和条件序列相等 则输出条件序列为一个k 1 序列模式 并且将所有k 1序列替换为它们源序列的条件最小k 1 序列 否则尽可能将所有k 1序列替换为条件序列 对于源序列中不含条件序列的k 1序列则替换为条件最小k 1 序列 2020 4 12 72 Disc策略 4 重复上述步骤直到k 1序列集包含的序列数目小于 Disc策略迭代的根据k 序列模式集找到k 1 序列模式集 然后递增k 直到没有k 1 序列模式集为空 算法终止 Disc all算法从从k 2时开始采用Disc策略 2020 4 12 73 Disc策略 由于Disc all算法是在划分数据库上采用Disc策略 对于一个的划分 Disc策略只寻找所有以为前缀的序列模式 回忆之前讨论的prefixSpan算法 可以发现在这一点上二者非常相似 都是基于前缀生长的思想 不同的是prefixSpan采用递归而Disc all算法采用迭代 2020 4 12 74 考虑前面的序列数据库 对于右侧的一个基于二层划分 仍然给定最小支持度为2 下面的例子展示了Disc策略是如何找到以3 序列模式的 2020 4 12 75 初始化3 序列集 可以看出是一条3序列模式 Sid为30的序列没有产生初始3 序列因为其不包含以为前缀的3 子序列 为条件序列 将所有3 序列替换为源序列的条件3 最小序列并重新排序 又发现一条3 序列模式 2020 4 12 76 用新的条件最小3 序列替换各3 序列并排序 3 序列数据集如右侧所示 这一次没有新的3 序列模式被发现 用新的条件序列替换各3 序列并排序 3 序列数据集如右侧所示 发现新的3 序列模式 注意Sid为10的序列不含 所以用条件最小3 序列替换 2020 4 12 77 重复上面的步骤 可以发现新的3 序列模式 这时只有Sid为10的序列含有比更大的3 序列 所以算法停止 2020 4 12 78 Disc all算法分析 Disc all算法同样不生成候选序列模式 减少了计算开销 同时采用划分技术 减少了搜索空间 应用Disc策略 解决了划分效率随划分层次增加而下降的问题 Disc all采用的划分技术不如prefixSpan高效 而且Disc策略较为复杂耗时 算法效率往往不及prefixSpan 但在处理长序列数据集时 因为Disc策略没有迭代开销同时投影技术效率有所下降 Disc all表现反而更好 2020 4 12 79 Disc all和prefixSpan的性能比较 平均序列长度为20时 Disc all和prefixSpan的性能比较 2020 4 12 80 Disc all和prefixSpan的性能比较 平均序列长度为80时 Disc all和prefixSpan的性能比较 2020 4 12 81 用户需要的往往是满足特定条件的序列模式 而传统的序列模式挖掘没有考虑用户的特殊要求 做了大量无效的挖掘 比如对于购买记录的事务数据库 用户希望得到的序列模式事务之间的时间差不能太大 七 支持约束的序列模式挖掘 2020 4 12 82 解决办法 引入约束的概念 在约束条件下做符合用户要求的序列模式挖掘 一方面利用特定约束本身的性质节省了挖掘的时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论