0

我有一個布爾值/二進制值,其中當客戶實際購買產品時找到客戶和產品ID,如果客戶沒有購買它,則找不到。這樣表示的數據集:使用與二進制數據的餘弦相似度 - Mahout

Dataset

我已經嘗試了不同的方法,如GenericBooleanPrefUserBasedRecommender與TanimotoCoefficient或數似然相似之處,但我自己也嘗試GenericUserBasedRecommender與非中心餘弦相似度,它給了我最高的精度和召回100%和60%。

我不確定在這種情況下使用Uncentered Cosine相似性是否合理,或者這是一個錯誤的邏輯?以及Uncentered Cosine Similairty對這樣的數據集做了什麼。

任何想法將非常感激。

謝謝。

回答

0

100%的精確度是不可能的,所以有些事情是錯誤的。所有的相似性度量都可以很好地處理布爾數據。請記住,空間的維度非常高。

您的示例數據只包含兩個項目(順便說一下,舊版hadoop版本的Mahout的BTW ID應該爲0)。所以如圖所示的數據集不會給出有效的精確分數。

我已經使用大型E-Com數據集完成了這項工作,並且對數似然大大超出了布爾數據上的其他度量。

順便說一句Mahout已經從Hadoop轉向Spark,我們唯一的指標是LLR。基於Mahout的-色戒完整的通用導購與事件存儲,並預測服務器在這裏實現: http://templates.prediction.io/PredictionIO/template-scala-parallel-universal-recommendation 幻燈片描述在這裏:http://www.slideshare.net/pferrel/unified-recommender-39986309

+0

太謝謝你了。我沒有高維問題,因爲我的數據不是那麼龐大,我只有大約3000行,而我正在使用內存計算數據庫SAP HANA。 我也這麼認爲,精度永遠不會是100%,我最關心的總是與數據的表示有關,因爲我擁有所有的偏好1.可以像這樣表示布爾數據,或者應該我包含客戶沒有購買的產品並將其設置爲0?也許你可以爲我提供一個二進制數據集的例子,我真的很感激它。 – user2255207

+0

使用通用推薦器,用戶不與之交互的任何項目都被假定爲0.您只需將交互事件發送到綁定到用戶的推薦器,定期對數據進行訓練,然後通過用戶或項目ID進行查詢。不需要像舊的Mahout代碼一樣的id翻譯,也不需要枚舉項目的所有用戶。這些都是從交互數據中檢測到的。你也可以使用許多事件,甚至用戶配置文件數據。 – pferrel