Mahout:采用斯皮尔曼相关系数基于相对排名定义相似度
来源:互联网 发布:2000年总决赛第场数据 编辑:程序博客网 时间:2024/06/05 18:35
//此处为UserSimilarity实现引入缓存的机制//采用斯皮尔曼相关系数基于相对排名定义相似度//其中加入了缓存的机制,将得到的结果进行内部的缓存//然后,当需要进行提供一个已经计算过的用户间相似度时,//就可以直接返回,而不需要进行重新的进行计算//但是这个方法的代价很高,很耗内存package byuser;import java.io.File;import java.io.IOException;import org.apache.mahout.cf.taste.common.TasteException;import org.apache.mahout.cf.taste.eval.RecommenderBuilder;import org.apache.mahout.cf.taste.eval.RecommenderEvaluator;import org.apache.mahout.cf.taste.impl.eval.AverageAbsoluteDifferenceRecommenderEvaluator;import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood;import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;import org.apache.mahout.cf.taste.impl.similarity.CachingUserSimilarity;import org.apache.mahout.cf.taste.impl.similarity.SpearmanCorrelationSimilarity;import org.apache.mahout.cf.taste.model.DataModel;import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;import org.apache.mahout.cf.taste.recommender.Recommender;import org.apache.mahout.cf.taste.similarity.UserSimilarity;import org.apache.mahout.cf.taste.similarity.precompute.example.GroupLensDataModel;public class SpearManCorrelationSimilarityTest {public SpearManCorrelationSimilarityTest() throws TasteException, IOException{DataModel model = new GroupLensDataModel(new File("E:\\mahout项目\\examples\\ratings.dat"));RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {@Overridepublic Recommender buildRecommender(DataModel model) throws TasteException {UserSimilarity similarity = new CachingUserSimilarity(new SpearmanCorrelationSimilarity(model), model);UserNeighborhood neighborhood = new NearestNUserNeighborhood(100, similarity, model);return new GenericUserBasedRecommender(model, neighborhood, similarity);}};//这里evaluate()函数trainingPercentage从0.95升到0.99//从而让数据规模从5%减为1%double score = evaluator.evaluate(recommenderBuilder, null, model, 0.99, 0.05);System.out.println("采用斯皮尔曼相关系数的推荐引擎的评测得分是: " + score);}public static void main(String[] args) throws IOException, TasteException {// TODO Auto-generated method stubSpearManCorrelationSimilarityTest tt = new SpearManCorrelationSimilarityTest();}}
如图:
0 0
- Mahout:采用斯皮尔曼相关系数基于相对排名定义相似度
- Mahout基于余弦相似度的评估
- 【JAVA实现】基于皮尔逊相关系数的相似度计算
- 【JAVA实现】基于皮尔逊相关系数的相似度计算
- 【JAVA实现】基于皮尔逊相关系数的相似度
- 大数据JAVA实现 基于皮尔逊相关系数的相似度
- JAVA实现基于皮尔逊相关系数的相似度计算
- 基于mahout的相似度算法的实现
- mahout中的相似度
- 相似度度量2:皮尔森相关系数和斯皮尔曼相关性
- marchine learning 斯皮尔曼排名相关系数
- 相似度算法之皮尔逊相关系数
- Mahout聚类中相似度计算
- mahout中的相似度算法
- Mahout系列之-----相似度
- Mahout基于对数似然比更好的计算相似度
- 基于欧式距离定义相似度推荐算法的评估
- Mahout中相似度计算方法介绍
- 迭代法
- poj 2923 Relocation(状压dp)
- STL各容器成员对比表
- Android应用之——利用type为Listview的item设置不同的布局
- storm步步深入---storm点点疑问
- Mahout:采用斯皮尔曼相关系数基于相对排名定义相似度
- MYSQL1130错误的解决方案(转)
- Java的string类为什么是不可变的
- 黑马程序员----多线程
- !HDU 1176--DP--(矩阵动规)
- uva 465 Overflow 还是高精度。。。
- 数据挖掘的EM算法
- java基础篇——异常处理简述
- ZOJ 3203 Light Bulb (三分+计算几何)