您的位置:首页 > 其它

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树图例介绍)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: