基本思想:预先根据所有用户的历史偏好数据计算项目之间的相似性,然后把与用户喜欢的项目相类似的项目推荐给用户。
基本过程:首先根据用户的偏好数据寻找出用户没有评分的项目,然后在用户没有评分的所有项目中,对每个项目预测一个可能的评分,这里会涉及到相似度计算和组合权重计算,最后对这些项目的评分从高到低进行排序,推荐前N个项目。
Java实现代码如下:
public class BasedItemRecommend {
//最近最相邻项目数量
public static final int NEAREST_ITEM = 100;
//推荐结果数量
public static final int RECOMMEND_NUM = 10;
//电影映射
private Map<Long, Movie> movieMap = DataLoader.getMovieMap();
//用户电影映射
private Map<Long, Map<Long, Integer>> userMovies = DataLoader.getUserMovieMap();
//电影用户映射
private Map<Long, Map<Long, Integer>> movieUsers = DataLoader.getMovieUserMap();
//余弦距离计算
public double cosine(Map<Long, Integer> p1, Map<Long, Integer> p2) {
double x = 0, y = 0,