目前最新的是0.9版 但是官方0.9的版本超舊 還是用hadoop 1.x編譯的 所以當我們在呼叫mahout的Lib時會有以下error

 

 

所以一定要重新下載source code自行編譯 不要用官方提供的版本... 

首先假設大家都裝好maven和git了

git clone https://github.com/apache/mahout.git

(我下載到路徑/opt 它會自動在底下建立一個mahout資料夾)

cd /opt/mahout

 

開始編譯

mvn clean install -Dhadoop2 -Dhadoop.2.version=2.6.0 -DskipTests

mvn -Dhadoop2.version=2.6.0 clean package -DskipTests

 

 

 

vi ~/.bashrc

export MAHOUT_HOME=/opt/mahout
export PATH=$MAHOUT_HOME/bin:$PATH
export MAHOUT_LOCAL=

source ~/.bashrc

 

 

 

1. mahout最大的貢獻和用處就是他的Libarary已經包含了許多推薦系統會用到的分群演算法

如K-means和Canopy Clusting直接呼叫就可以使用

先從下面的網站了解這兩種演算法的意義吧

http://www.dotblogs.com.tw/dragon229/archive/2013/02/04/89919.aspx

http://blog.pureisle.net/archives/2045.html

 

 

下載範例資料

cd /home

wget http://archive.ics.uci.edu/ml/databases/synthetic_control/synthetic_control.data

 

 

在HDFS裡建一個暫存資料夾

hadoop fs -mkdir /testdata

 

把資料放入HDFS

hadoop fs -put /home/synthetic_control.data /testdata

 

先試試canopy clustering

mahout org.apache.mahout.clustering.syntheticcontrol.canopy.Job -t1 3 -t2 2 -i /testdata/synthetic_control.data -o /output

 t1需要大於t2

 

檢查輸出

hadoop fs -ls /output/data

 

 

 

從FS下載下來的part-m-00000都是亂碼 使用seqdumper

mahout seqdumper --input /output/data/part-m-00000 --output /output2.txt

output2.txt會在local端

直接vi output2.txt查看

 

 

也可以使用K-means分群

mahout org.apache.mahout.clustering.syntheticcontrol.kmeans.Job -t1 3 -t2 2 -i /testdata/synthetic_control.data -o /output

 

 

 

2. 協同過濾 Collaborative Filtering

先了解CF explicit, implicit, user-based, item-based分 別是什麼

http://cofounderinc.com/2013/04/06/collaborative-filtering/

http://divakalife.blogspot.tw/2010/04/data-mining-collaborative-filtering.html

 

 

A

B

C

D

USER1

2

4

1

5

USER2

1

2

3

?

USER3

3

4

?

1

USER4

5

3

2

4

USER5

1

5

3

2

 

我們需要算出?的值來決定要不要推薦C物品給USER3 或D物品給USER2

首先創造table

vi cf.data

1,1,2
1,2,4
1,3,1
1,4,5
2,1,1
2,2,2
2,3,3
3,1,3
3,2,4
3,4,1
4,1,5
4,2,3
4,3,2
4,4,4
5,1,1
5,2,5
5,3,3
5,4,2

 

 

把資料放進HDFS裡

hadoop fs -mkdir /cftest

hadoop fs -put /tmp/cf.data /cftest/

 

執行

mahout recommenditembased -s SIMILARITY_EUCLIDEAN_DISTANCE -i /cftest/cf.data -o /cfoutput

紅字的地方可以替換成不同的演算法

SIMILARITY_COOCCURRENCE
SIMILARITY_LOGLIKELIHOOD
SIMILARITY_TANIMOTO_COEFFICIENT
SIMILARITY_CITY_BLOCK
SIMILARITY_COSINE
SIMILARITY_PEARSON_CORRELATION
SIMILARITY_EUCLIDEAN_DISTANCE

 

文章標籤
全站熱搜
創作者介紹
創作者 kurthung1224 的頭像
kurthung1224

Kurt && Hadoop && Spark

kurthung1224 發表在 痞客邦 留言(0) 人氣(114)