2014-05-08 84 views
0

我是新來的mahout,仍然試圖弄清楚事情。如何使用基於KNN的項目推薦器從命令行運行mahout?

我想運行一個基於KNN的推薦器,使用在hadoop集羣(分佈式推薦器)中運行的mahout 0.8。我使用的象夫0.8,所以KNN已過時,但它仍然是可用的(至少在我讓它在Java代碼)

我有幾個問題:

  1. 這是真的,有基本上兩個mahout實現? 分佈(命令行中運行) 非disributed(從jar文件中運行)

  2. Assumming(1)是正確的,是象夫的支持從運行命令行KNN基於推薦?有人能給我一個方向嗎? (1)是錯誤的,我該如何建立一個在hadoop集羣(分佈式)運行的java(我使用eclipse)推薦器?

謝謝!

回答

2

KNN已被淘汰,因爲它正在被基於物品和基於用戶的共同推薦人和ALS-WR推薦人所取代,這些推薦人更好,更現代。

  1. 是的,但不是所有的代碼都有一個CLI接口。大多數情況下,Mahout中的CLI作業都是Hadoop /分佈式作業,它們在HDFS中生成文件以便輸出。這些可以使用自己的代碼封裝在jar文件中運行,因爲您必須使用本地/非分佈式/非Hadoop版本(不具有CLI)。內存推薦程序要求您傳入用戶標識以獲取recs,因此您必須編寫代碼才能執行此操作。 Hadoop版本確實有一個CLI,因爲它們預先計算所有用戶的所有recs並將它們放入文件中。你可能會把它們插入你的數據庫或者以其他方式提供。
  2. 不,據我所知,從命令行只支持基於用戶的,基於項目的和ALS-WR推薦器。這將運行Hadoop /分佈式版本的推薦程序。這可以在單臺機器上運行,當然,即使使用本地文件系統,也可以通過這種方式設置Hadoop。
  3. 對於內存推薦器,只需編寫驅動代碼並在eclipse中運行它們,因爲不涉及Hadoop,它工作正常。如果您想使用Hadoop版本,請在開發機器上設置Hadoop以使用本地文件系統在本地運行,並且在eclipse中一切正常。調試完成後,將其移至Hadoop羣集。你也可以在集羣上進行遠程調試,但這完全是另一個問題。

Mahout推薦器中的最新事物是在後臺使用Hadoop進行訓練,然後輸出由Solr編入索引。然後,您可以使用用戶已經表示過的項目查詢Solr,因爲他們幾乎實時地從Solr查詢返回,所以不需要預先計算所有用戶的所有recs。這是Mahout的1.0快照的象夫/例子/或這裏https://github.com/pferrel/solr-recommender

BTW這個代碼正在與亨利馬烏1.0集成,並移動到星火代替Hadoop的運行,因此,即使在訓練步驟將是多快多了。

更新: 我已經闡明瞭可以從上面的CLI運行什麼。

+0

感謝您的回答! 我選擇KNN,因爲我覺得算法很容易理解,它將是一個很好的開始,肯定會檢查cooccurrence&als-wr。 我不熟悉「內存推薦」。你能詳細解釋一下嗎? 此外,它是一個有點題目..但你知道如何實現基於用戶的推薦hadoop(分佈式版本)? –

+0

某些推薦器實現爲「內存中」,因爲它們是您從應用程序調用以返回recs的數據結構和類。替代實現在Hadoop上,所以mapreduce和HDFS中生成文件。您可能需要將這些文件放入數據庫以供您的應用程序查詢。 順便說一句,如果只是爲了反對,我會避免KNN。基於項目或用戶的推薦人是鄰居方法,只是不完全像KNN。 – pferrel

+0

明白了。謝謝! –

相關問題