MAHOUT之關聯規則挖掘演算法

2021-07-05 03:11:43 字數 1928 閱讀 1494

目前正在對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表示將不儲存除資料以外的其他文字資訊。

使用mahout做海量資料關聯規則挖掘

mahout是乙個基於hadoop的分布式資料探勘開源專案 mahout本來是指乙個騎在大象上的人 掌握了關聯規則的基本演算法和使用,加上分布式關聯規則挖掘後,就可以處理基本的關聯規則挖掘工作了,實踐中只需要把握業務,理解資料便可游刃有餘。安裝mahout 騎在大象上的俠士必然需要一頭雄糾糾的大象,...

資料探勘之關聯規則挖掘(Apriori演算法)

一 概述 本篇博文主要闡述資料探勘相關的關聯規則挖掘的演算法 apriori演算法 主要介紹關聯規則的基本概念 apriori演算法原理和apriori演算法例項,文章末尾處附加apriori演算法源程式。二 關聯規則挖掘的基本概念 關聯規則挖掘發現大量資料中項集之間有趣的關聯關係。如果兩項或者多項...

資料探勘之關聯規則挖掘 Apriori演算法

關聯規則,肯定很多人都聽說過 乙個男士買尿布時順帶買啤酒的事情 具體事物之間真的是否具有關聯,有多大的關聯,這就是本篇部落格需要分享學習的知識。在這裡x,y就是購買的部分商品,i表示所有的商品 其含義就是購買商品x與購買商品y之間的關聯關係 同時在這裡引入對規則定量的描述 支援度就是所買商品中中同時...