導航:首頁 > 凈水問答 > mahout協同過濾實例

mahout協同過濾實例

發布時間:2023-08-27 10:53:07

㈠ GitHub上面有哪些經典的java框架源碼

㈡ 大數據進行kmeans聚類在hadoop2上怎麼實現

k-means聚類不就是初始時抄,襲隨機選取k個中心點,計算與其他點的距離,一次迭代完畢後,計算每個聚類中的中心點(也就是聚類中點的平均值)作為下次迭代的中心點,反復多次迭代直到達到迭代次數上限,或者達到迭代的效果(距離最短)。maprece實現的話就是:map函數計算每個點到中心點的距離,選擇距離每個點最近的中心點,然後輸出鍵值對<中心點,聚類中點的集合>,rece函數計算每個聚類的點的距離均值,並把它作為下次迭代的中心點。反復進行map和rece就是相當於反復迭代。望採納!謝謝!

㈢ 如何讓Hadoop結合R語言做大數據分析

R語言和Hadoop讓我們體會到了,兩種技術在各自領域的強大。很多開發人員在計算機的角度,都會提出下面2個問題。問題1: Hadoop的家族如此之強大,為什麼還要結合R語言?
問題2: Mahout同樣可以做數據挖掘和機器學習,和R語言的區別是什麼?下面我嘗試著做一個解答:問題1: Hadoop的家族如此之強大,為什麼還要結合R語言?

a. Hadoop家族的強大之處,在於對大數據的處理,讓原來的不可能(TB,PB數據量計算),成為了可能。
b. R語言的強大之處,在於統計分析,在沒有Hadoop之前,我們對於大數據的處理,要取樣本,假設檢驗,做回歸,長久以來R語言都是統計學家專屬的工具。
c. 從a和b兩點,我們可以看出,hadoop重點是全量數據分析,而R語言重點是樣本數據分析。 兩種技術放在一起,剛好是最長補短!
d. 模擬場景:對1PB的新聞網站訪問日誌做分析,預測未來流量變化
d1:用R語言,通過分析少量數據,對業務目標建回歸建模,並定義指標d2:用Hadoop從海量日誌數據中,提取指標數據d3:用R語言模型,對指標數據進行測試和調優d4:用Hadoop分步式演算法,重寫R語言的模型,部署上線這個場景中,R和Hadoop分別都起著非常重要的作用。以計算機開發人員的思路,所有有事情都用Hadoop去做,沒有數據建模和證明,」預測的結果」一定是有問題的。以統計人員的思路,所有的事情都用R去做,以抽樣方式,得到的「預測的結果」也一定是有問題的。所以讓二者結合,是產界業的必然的導向,也是產界業和學術界的交集,同時也為交叉學科的人才提供了無限廣闊的想像空間。問題2: Mahout同樣可以做數據挖掘和機器學習,和R語言的區別是什麼?

a. Mahout是基於Hadoop的數據挖掘和機器學習的演算法框架,Mahout的重點同樣是解決大數據的計算的問題。
b. Mahout目前已支持的演算法包括,協同過濾,推薦演算法,聚類演算法,分類演算法,LDA, 樸素bayes,隨機森林。上面的演算法中,大部分都是距離的演算法,可以通過矩陣分解後,充分利用MapRece的並行計算框架,高效地完成計算任務。
c. Mahout的空白點,還有很多的數據挖掘演算法,很難實現MapRece並行化。Mahout的現有模型,都是通用模型,直接用到的項目中,計算結果只會比隨機結果好一點點。Mahout二次開發,要求有深厚的JAVA和Hadoop的技術基礎,最好兼有 「線性代數」,「概率統計」,「演算法導論」 等的基礎知識。所以想玩轉Mahout真的不是一件容易的事情。
d. R語言同樣提供了Mahout支持的約大多數演算法(除專有演算法),並且還支持大量的Mahout不支持的演算法,演算法的增長速度比mahout快N倍。並且開發簡單,參數配置靈活,對小型數據集運算速度非常快。
雖然,Mahout同樣可以做數據挖掘和機器學習,但是和R語言的擅長領域並不重合。集百家之長,在適合的領域選擇合適的技術,才能真正地「保質保量」做軟體。

如何讓Hadoop結合R語言?

