如果您認爲您的示例數據已完成以計算項目相似度,爲什麼不預先計算它們並使用Collection<GenericItemSimilarity.ItemItemSimilarity> corrMatrix = new ArrayList<GenericItemSimilarity.ItemItemSimilarity>();
來存儲您的預計算相似度。然後這個,你可以創建你ItemSimilarity
這樣的:ItemSimilarity similarity = new GenericItemSimilarity(correlationMatrix);
我認爲這是不使用你的數據計算基於偏好值項項相似的樣品好主意,因爲你可能會丟失很多有用的數據。如果您認爲即時計算速度很慢,則可以預先計算並將其存儲在數據庫中,並在需要時加載它。
如果您仍然收到此錯誤,那麼您可能會在推薦分類中使用示例數據模型,或者您使用UserSimilarity
來計算項目相似性。
如果你想添加新用戶,你可以使用Mahout的FileDataModel
並通過包含新用戶(我認爲你可以用一些後綴創建新文件,我不確定)定期更新文件。你可以在Mahout in Action這本書中找到更多關於這方面的信息。內存中的DataModel
實現是不可變的。您可以通過實施方法setPreference()
和removePreference()
來擴展它們。
編輯:我有一個MutableDataModel
的實現,它擴展了AbstractDataModel
。如果你願意,我可以與你分享。
如果你喜歡答案,你應該把它標記爲接受,所以其他人可以從中受益,並會鼓勵他人來幫助你 –