本文目的: 介绍一种常见推荐算法(用户协同过滤)的使用。
应用场景: XXX项目运行一段时间后,系统中将会存在很多视频信息, 而通常 APP 给用户推送的消息(1-3条/每天),
那么这就需要我们根据用户的行为特征,进行更为有效的推送。
工具介绍:mahout 协同过滤算法的使用
测试代码:
/** * * 基于用户近邻协同过滤推荐算法, * 本文目的:针对xxx后续广告推荐算法,提供一些算法模型的参考 * * @版权所有:来谊金融 版权所有 (c) 2015 * @author feihu.wang * @version Revision 1.0.0 * @see: * @创建日期:2015年5月18日 * @功能说明: * */ public class CfTest { public static void main(String[] args) throws IOException, TasteException { DataModel model = new FileDataModel(new File("E:\\projects\\code\\mahout_test\\intro.csv")); //用户相识度 :皮尔森相关性近视度 //UserSimilarity sim = new PearsonCorrelationSimilarity(model); //用户相识度 :欧式距离 UserSimilarity sim = new EuclideanDistanceSimilarity(model); // 最近邻算法 UserNeighborhood nbh = new NearestNUserNeighborhood(2, sim, model); // 生成推荐引擎 : 基于用户的协同过滤算法, //还有基于物品的过滤算法,mahout 下面已经有很多实现 Recommender rec = new GenericUserBasedRecommender(model, nbh, sim); // 为用户ID(1)推荐物品(数量2个) List<RecommendedItem> recItemList = rec.recommend(1, 2); for(RecommendedItem item : recItemList) { System.out.println(item); } }
测试数据:
intro.csv
pom 依赖:
<dependency> <groupId>org.apache.mahout</groupId> <artifactId>mahout-core</artifactId> <version>0.9</version> </dependency> <dependency> <groupId>org.apache.mahout</groupId> <artifactId>mahout-math</artifactId> <version>0.9</version> </dependency>
本文出自 “流浪的脚步” 博客,谢绝转载!
原文地址:http://now51jq.blog.51cto.com/3474143/1652239