mahout推薦9-進行推薦

基於用戶的推薦和基於物品的推薦java

兩種算法,均依賴於兩個事物(用戶或物品)之間的類似性度量(等同性定義),類似性度量的方法:PearsonCorrealation皮爾遜相關係數,對數似然值Loglikelihood,斯皮爾曼相關係數SpearmanCorrelation,谷本系數TanimotoCoefficient等。算法

推薦算法:Slope-one,基於SVD和基於聚類的推薦算法。rest

基於用戶的推薦:blog

代碼示例:ci

	public static void main(String[] args) throws Exception {
		//裝載數據文件,實現存儲,併爲計算提供所需的全部偏好,用戶和物品數據
		DataModel model = new FileDataModel(new File("data/intro.csv"));
		//用戶類似度,給出兩個用戶的類似度,有多種度量方式,封裝了用戶間類似性的概念
		UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
		//用戶鄰居,與給定用戶最類似的一組用戶,封裝了最類似用戶組的概念
		UserNeighborhood neighborhood = new NearestNUserNeighborhood(2,
				similarity, model);
		//推薦引擎,合併這些組件,實現推薦
		Recommender recommender = new GenericUserBasedRecommender(model,
				neighborhood, similarity);
		//爲用戶1推薦一件物品1,1
		List<RecommendedItem> recommendedItems = recommender.recommend(1, 1);
		//輸出
		for (RecommendedItem item : recommendedItems) {
			System.out.println(item);
		}
	}

 引入新的類似性度量,結果就會發生顯著的變化。mahout推薦是由 多個組件搭配而成,而非單一的推薦引擎,其餘各個組件的組合能夠定製,從而針對特定應用提供理想的推薦。it

  一、數據模型,有datamodel實現io

  2.用戶間的類似性度量,由usersimilarity實行class

  3.用戶鄰域的定義,有userneighborhood實現sed

  4.推薦引擎,由一個recommender實現(此處爲GenericUserBasedRecommender)List

相關文章
相關標籤/搜索