我具有以下設置:使用項目相似性hadoop工作的基於預計算項目相似性的基於可伸縮實時項目的mahout推薦器?
布爾數據:(用戶ID,項ID)
hadoop的基於象夫itemSimilarityJob與以下arguements: --similarityClassname Similarity_Loglikelihood --maxSimilaritiesPerItem 50 &他人(輸入,輸出.. )
項目基於布爾推薦: -model MySqlBooleanPrefJDBCDataModel -similarity MySQLJDBCInMemoryItemSimilarity -candidatestrategy AllSimilarItemsCandidateItemsStrat埃及 -mostSimilarItemsCandidateStrategy AllSimilarItemsCandidateItemsStrategy
有沒有使用相似cooccurence在我的設置來獲得最終建議的方法嗎?如果我在作業中插入SIMILARITY_COOCCENCE,則MySqlJDBCInMemorySimilarity前提條件檢查失敗,因爲計數變得大於1.我知道,通過針對預計算相似度運行推薦器作業,我可以得到最終的建議。有沒有辦法使用api實時使用api,如使用MysqlInMemorySimilarity的相似性對數似然性(以及其他相似性度量,其相似度值在-1 & 1之間)?
我們該如何限制最大數量。項目相似性工作中的每件商品的類似商品。我的意思是,所有類似的令人高興的事情都要求所有可能的候選人都有類似的項目(項目)。有沒有一種方法可以說明使用API的10/20/50類似項目。我知道我們可以將一個--maxSimilaritiesPerItem傳遞給項目相似度工作,但我不完全確定代表什麼以及它是如何工作的。如果我將此設置爲10/20/50,我是否能夠達到上述要求。也有辦法通過api完成這個嗎?
我正在使用rescorer過濾出並重新編寫最終建議。使用rescorer,與/ similar/itemid?howMany = 10 & rescore {..}的呼叫正在變得更長(300ms-400ms),與(推薦/ userid/how/30-70毫秒)沒有rescorer。我使用redis作爲內存存儲來獲取rescore數據。如上所示,rescorer還會收到一些運行時數據。在rescorer中只會發生一些檢查。問題是,因爲沒有。的特定用戶的項目偏好增加(> 100),否則。的調用isFiltered()& rescore()大量增加。這主要是因爲,對於每個用戶首選項,對candidateStrategy.getCandidatItems(item)的調用都返回(100+)類似的項目,併爲每個項目調用rescorer。因此需要限制作業中每個項目的最大數量的相似項目。這是正確的還是我錯過了什麼?在這種情況下優化rescorer的最佳方式是什麼?
的MysqlJdbcInMemorySimilarity使用GenericItemSimilarity加載項目的相似性在memeory及其.allsimilaritems(項目)返回從在MySQL預先計算的項相似性的給定項目的所有可能的類似的產品。我是否需要實現自己的物品相似類才能返回前10/20/50類似物品。那麼如果用戶的不是。的偏好繼續增長?
如果有人能告訴我如何實現上述目標,這將是非常好的嗎?感謝堆!
嗨肖恩,謝謝你的答覆。關於前提條件檢查,我的意思是當我使用SIMILARITY_COOCCENCE與ItemSimilarity Job時,如果我沒有錯,hadoop輸出就像{item1,item2,noOfCoocurences}。這被導入MySql表 - taste_item_similarity。當MySqlJDBCInMemorySimilarity嘗試讀取此表數據存儲器時,它會引發前提條件檢查(-1 <相似性<1)失敗的異常。 – gk99
此外,還會查找採樣候選物品策略,但請您解釋您的hadoop標誌是什麼意思。您是否指向傳遞給作業的--maxSimilaritiesPerItem選項。它是否控制最大數量?從作業輸出的csv文件中生成的每件物品的類似物品。再次感謝堆,一定會檢查出Myrrix。 – gk99
好的,沒有看到這個檢查,但它存在是有道理的。這不是在那個班。再次,我不會使用原始共生計數作爲相似性度量的基礎。 --maxSimilaritiesPerItem是控制修剪的Hadoop作業的標誌,但這與CandidateItemStrategy無關,後者在運行時修剪了其他類型的內容。它控制在運行時查看多少項目/用戶。 –