时间序列频繁模式挖掘:A->(EFG)->C 模式的思考
2015-12-18 11:14
495 查看
首先了解一下 A->(EFG)->C 是个什么形式:
这里面被括号包覆的部分表示EFG是无序存在的,比如EFG,EGF,GEF,GFE他们都可以统一写成(EFG)的形式,假设这四个项集都只在A~C的时间段内出现了一次,但是一旦把他们看成(EFG)的形式,那么他们就相当于出现了四次,如果min_sup<=4的话那(EFG)就可以被认为是频繁的。
这种挖掘模式的意义:
导师没有跟我说明这种挖掘模式的意义何在,我大概想了一下可能是这种情况:两位老师A、C发言之间有EFG三位学生在短时间内在多个时间点进行过频繁交流,但是他们说话的次序是乱序的。通过本模式就可以找出这三位同学很可能是技术伙伴或者是合伙人等等,但是依靠传统的模式他们的交流很可能就不是频繁的,也就找不出他们的关系了。
当然这种形式也未必非得是在某两个事件A,C之间进行的,这并不重要,如何挖掘(EFG)模式才是关键。
解决思路:
1. 将A->( )->C中 ( )里地部分全部挖掘出来(要标记A,C发生的时间点,在后面会减少时间复杂度)
时间复杂度O(n)
2. 将挖出来的含有非freq1元素的项集pop掉
比如 A->KEF->C 中,如果K元素并不是freq1项集的成员,那么 A->KEF->C 这个项集就剪掉不要了
3. 提取中间项:
把“A-”>和“->C”去掉
4. 假如现在提取出来了三个字符串:MEFG、EMFG、HEGF
下面要做的跟Apriori做的就一样了,先去freq1项集,再找freq2.....,这里注意一下,找的项集是无序的
比如:‘’EF’‘都出现在了这三个成员之中,只要是出现了,就记它的频度+1,最后跟min_sup比较一下就行了
最终我提取出乱序freq-3项集有(min_sup=2):(EFG),(EFM),(FGM),(EGM)
还可以提出一个freq-4项集:(EFGM)
字母在括号内的顺序是可以打乱的,这个无所谓。
关于时间复杂度:
我大致估计了一下,不会超过常数倍O(n^2),与之前的GSP算法结合一下时间复杂度依旧常数倍O(n^2)的时间复杂度,可以接
受。
代码实现:(完善中,敬请期待...)
这里面被括号包覆的部分表示EFG是无序存在的,比如EFG,EGF,GEF,GFE他们都可以统一写成(EFG)的形式,假设这四个项集都只在A~C的时间段内出现了一次,但是一旦把他们看成(EFG)的形式,那么他们就相当于出现了四次,如果min_sup<=4的话那(EFG)就可以被认为是频繁的。
这种挖掘模式的意义:
导师没有跟我说明这种挖掘模式的意义何在,我大概想了一下可能是这种情况:两位老师A、C发言之间有EFG三位学生在短时间内在多个时间点进行过频繁交流,但是他们说话的次序是乱序的。通过本模式就可以找出这三位同学很可能是技术伙伴或者是合伙人等等,但是依靠传统的模式他们的交流很可能就不是频繁的,也就找不出他们的关系了。
当然这种形式也未必非得是在某两个事件A,C之间进行的,这并不重要,如何挖掘(EFG)模式才是关键。
解决思路:
1. 将A->( )->C中 ( )里地部分全部挖掘出来(要标记A,C发生的时间点,在后面会减少时间复杂度)
时间复杂度O(n)
2. 将挖出来的含有非freq1元素的项集pop掉
比如 A->KEF->C 中,如果K元素并不是freq1项集的成员,那么 A->KEF->C 这个项集就剪掉不要了
3. 提取中间项:
把“A-”>和“->C”去掉
4. 假如现在提取出来了三个字符串:MEFG、EMFG、HEGF
下面要做的跟Apriori做的就一样了,先去freq1项集,再找freq2.....,这里注意一下,找的项集是无序的
比如:‘’EF’‘都出现在了这三个成员之中,只要是出现了,就记它的频度+1,最后跟min_sup比较一下就行了
最终我提取出乱序freq-3项集有(min_sup=2):(EFG),(EFM),(FGM),(EGM)
还可以提出一个freq-4项集:(EFGM)
字母在括号内的顺序是可以打乱的,这个无所谓。
关于时间复杂度:
我大致估计了一下,不会超过常数倍O(n^2),与之前的GSP算法结合一下时间复杂度依旧常数倍O(n^2)的时间复杂度,可以接
受。
代码实现:(完善中,敬请期待...)
相关文章推荐
- 数据挖掘---频繁项集挖掘Apriori算法的C++实现
- 基于节点列表的项集表示框架的频繁模式(项集)挖掘研究进展
- 频繁模式挖掘的模式评估方法
- 频繁模式和关联规则原理与简述
- (源码)关于A->B*->D的时间序列频繁模式挖掘的思考 1.26更新
- 关联规则挖掘-频繁模式挖掘
- Spark MLlib中FPGrowth和FPTree详解之一
- 关联规则挖掘
- STL 反向迭代器(rbegin,rend)
- mysql 执行状态分析 show processlist / explain
- iOS蓝牙开发把16进制字符串转换成NSData的方法
- 理解矩阵
- Win10 TH2系统如何让非活动的窗口换上不同颜色?
- 黑马程序员 - OC语言 - NSDictionary的介绍及使用
- matlab里面向信号里加入白噪声
- 读博文学Android
- Android图文详解属性动画
- 复杂数据的GSON使用
- android使用属性动画执行抖动效果
- Game of Life LEETCODE中档算法题JAVA实现