從上一節我們看到,Hadoop和R語言是可以互補的,但所介紹的場景都是Hadoop和R語言的分別處理各自的數據。一旦市場有需求,自然會有商家填補這個空白。

1). RHadoop

RHadoop是一款Hadoop和R語言的結合的產品,由RevolutionAnalytics公司開發,並將代碼開源到github社區上面。RHadoop包含三個R包 (rmr,rhdfs,rhbase),分別是對應Hadoop系統架構中的,MapRece, HDFS, HBase 三個部分。

2). RHiveRHive是一款通過R語言直接訪問Hive的工具包,是由NexR一個韓國公司研發的。

3). 重寫Mahout用R語言重寫Mahout的實現也是一種結合的思路,我也做過相關的嘗試。

4).Hadoop調用R

上面說的都是R如何調用Hadoop,當然我們也可以反相操作,打通JAVA和R的連接通道,讓Hadoop調用R的函數。但是,這部分還沒有商家做出成形的產品。

5. R和Hadoop在實際中的案例

R和Hadoop的結合,技術門檻還是有點高的。對於一個人來說,不僅要掌握Linux, Java, Hadoop, R的技術,還要具備 軟體開發,演算法,概率統計,線性代數,數據可視化,行業背景 的一些基本素質。在公司部署這套環境,同樣需要多個部門,多種人才的的配合。Hadoop運維,Hadoop演算法研發,R語言建模,R語言MapRece化,軟體開發,測試等等。所以,這樣的案例並不太多。

㈣ mahout推薦當uid是uuid(16進制字元串)而不是Long型的處理方式

最近在做使用mahout做協同過濾推薦的時候,發現無論是數據源還是推薦函數的介面user_id必須是Long型的變數

由於業務提供的 user_id 是 uuid ,所以是個字元串類型,並且 item_id (做的是崗位推薦,即為job_id)也是 uuid 類型,於是另外再弄三張表 uid-uuid , jid-jjid , uid-jid-score 的映射,但是這樣做實在太麻煩了,我分析用戶日誌存儲用戶偏好表還要再多維護所有用戶和所有崗位表,遂開始研究 uuid 和 uid 能不能做個映射。

首先了解一下 UUID :

重點來了:

我現在需要處理的 uuid 就是這個 標準的UUID格式 ,了解了UUID的構成以後我們就好辦了:

1. 首先將uuid去掉連接符,從原先的uuid格式字元串轉化為沒有連接符的16進制字元串

2. 將16進制字元串轉化為10進制數(內部使用mahout介面)

用BigInt來存儲這個唯一的十進制數,這樣就構成了一種映射。

查了下python的內置uuid庫的API用法:

這里我直接用 python 演示( python3 )

輸出見下圖

寫完的時候google了一下發現牆外面也有不少討論這個的,mahout官方也是說要做轉換,直接用字元串類型進入推薦演算法,效率會特別慢!

如下:
Why user id and item id must be long type ?
how to map uuid to userid in preference class to use mahout recommender
mahout-user mailing list archives:UUID based user IDs

參考:
Python 3.x 格式化輸出字元串 % & format 筆記
python常用的十進制、16進制、字元串、位元組串之間的轉換

閱讀全文

與mahout協同過濾實例相關的資料

熱點內容
汽車空調更換乾燥過濾器 瀏覽:311
機油濾芯太厚會有什麼影響 瀏覽:78
實驗室常用的蒸餾方法 瀏覽:858
永興生活污水處理廠 瀏覽:668
博世馬勒濾芯怎麼樣 瀏覽:568
凈化器儲水罐為什麼只有一根管子 瀏覽:847
市政污水檢測井做法 瀏覽:543
誰發明的反滲透膜 瀏覽:954
30目水過濾器 瀏覽:506
污水可以接入排澇站 瀏覽:332
原生動物對污水的指示作用 瀏覽:146
現在從北京回灤平用隔離嗎 瀏覽:3
過濾器沒排氣 瀏覽:519
生活污水處理保護法 瀏覽:771
乙烯基酯樹脂毒性 瀏覽:122
焦化污水總氮如何去除 瀏覽:627
無電ro反滲透純水機原理圖 瀏覽:81
醫療廢物及污水管理督查整改報告 瀏覽:461
過濾器的折舊年限 瀏覽:393
乙酸乙酯蒸餾器化驗 瀏覽:950