上一个章节主要是关联规则以及Apiori算法的一些基本概念。
以下通过Apriori图解实例对Apriori算法进行分析:
例:最小支持度阈值为2
1、找出频繁项集
交易号 | 项集合 |
T100 | I1,I2,I5 |
T200 | I2,I4 |
T300 | I2,I3 |
T400 | I1,I2,I4 |
T500 | I1,I3 |
T600 | I2,I3 |
T700 | I1,I3 |
T800 | I1,I2,I3,I5 |
T900 | I1,I2,I3 |
Lk-1用于产生候选Ck
扫描数据库D,对每个候选进行计数。并得到候选C1
项集 | 支持度计数 |
{I1} | 6 |
{I2} | 7 |
{I3} | 6 |
{I4} | 2 |
{I5} | 2 |
比较候选支持度计数与最小值尺度计数,找出频繁1项集的集合L1
项集 | 支持度计数 |
{I1} | 6 |
{I2} | 7 |
{I3} | 6 |
{I4} | 2 |
{I5} | 2 |
由L1产生候选C2
项集 |
{I1,I2} |
{I1,I3} |
{I1,I4} |
{I1,I5} |
{I2,I3} |
{I2,I4} |
{I2,I5} |
{I3,I4} |
{I3,I5} |
{I4,I5} |
项集 | 支持度计数 |
{I1,I2} | 4 |
{I1,I3} | 4 |
{I1,I4} | 1 |
{I1,I5} | 2 |
{I2,I3} | 4 |
{I2,I4} | 2 |
{I2,I5} | 2 |
{I3,I4} | 0 |
{I3,I5} | 1 |
{I4,I5} | 0 |
项集 | 支持度计数 |
{I1,I2} | 4 |
{I1,I3} | 4 |
{I1,I5} | 2 |
{I2,I3} | 4 |
{I2,I4} | 2 |
{I2,I5} | 2 |
再通过L2得到候选C3
项集 |
{I1,I2,I3} |
{I1,I2,I5} |
连接:C3=L2 JOIN L2=
{{I1,I2}, {I1,I3}, {I1,I5}, {I2,I3}, {I2,I4}, {I2,I5}} JOIN {{I1,I2}, {I1,I3}, {I1,I5}, {I2,I3}, {I2,I4}, {I2,I5}}
={{I1,I2,I3}, {I1,I2,I5}, {I1,I3,I5}, {I2,I3,I4},{I2,I3,I4}, {I2,I3,I5} ,{I2,I4,I5}}。
剪枝:{I1,I2,I3}的2-项子集是{I1,I2}, {I1,I3}和{I2,I3}。
{I1,I2,I3}的所有2-项子集都是L2的元素。因此,保留{I1,I2,I3}在C3中。
{I2,I3,I5}的2-项子集是{I2,I3}, {I2,I5}和{I3,I5}。
{I3,I5}不是L2的元素,因而不是频繁的。因此,由C3中删除{I2,I3,I5}。
剪枝后C3= {{I1,I2,I3}, {I1,I2,I5}}。