Apriori、FP-Tree 关联规则算法学习
2018-04-03 16:24
489 查看
Apriori算法
性质
频繁项集的所有非空子集必须是频繁项集。支持度
项集A、B同时发生的概率称为关联规则的支持度,也称相对支持度。置信度
项集A发生,则项集B发生的概率称为关联规则的置信度。算法过程
该算法根据最小支持度找出最大k项频繁集,再根据最小置信度,在频繁集中产生关联规则。找出最大k项频繁集
扫描所有事务,事务中的每一项都是候选1项集C1的成员,计算每一项的支持度;对候选1项集C1中各项集的支持度与预先设定的最小支持度阈值进行比较,保留大于或等于该阈值的项,得到1项频繁集L1;
扫描所有事务,L1与L1连接得到候选2项集C2,计算每一项的支持度。由于C2的每个子集(L1)都是频繁集,因此没有项集从C2中剔除;
将C2中各项集的支持度与预先设定的最小支持度阈值进行比较,保留大于或等于该阈值的项,得到2项频繁集L2;
扫描所有事务,L2与L1连接得到候选3项集C3,计算每一项的支持度。根据频繁集性质对C3进行剪枝,剔除C3的子集中含有不包含在频繁集L2中的项集;
将C3中各项集的支持度与预先设定的最小支持度阈值进行比较,保留大于或等于该阈值的项,得到3项频繁集L3;
重复上述连接和剪枝步骤,直到找到最大k项频繁集。
由频繁集产生关联规则
根据上述的置信度公式,对所得到的k项频繁集计算置信度;将k项频繁集中各项集的置信度与预先设定的最小置信度阈值进行比较,保留大于或等于该阈值的项,得到强关联规则。
FP Tree算法
建立项头表
首先根据上述Apriori算法找出1项频繁集L1,并将L1放入项头表中,按支持度降序排列。然后扫描数据,剔除原始数据中的非频繁1项集,按支持度降序排列。建立FP树
在建立FP树时,需要依次读入排序后的数据集。插入FP树时,排序靠前的节点为祖先节点,靠后的为子孙节点。若有共同的祖先,则在对应的共同祖先节点处计数加1。如果有新节点出现,则项头表对应的节点会通过节点链表链接到新节点上。直到所有的数据都插入到FP树中,完成FP树的建立。FP Tree的挖掘
在得到FP树、节点链表和项头表后,需要从项头表的底部项依次向上挖掘,找到项头表中每一项的条件模式基。条件模式基 以要挖掘的节点(假设为节点A)作为叶子节点所对应的FP子树,将该子树中的祖先节点的计数设置为叶子节点的计数,并删除计数低于支持度的节点。剩余的祖先节点则构成要节点A的条件模式基。条件模式基中任一祖先节点与节点A构成一个2项频繁集,再根据所得到的2项频繁集和条件模式基,得到3项频繁集,直到不能递归挖掘为止。
参考文献
Python数据分析与数据挖掘
https://www.cnblogs.com/zhengxingpeng/p/6679280.html(FP树图例介绍)
相关文章推荐
- 关联挖掘算法Apriori和FP-Tree学习
- 关联挖掘算法Apriori和FP-Tree学习
- 关联挖掘算法Apriori和FP-Tree学习
- 关联挖掘算法Apriori和FP-Tree学习
- 关联挖掘算法Apriori和FP-Tree学习
- 关联挖掘算法Apriori和FP-Tree学习
- 《机器学习实战》学习笔记-[15]-无监督学习-利用Apriori进行关联分析
- 学习 TTreeView [5] - TTreeNode.Level 属性
- linux shell 脚本攻略学习16--wc命令详解,tree命令详解
- 《Data Mining》学习——FP-growth算法
- python学习之 -- xml.etree.ElementTree解析xml
- 支配树(Dominator Tree)学习笔记
- 学习使用TreeView 控件的TreeNode 对象来获取选中了CheckBox的节点!
- 学习 TTreeView [1] - TTreeNodes、TTreeNode 与 Items、Items.Count、Items.Clear
- Gradient Boosting Decision Tree学习
- Spark下的FP-Growth和Apriori(频繁项集挖掘并行化算法)
- NOI级别的超强数据结构——Link-cut-tree(动态树)学习小记(update guadually...)
- weka实战005:基于HashSet实现的apriori关联规则算法
- ACM学习历程—HDU 5534 Partial Tree(动态规划)
- [Link-Cut-Tree]【学习笔记】