Taste是 Apache Mahout 提供的一個個性化推薦引擎的高效實現,該引擎基於java實現,可擴展性強,同時在mahout中對一些推薦算法進行了MapReduce編程模式轉化,從而能夠利用hadoop的分佈式架構,提升推薦算法的性能。 html
在Mahout0.5版本中的Taste, 實現了多種推薦算法,其中有最基本的基於用戶的和基於內容的推薦算法,也有比較高效的SlopeOne算法,以及處於研究階段的基於SVD和線性插值的算法,同時Taste還提供了擴展接口,用於定製化開發基於內容或基於模型的個性化推薦算法。 java
Taste 不單單適用於 Java 應用程序,還能夠做爲內部服務器的一個組件以 HTTP 和 Web Service 的形式向外界提供推薦的邏輯。Taste 的設計使它能知足企業對推薦引擎在性能、靈活性和可擴展性等方面的要求。 算法
下圖展現了構成Taste的核心組件: 數據庫
從上圖可見,Taste由如下幾個主要組件組成: 編程
DataModel:DataModel是用戶喜愛信息的抽象接口,它的具體實現支持從指定類型的數據源抽取用戶喜愛信息。在Mahout0.5中,Taste 提供 JDBCDataModel 和 FileDataModel兩種類的實現,分別支持從數據庫和文件文件系統中讀取用戶的喜愛信息。對於數據庫的讀取支持,在Mahout 0.5中只提供了對MySQL和PostgreSQL的支持,若是數據存儲在其餘數據庫,或者是把數據導入到這兩個數據庫中,或者是自行編程實現相應的類。 服務器
UserSimilarit和ItemSimilarity:前者用於定義兩個用戶間的類似度,後者用於定義兩個項目之間的類似度。Mahout支持大部分駐留的類似度或相關度計算方法,針對不一樣的數據源,須要合理選擇類似度計算方法。 架構
UserNeighborhood:在基於用戶的推薦方法中,推薦的內容是基於找到與當前用戶喜愛類似的「鄰居用戶」的方式產生的,該組件就是用來定義與目標用戶相鄰的「鄰居用戶」。因此,該組件只有在基於用戶的推薦算法中才會被使用。 分佈式
Recommender:Recommender是推薦引擎的抽象接口,Taste 中的核心組件。利用該組件就能夠爲指定用戶生成項目推薦列表。 oop