基于用户的推荐和基于物品的推荐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