5、序列模式挖掘:带约束与闭序列模式的深入探讨

序列模式挖掘:带约束与闭序列模式的深入探讨

1. 带约束的序列模式挖掘

在序列模式挖掘中,前缀增长(Prefix-growth)方法在处理约束时展现出独特的优势。尽管前缀单调属性比Apriori属性弱,但由于Prefix-growth采用了不同的挖掘方法,它在性能上仍优于基于Apriori的方法。

1.1 处理棘手的聚合约束

对于平均(avg)和求和(sum)这类棘手的聚合约束,它们既不是反单调的,也不是单调的,甚至不具有前缀单调性。例如,在序列数据库SDB中挖掘满足约束 $C \equiv avg(\alpha) \leq 25$ 的序列模式时,不能直接将该约束应用于PrefixSpan挖掘过程。像 $\alpha = 50$ ,虽然 $avg(\alpha) \nleq 25$ ,但添加更多元素后可能得到 $\alpha’ = 50 10 20 10$ ,使得 $avg(\alpha’) \leq 25$ 。

为了将约束 “$avg(\alpha) \leq v$” 深入应用到Prefix-growth挖掘过程中,可以采取以下步骤:
1. 确定处理顺序 :使用项值升序来确定要处理的投影数据库的顺序。将值小于等于 $v$ 的项称为小项,否则称为大项。
2. 扫描数据库并移除无前景的大项 :在第一次扫描(投影)数据库时,根据以下规则移除序列中无前景的大项:
- 引理2.16(修剪无前景的序列) :对于序列 $\alpha$ ,设小项的实例数为 $n$ ,它们的和为 $s$ 。对于 $\alpha$ 中的任何大项 $

源码地址: https://pan.quark.cn/s/d1f41682e390 miyoubiAuto 米游社每日米游币自动化Python脚本(务必使用Python3) 8更新:更换cookie的获取地址 注意:禁止在B站、贴吧、或各大论坛大肆传播! 作者已退游,项目不维护了。 如果有能力的可以pr修复。 小引一波 推荐关注几个非常可爱有趣的女孩! 欢迎B站搜索: @嘉然今天吃什么 @向晚大魔王 @乃琳Queen @贝拉kira 第三方库 食用方法 下载源码 在Global.py中设置米游社Cookie 运行myb.py 本地第一次运行时会自动生产一个文件储存cookie,请勿删除 当前仅支持单个账号! 获取Cookie方法 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 按刷新页面,按下图复制 Cookie: How to get mys cookie 当触发时,可尝试按关,然后再次刷新页面,最后复制 Cookie。 也可以使用另一种方法: 复制代码 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 控制台粘贴代码并运行,获得类似的输出信息 部分即为所需复制的 Cookie,点击确定复制 部署方法--腾讯云函数版(推荐! ) 下载项目源码和压缩包 进入项目文件夹打开命令行执行以下命令 xxxxxxx为通过上面方式或取得米游社cookie 一定要用双引号包裹!! 例如: png 复制返回内容(包括括号) 例如: QQ截图20210505031552.png 登录腾讯云函数官网 选择函数服务-新建-自定义创建 函数名称随意-地区随意-运行环境Python3....
### 序列模式挖掘的概念实现 #### 一、序列模式挖掘的核心概念 序列模式挖掘是一种用于发现时间或事件顺序关系中的频繁模式的技术。它广泛应用于市场篮子分析、客户行为预测以及生物信息学等领域。经典的序列模式挖掘算法可以分为多个类别,包括但不限于基于 Apriori 特性的算法、基于垂直格子的算法、增量式序列模式挖掘、多维序列模式挖掘和基于约束序列模式挖掘[^1]。 - **基于 Apriori 的算法**:这类算法利用先验性质来减少候选项集的数量,从而提升计算效率。典型的例子包括 Apriori 算法及其变种(如 AprioriSome 和 AprioriAll)。这些算法通常会经历两个主要阶段——候选生成和计数验证。 - **基于垂直格子的算法**:SPADE 是一种代表性的基于垂直表示的方法,它可以有效地处理大规模数据集并降低内存消耗。 - **增量式序列模式挖掘**:这种技术适用于动态环境下的数据分析场景,在新数据到来时能够快速更新已有的模型而无需重新扫描整个数据库。ISM、ISE 和 IUS 都属于此类别[^1]。 - **多维序列模式挖掘**:该领域关注的是将多种属性维度整合到单一序列结构之中以提取更有意义的结果。常见方法有 Uni-Seq、Seq-Dim 及 Dim-Seq[^1]。 - **基于约束序列模式挖掘**:为了应对传统方法可能产生的大量无关紧要项集问题,引入了特定业务逻辑作为过滤条件来进行优化筛选过程[^1]。 #### 二、具体实现案例 - GSP (Generalized Sequential Patterns) 算法 GSP 是一个通用化的序贯型样态探勘程序框架,其操作流程大致可分为以下几个部分: 1. 初始设置:读取输入事务列表,并初始化参数阈值 min_sup 表示最小支持度; 2. 构建初始项目集合 C_1 :从原始记录里统计各个独立项目的出现频率形成第一个候选层 L_1 ,只保留那些达到设定标准以上的成员进入下一步迭代运算; 3. 进入循环直至无法再找到新的符合条件组合为止: * 对当前级别 k 下的所有合法实例执行自联结操作产生更高一层次可能性空间即 C_{k+1} ; * 执行剪枝策略去除不可能成为最终解的部分节点; * 计算剩余侯选对象的支持数目并预定义界限比较决定是否加入下一回合考量范围之内; 例如,在某一轮连接步骤期间,如果存在两条路径分别为 `<A,B>` 和 `<B,C,D>` ,那么它们可以通过拼接得到一个新的长度更长的可能性形式`<(A,B),(C,D)>`.然而并非所有的尝试都会成功延续下去,比如对于另一条链路 `<E,F,G>`,由于缺乏合适的匹配点位所以不会参后续扩展活动. 另外值得注意的一点是在修剪环节当中也会运用类似的原理剔除掉不符合全局最优原则的情况。举个简单的例子来说就是假设我们已经知道某个三元组 `<X,Y,Z>` 并不属于高频范畴的话,则任何包含它的四元及以上规模构造都应该直接舍弃而不必浪费资源再去深入考察一遍^[^2]^. 以下是 Python 中的一个简化版伪代码展示如何手动模拟这一机制: ```python def gsp(transactions, min_support): # 初始化变量 frequent_sequences = [] # 获取单个项目的支持度 candidates = generate_candidates([], transactions) while True: candidate_counts = count_occurrences(candidates, transactions) # 筛选出满足最低支持度的序列 new_frequent_sequences = filter_by_min_support(candidate_counts, min_support) if not new_frequent_sequences: break frequent_sequences.extend(new_frequent_sequences) # 创建下一轮的候选者 candidates = join_and_prune(frequent_sequences[-1], transactions) return frequent_sequences # 辅助函数省略... ``` 此版本仅提供了一个高层次视角来看待整体运作方式并未涉及太多细节层面的内容调整实际应用过程中还需要考虑更多边界情况以及其他性能改进措施等问题。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值