数据挖掘中的广义序列模式(GSP)挖掘
GSP是数据挖掘中非常重要的算法。它用于从大型数据库中进行序列挖掘。几乎所有的序列挖掘算法基本上都是基于先验算法。 GSP 使用逐级范式来查找数据中的所有序列模式。它首先找到大小为 1 的频繁项,然后将其作为输入传递给 GSP 算法的下一次迭代。数据库多次传递给该算法。在每次迭代中,GSP 删除所有不频繁项集。这是基于称为支持的阈值频率完成的。只有那些频率大于支持计数的项目集才会被保留。在第一遍之后,GSP 找到所有长度为 1 的频繁序列,称为 1-sequences。这使得输入到下一次通过,它是 2-sequences 的候选者。在这一遍结束时,GSP 生成所有频繁的 2 序列,这为候选 3 序列提供输入。递归调用该算法,直到找不到更多的频繁项集。
顺序模式(GSP)挖掘基础:
- 序列:序列被正式定义为项目 {s1, s2, s3, ..., sn} 的有序集合。顾名思义,它是一起发生的项目序列。它可以被视为一个交易或一起购买的物品在一个篮子里。
- 子序列:序列的子集称为子序列。假设 {a, b, g, q, y, e, c} 是一个序列。它的子序列可以是 {a, b, c} 或 {y, e}。注意子序列不一定是序列的连续项。从数据库的序列中,找到子序列,最后从中找到广义序列模式。
- 序列模式:当一个子序列出现在多个序列中时,称为模式。 GSP 算法的目标是从大型数据库中挖掘序列模式。数据库由序列组成。当子序列的频率大于“支持”值时。例如:模式 是从序列 {b, x, c, a}、{a, b, q} 和 {a, u, b} 中挖掘出来的序列模式。
顺序模式挖掘的方法:
- 基于 Apriori 的方法
- 普惠制
- 铲
- 基于模式增长的方法
- 自由跨度
- 前缀跨度
序列数据库:由有序元素或事件组成的数据库称为序列数据库。序列数据库示例:S.No. SID sequences 1. 100 or 2. 200 <(ad)c(bcd)(abe)> 3. 300 <(ef)(ab)(def)cb> 4. 400
交易:该序列由许多称为交易的元素组成。
is a sequence whereas (a), (ab), (ac),
(d) and (cef) are the elements of the sequence.
These elements are sometimes referred as transactions.
An element may contain a set of items. Items within an element are unordered and we list them alphabetically.
For example, (cef) is the element and it consists of 3 items c, e and f.
Since, all three items belong to same element, their order does not matter. But we prefer to put them in alphabetical order for convenience.
The order of the elements of the sequence matters unlike order of items in same transaction.
k长度序列:
序列中涉及的项目数用 K 表示。由 2 个项目组成的序列称为 2-len 序列。在寻找 2-length 候选序列时,该术语开始使用。 2 长度序列的示例是:{ab}、{(ab)}、{bc} 和 {(bc)}。
- {bc} 表示一个长度为 2 的序列,其中 b 和 c 是两个不同的事务。这也可以写成 {(b)(c)}
- {(bc)} 表示一个长度为 2 的序列,其中 b 和 c 是属于同一事务的项目,因此用相同的括号括起来。这也可以写成 {(cb)},因为同一个事务中的项目顺序无关紧要。
支持 k 长度序列:
支持意味着频率。给定 k 长度序列在序列数据库中出现的次数称为支持度。在寻找支持的同时,订单得到了照顾。
Illustration:
Suppose we have 2 sequences in the database.
s2:
We need to find the support of {ab} and {(bc)}
Finding support of {ab}:
This is present in first sequence.
Since, a and b belong to different elements, their order matters.
In second sequence {ab} is not found but {ba} is present.
s2: Thus we don’t consider this.
Hence, support of {ab} is 1.
Finding support of {bc}:
Since, b and c are present in same element, their order does not matter.
s2: , it seeems correct, but is not. b and c are present in different elements here. So, we don’t consider it.
Hence, support of {(bc)} is 1.
如何加入L1和L1给C2?
L1 是剪枝后的最后一个长度为 1 的序列。修剪后留在集合中的所有条目都支持大于阈值。
Case 1: Join {ab} and {ac}
s1: {ab}, s2: {ac}
After removing a from s1 and c from s2.
s1’={b}, s2’={a}
s1′ and s2′ are not same, so s1 and s2 can’t be joined.
Case 2: Join {ab} and {be}
s1: {ab}, s2: {be}
After removing a from s1 and e from s2.
s1’={b}, s2’={b}
s1′ and s2′ are exactly same, so s1 and s2 be joined.
s1 + s2 = {abe}
Case 3: Join {(ab)} and {be}
s1: {(ab)}, s2: {be}
After removing a from s1 and e from s2.
s1’={(b)}, s2’={(b)}
s1′ and s2′ are exactly same, so s1 and s2 be joined.
s1 + s2 = {(ab)e}
s1 and s2 are joined in such a way that items belong to correct elements or transactions.
修剪阶段:在构建 Ck(k 长度的候选集)时,我们删除具有连续 (k-1) 子序列的候选序列,其支持计数小于最小支持(阈值)。此外,删除具有任何子序列且没有最小支持的候选序列。
{abg} 是 C3 的候选序列。
{abg} is a candidate sequence of C3.
To check if {abg} is proper candidate or not, without checking its support, we check the support of its subsets.
Because subsets of 3-length sequence will be 1 and 2 length sequences. We build the candidate sets incremently like 1-length, 2-length and so on.
Subsets of {abg} are: {ab], {bg} and {ag}
Check support of all three subsets. If any of them have support less than minimum support then delete the sequence {abg} from the set C3 otherwise keep it.
广义序列模式数据挖掘的挑战
数据库以递归方式多次传递给算法。计算工作更多的是挖掘频繁模式。当序列数据库非常大并且要挖掘的模式很长时,GSP 会遇到问题。