您的位置:首页 > 其它

MAHOUT之关联规则挖掘算法

2015-09-06 22:42 211 查看

需求说明

目前正在对hive表中的数据做分析,期望从已有的数据中挖掘出类似购物篮的关联规则,但是单机环境下的关联规则算法实在是无法胜任大数据环境下的数据挖掘工作,无奈寻求大数据环境下的分布式挖掘算法,目前可供选用的关联规则挖掘算法有Apriori和fp-tree两种,前者较后者来说,当挖掘过万的记录时,效率上更是百倍的差距,所以选择mahout中提供的fpgrowth算法来实现关联规则挖掘。

准备工作

为了配合hive中的数据表完成挖掘工作,这里需要安装的工具主要有:

1)hadoop平台,若想深入了解mapreduce的开发原理,可以参考Helloworld案例;

2)hive工具,建议使用textfile格式来存储数据,方便mahout直接在hdfs下调用数据;

3)mahout 0.9版本及之前(注,之后的版本不提供关联规则的挖掘算法,但是0.9版会与hadoop2.2及以上版本存在不兼容的现象),有关FP-TREE算法的原理可以参考该博文

可观察mahout的jar包中是否提供了FPGrowthDriver类,若有,则是可以直接使用的。

关联规则使用

1)从hive中获取数据,进行数据ETL过程,最终输入数据格式为(每行一条购物记录,可用任何分隔符分割):

4750,19394,25651,6395,5592
26180,10895,24571,23295,20578,27791,2729,8637
7380,18805,25086,19048,3190,21995,10908,12576
3458,12426,20578
1880,10702,1731,5185,18575,28967
21815,10872,18730
20626,17921,28930,14580,2891,11080
18075,6548,28759,17133
7868,15200,13494
7868,28617,18097,22999,16323,8637,7045,25733
12189,8816,22950,18465,13258,27791,20979
26728
17512,14821,18741
26619,14470,21899,6731


2)利用mahout提供的方式执行命令:

mahout org.apache.mahout.fpm.pfpgrowth.FPGrowthDriver -i input/* -o output -method mapreduce -regex ‘[,|\t| ]’ -s 10

参数说明:

-i 输入路径,由于运行在hadoop环境中,所以输入路径必须是hdfs路径,这里需要指出文件名,所示多个,则可以用*代表input目录下的所有文件。



挖囧结果

最终运行的结果如下图所示,会产生四个文件夹,其中,挖掘的关联结果在frequentpatterns文件夹下



其中:flist是一个文件,按降序排列存储了单个项出现的频次(频次大于支持度),fpgrowth存储的是按频繁树获取的频繁项集(没有经过整理吧),frequentpatterns则是我们需要的经过排序合并后的频繁项集(每一个单项都有),最后一个文件夹和flist记录的内容差不多,包括低于支持度的项的统计(貌似也有单项统计的)。

由于mahout的结果是sequencefile格式存储,所以需要mahout提供的seqdumper方法将序列文件转化成文本文件查看,可使用命令为:

mahout seqdumper -i output/frequentpatterns/part-r-00000 -o output -q

注:这里的-o命令若不加以说明,则是将hdfs上的结果存储到本地目录路径上,-q表示将不存储除数据以外的其他文本信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法