打字猴:1.70049885e+09
1700498850
1700498851 从上述算法中可以看出,该算法存在一些困难点,譬如需要频繁扫描交易数据集,这样如果面临海量数据集,就难以满足实际应用需求;对于大型数据集,计算候选集算法的效率较低,这也是一个难以克服的问题。目前已经有一些优化的方法用于处理这些问题,譬如FP-growth算法[2]。在实际应用中,随着数据的不断增长,可能还需要通过分布式计算来提高算法性能,譬如机器学习算法包Mahout[3]中实现了的并行版本FP-growth算法。
1700498852
1700498853 2.Apriori算法实例
1700498854
1700498855 假设给定如下电子商务网站的用户交易数据集,其中,定义最小支持度为2/9,即支持度计数为2,最小置信度为70%,现在要计算该数据集的关联规则,如表3-1所示。
1700498856
1700498857
1700498858
1700498859
1700498860 计算步骤如下所示。
1700498861
1700498862 步骤1,根据Apriori算法计算频繁项集。
1700498863
1700498864 1)计算频繁1项集。扫描交易数据集,统计每种商品出现的次数,选取大于或等于最小支持度的商品,得到了候选项集,如表3-2所示。
1700498865
1700498866
1700498867
1700498868
1700498869 2)根据频繁1项集,计算频繁2项集。首先将频繁1项集和频繁1项集进行连接运算,得到2项集,如下所示:
1700498870
1700498871
1700498872
1700498873
1700498874 扫描用户交易数据集,计算包含每个候选2项集的记录数,如表3-3所示。
1700498875
1700498876
1700498877
1700498878
1700498879 根据最小支持度,得到频繁2项集,如表3-4所示。
1700498880
1700498881
1700498882
1700498883
1700498884 3)根据频繁2项集,计算频繁3项集。首先将频繁2项集进行连接,得到{{I1,I2,I3},{I1,I2,I5},{I1,I3,I5},{I2,I3,I4},{I2,I3,I5},{I2,I4,I5}},然后根据频繁项集定理进行剪枝,即频繁项集的非空子集必须是频繁的,{I1,I2,I3}的2项子集为{I1,I2},{I1,I3},{I2,I3},都在频繁2项集中,则保留;
1700498885
1700498886 {I1,I2,I5}的2项子集为{I1,I2},{I1,I5},{I2,I5},都在频繁2项集中,则保留;
1700498887
1700498888 {I1,I3,I5}的2项子集为{I1,I3},{I1,I5},{I3,I5},由于{I3,I5}不是频繁2项集,移除该候选集;
1700498889
1700498890 {I2,I3,I4}的2项子集为{I2,I3},{I2,I4},{I3,I4},由于{I3,I4}不是频繁2项集,移除该候选集;
1700498891
1700498892 {I2,I3,I5}的2项子集为{I2,I3},{I2,I5},{I3,I5},由于{I3,I5}不是频繁2项集,移除该候选集;
1700498893
1700498894 {I2,I4,I5}的2项子集为{I2,I4},{I2,I5},{I4,I5},由于{I4,I5}不是频繁2项集,移除该候选集。通过剪枝,得到候选集{{I1,I2,I3},{I1,I2,I5}},扫描交易数据库,计算包含候选3项集的记录数,得到表3-5。
1700498895
1700498896
1700498897
1700498898
1700498899 4)根据频繁3项集,计算频繁4项集。重复上述的思路,得到{I1,I2,I3,I5},根据频繁项集定理,它的子集{I2,I3,I5}为非频繁项集,所以移除该候选集。从而,频繁4项集为空,至此,计算频繁项集的步骤结束。
[ 上一页 ]  [ :1.70049885e+09 ]  [ 下一页 ]