Recommender
构建一个最简单的recommender
简单流程为:
①:创建DataModel读取数据源文件(读入DataModel的文件的格式为:用户ID,物品ID,偏好值,时间戳)。
②:相似度计算。
③:如果是UserCF则需要使用选择近邻算法(NearestNUserNeighborhood 参数为(邻居个数,相似度,datamodel),ThresholdUserNeighborhood (用户百分比,相似度,datamodel)),如果不是则不需要这一步。
④:构建推荐器
import org.apache.mahout.cf.taste.impl.model.file.*;
import org.apache.mahout.cf.taste.impl.similarity.*;
import org.apache.mahout.cf.taste.impl.neighborhood.*;
import org.apache.mahout.cf.taste.impl.recommender.*;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.similarity.*;
import org.apache.mahout.cf.taste.neighborhood.*;
import org.apache.mahout.cf.taste.recommender.*;
import java.io.File;
import java.util.List;
public class RecommenderIntro {
private RecommenderIntro(){
}
public static void main(String[] args) throws Exception {
DataModel model = new FileDataModel(new File("/root/data/*.csv"));//数据文件路径
UserSimilarity similarity = new PearsonCorrelationSimilarity(model);//皮尔森距离,反映两个变量线性相关程度的统计量
UserNeighborhood neighborhood = new NearestNUserNeighborhood(3,similarity,model);//选择邻近算法。三个参数分别是: 邻居的个数,用户相似度,数据模型
Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);使用DataModel,NearestNUserNeighborhood作为近邻算法,PearsonCorrelationSimilarity相似度计算构建一个简单的基于用户的推荐器
List<RecommendedItem> recommendedItems = recommender.recommend(2, 3);//这个函数中前一个表示对哪一个用户进行推荐,后一个表示推荐几个(为id为2的用户推荐3个)。
for (RecommendedItem recommendedItem1: recommendedItems){
System.out.println(recommendedItem1);//输出从相似度从高到低
}
}
}
输出结果:

PearsonCorrelationSimilarity的计算:

计算公式:PearsonCorrelationSimilarity是用协方差除以两个变量X,Y的标准差

本文介绍了如何使用Apache Mahout构建推荐系统,重点在于PearsonCorrelationSimilarity的计算。通过创建DataModel,计算用户相似度,然后运用NearestNUserNeighborhood或ThresholdUserNeighborhood选择近邻,最后构建推荐器。Pearson相关性系数用于衡量用户偏好的相似度,其计算涉及协方差和标准差。
&spm=1001.2101.3001.5002&articleId=86064390&d=1&t=3&u=02ee647d2b5a4ff8af6ac9a7999798dd)
491

被折叠的 条评论
为什么被折叠?



