名词解释
- 频繁项集
- 支持度
- 置信度
算法步骤
一、数据整理
1.题目给出原始数据项
有 9 条数据项,令最小支持度为
交易号 | 购买商品项 |
---|---|
T1 | a, b, e |
T2 | b, d |
T3 | b, c |
T4 | a, b, d |
T5 | a, c |
T6 | b, c |
T7 | a, c |
T8 | a, b, c, e |
T9 | a, b, c |
2.建立项头表
这一步包括两个子步骤:
(1) 将全部项里的每个元素按出现频率降序排序
(2) 根据置信度,删去低于最小支持度 的元素
元素 | 频次降序 |
---|---|
b | 7 |
a | 6 |
c | 6 |
d | 2 |
e | 2 |
3.按照第2步所得的元素次序,重新排列数据集
交易号 | 购买商品项 | 重排清单 |
---|---|---|
T1 | a, b, e | b, a, e |
T2 | b, d | b, d |
T3 | b, c | b, c |
T4 | a, b, d | b,a d |
T5 | a, c | a, c |
T6 | b, c | b, c |
T7 | a, c | a, c |
T8 | a, b, c, e | b, a, c, e |
T9 | a, b, c | b, a, c |
注意:重排清单中应当剔除不满足最小置信度的元素
二、构建 FP 树
1.绘制 FP 树
绘制原则:
当前路径和已有路径 有相同的前缀时,路径可以复用。
当前路径和已有路径 有不同的结点时,应该重新画一个 feq =1 的结点,
- 数字表示从根节点到该元素的这条路径出现的次数,
- 结点 a -> 结点 b 的连线代表数据集的一条数据项中存在<a,b>的组合
2.联结同号结点
- 蓝色线条表示不同结点在同一条数据项中共同出现,接下来的构建条件模式基会用到。
- 橘色线条表示连接同号结点。
构建过程我做了一个PPT:
链接:pan.baidu.com/s/1RsE7j0-n… 提取码:aeor
三、找出频繁项集
将 Head Table 中的 item 倒序放在下面的表中,并且删去频次最大的 b
项。
为什么要删去频次最大的项呢?因为它的前缀就是根节点{},不存在前缀路径。
1.构建条件模式基
条件模式基
就是头部链表中某一节点的前缀路径组合。
由若干个键值对组成,
key
表示「到达本结点的路径
」value
表示该路径重复了多少次,即根节点上的数值。
以 e 举例:
上图中有两个 e 。
项 | 条件模式基 | |
---|---|---|
e | {ba:1,bac:1} | |
d | {b:1,ba:1} | |
c | {b:2,a:2,ba:2} | |
a | {b:4} |
2.构建条件 FP 树
条件模式基可看做每个结点专属的子数据集,构建步骤如下:
1.只保留 FP 树中当前叶节点及其直系祖先,
2.删除所有叶节点及指向这些叶节点的箭头,
3.删除频次低于最小支持度的结点,
4.记录每条路径,用<>表示,并且路径上每个节点都要记录下数值。
项 | 条件模式基 | 条件 FP 树 | |
---|---|---|---|
e | {ba:1,bac:1} | {b:2,a:2} | |
d | {b:1,ba:1} | {b:2} | |
c | {b:2,a:2,ba:2} | {b:4,a:2},{a:2} | |
a | {b:4} | {b:4} |
3.构建频繁项集
频繁项集是当前 叶结点 及其 所有条件 FP 树 的排列组合。对应的频次是该条件 FP 树上 结点的频次。
项 | 条件模式基 | 条件 FP 树 | 频繁项集 |
---|---|---|---|
e | {ba:1,bac:1} | {b:2,a:2} | {be:2,ae:2,bae:2} |
d | {b:1,ba:1} | {b:2} | {bd:2} |
c | {b:2,a:2,ba:2} | {b:4,a:2},{a:2} | {ac:4,bc:4,bac:2} |
a | {b:4} | {b:4} | {ba:4} |
c
项的从条件 FP 树构建频繁项集有 2 个细节:
c 的条件 FP 项:
- {b:4,a:2}
- {a:2}
和 叶节点c
组合为:
- {bc:4}、{ac:2}、{bac:2}
- {ac:2}
细节1: ba 作为一个整体和 c 组合为 bac 时,频次要看最小的a:2
细节2:要合并两个同类项ac:2
因此结果为:
{ac:4,bc:4,bac:2}