2016-03-01 72 views
1

我想基於使用Apache星火協同過濾建立一個推薦引擎協同過濾推薦引擎。我已經能夠在我的數據上運行recommendation_example.py,效果相當不錯。 (MSE〜0.9)。我有的一些具體問題是:建築用星火mlLib

  1. 如何爲尚未在網站上進行任何活動的用戶提供建議。是不是有一些關於流行項目的API調用,這會根據用戶操作給我提供最受歡迎的項目。一種方法是自己確定受歡迎的物品,並抓住java.util.NoSuchElementException例外情況,並返回這些受歡迎的物品。
  2. 如何在輸入文件中添加一些數據後重新加載模型。我正在嘗試使用另一個函數重新加載模型,該函數試圖保存模型,但它給出的錯誤爲org.apache.hadoop.mapred.FileAlreadyExistsException。一種方法是在並行線程上監聽輸入數據,使用model.save(sc, "target/tmp/<some target>")進行保存,然後在收到重要數據後重新加載模型。我迷失在這裏,如何實現這一點。

這將是非常有益的,如果我能在這裏得到一些方向。

回答

1

在第一部分,你可以找到ITEM_ID,那ITEM_ID出現的次數。你可以使用spark的map和reduceByKey函數。之後找到具有最大數量的前10/20項。您還可以根據項目的近因程度給出權重。

對於第二部分,每次都可以保存新名稱的模型。我通常使用當前的日期和時間創建文件夾名稱,並使用相同的名稱從保存的文件夾中重新加載模型。您將一直需要再次訓練模型,使用過去的數據和收到的新數據,然後使用模型進行預測。

1

獨立使用像火花平臺的,也有一些很好的技術(例非負矩陣因子分解)鏈路預測的其預測2臺之間的鏈路。 建議的其他非常有效(和好的)技術是: - 1.湯普森採樣,2.MAB(多臂匪)。很大程度上取決於原始數據集。你的原始數據集是如何分佈的?我建議在5%原始數據集上應用上述方法,建立一個假設,使用A/B測試,預測鏈接並繼續前進。

同樣,所有這些技術都是獨立的平臺。我還建議從頭開始,而不是像spark那樣只對大型數據集有用的平臺。您將來可以隨時移動到這些平臺以實現可擴展性。

希望它有幫助!

+0

謝謝。我會盡快嘗試,並讓你知道。 :) – Abhishek