本发明涉及一种基于纵横编码快速频繁项集生成的商品关联挖掘方法,属于数据挖掘。
背景技术:
1、通过在商品购物清单中挖掘用户购买商品组合中潜在的商品组合关系,可以为企业提供销售策略,产品关联组合,可以为企业提升销量的同时,也可以为消费者提供更适合的商品推荐。其中关联规则领域中的频繁项集挖掘是处理这类问题比较好的一种方法。传统的apriori频繁项集挖掘算法需要生成大量候选项集,占用大量内存空间以及需要多次扫描数据库,耗费大量时间。针对以上问题,本发明引用了位串,将每条事务转换为频繁-1项的纵向位串编码,通过对横向1位串进行位串快速迭代算法得到项集并利用纵向位串编码快速计算支持度,得到频繁项集。并将其部署到分布式平台,大大加快其生成速率。
技术实现思路
1、本发明提供了一种基于纵横编码快速频繁项集生成的商品关联挖掘方法,以用于解决aprior需要生成大量候选项集,占用大量内存空间以及需要多次扫描数据库,耗费大量时间的问题。本发明应用到实际的购物商品领域中的分析中,增加在生成项集的同时就可以判断项集是否频繁,最终在分布式环境下集成,提升了频繁项集的挖掘效率。
2、本发明的技术方案是:一种基于纵横编码快速频繁项集生成的商品关联挖掘方法,所述方法的具体步骤如下:
3、step1利用spark分布式平台读取商品购物清单数据,设置最小支持度;
4、step2将商品购物清单数据进行拆分映射合并,筛选出支持度大于等于最小支持度的项集,并按支持度大小排序输出频繁-1项集;
5、step3将商品购物清单按照频繁-1项集进行清洗并排序;
6、step4将清洗排序后的商品购物清单数据进行0-1位串编码,得到bitmap,并将bitmap转换为每个频繁-1项集所对应的纵向0-1位串编码;
7、step5对应频繁-1项集长度的横向1位串编码生成及通过位串快速迭代算法进行迭代得到频繁位串;
8、step6将频繁位串转换为商品项。
9、进一步的,所述step 1的具体步骤为:
10、(1)创建一个sparkconf对象,设置该对象中的分区数,设置内存运行大小,节点运行个数,运行的主节点等其它必要的参数;
11、(2)依据sparkconf对象生成sparkcontext对象,该对象为应用程序于spark集群之间通信的接口;
12、(3)通过sparkcontext将原始的商品购物清单从hdfs中读取到内存中,并指定了并行读取时的分区数量;
13、(4)设置最小支持度阈值min_suppport。
14、进一步的,所述step2的具体步骤为:
15、(1)利用count()对rdd元素个数进行统计;
16、(2)利用filter(),对元素进行过滤,过滤的方法是判断支持度是否大于等于最小支持度,若为true的元素通过filter,保留在新生成的rdd中;
17、(3)利用sortwith(),对过滤后的元素进行排序,排序的方法是判断元素支持度大小,降序排序。
18、进一步的,所述step3的具体步骤为:
19、step 1:利用filter(),对元素进行过滤,过滤的方法是判断元素是否存在于频繁-1项集中,若为true的元素通过filter,保留在新生成的rdd中;
20、step 2:利用sortwith(),对元素进行排序,排序的方法是判断元素在频繁-1项集中索引位置大小,升序排序。
21、进一步的,所述step4的具体步骤为:
22、按照频繁-1项集的顺序对每条商品购物清单数据进行编码,频繁-1项集的项存在于商品购物清单数据中为1,不存在为0,生成bitmap,bitmap的每一列即为一个频繁-1项集的纵向编码,以此,将bitmap转换为每个频繁-1项集所对应的纵向0-1位串编码。
23、进一步的,所述step5的具体步骤为:
24、(1)根据频繁-1项集长度生成对应长度的1位串;
25、(2)定义i=1表示当前输出包含i个元素的所有子集,定义n表示频繁-1项集长度;
26、(3)判断i是否小于n,如果是,则转(4),否则结束;
27、(4)定义c=(1<<i)-1,c是所有包含i个元素的子集中的第一个子集;
28、(5)判断c是否小于等于(1<<n)-1,如果是则转(6),否则转(7);
29、(6)利用项的纵向编码进行与运算,并通过统计1的个数得到支持度,若频繁则存储,之后用c=nextn(c)计算下一个子集对应的数字,然后转(5);
30、(7)执行i++,然后转(3)。
31、进一步的,所述step6的具体步骤为:
32、按照频繁-1项集的顺序对每条频繁位串进行映射,位为1,则将该频繁-1项集的项加入;位为0,则不做操作。
33、本发明的有益效果是:本发明利用spark大数据处理框架,通过将商品的购物清单数据进行统计生成频繁-1项集,根据频繁-1项集的长度生成对应长度1位串,根据频繁-1项集的顺序对购物清单进行清洗和排序并转换为0-1位串的形式,通过对应长度1位串位运算进行项集生成,同时利用项编码对项集进行支持度计算,得到频繁项集。本发明与现有技术相比,主要解决了生成大量候选项集,占用大量内存空间以及需要多次扫描数据库,耗费大量时间等现象。应用到实际的购物商品领域中的分析中,在生成项集的同时就可以判断项集是否频繁,最终在分布式环境下集成,提升了频繁项集的挖掘效率。
1.一种基于纵横编码快速频繁项集生成的商品关联挖掘方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的基于纵横编码快速频繁项集生成的商品关联挖掘方法,其特征在于,所述step1的具体步骤为:
3.根据权利要求1所述的基于纵横编码快速频繁项集生成的商品关联挖掘方法,其特征在于,所述step2的具体步骤为:
4.根据权利要求1所述的基于纵横编码快速频繁项集生成的商品关联挖掘方法,其特征在于,所述step3的具体步骤为:
5.根据权利要求1所述的基于纵横编码快速频繁项集生成的商品关联挖掘方法,其特征在于,所述step4的具体步骤为:
6.根据权利要求1所述的基于纵横编码快速频繁项集生成的商品关联挖掘方法,其特征在于,所述step5的具体步骤为:
7.根据权利要求1所述的基于纵横编码快速频繁项集生成的商品关联挖掘方法,其特征在于,所述step6的具体步骤为: