基于欧式距离定义相似度推荐算法的评估

/*
 * 这段程序对于基于欧式距离定义相似度的评估
 * */
package byuser;

import java.io.File;

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.EuclideanDistanceSimilarity;
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
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 GenericRecByGroupLens_Evalu {

	public GenericRecByGroupLens_Evalu() throws Exception{
		DataModel model = new GroupLensDataModel(new File("E:\\mahout项目\\examples\\ratings.dat"));
		RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
		RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
			@Override
			public Recommender buildRecommender(DataModel model) throws TasteException {
				//PearsonCoreCOnrrelationSimilarity是皮尔逊相关系数的算法使用
				UserSimilarity similarity = new PearsonCorrelationSimilarity(model);

				//这里使用的是基于欧式距离定义相似度的算法
				UserSimilarity similarity1 =  new EuclideanDistanceSimilarity(model);

				UserNeighborhood neighborhood = new NearestNUserNeighborhood(100, similarity1, model);
				return new GenericUserBasedRecommender(model, neighborhood, similarity1);
			}
		};
		double score = evaluator.evaluate(recommenderBuilder, null, model, 0.95, 0.05);
		System.out.println("基于欧式距离定义相似度的推荐引擎的评测得分是: " + score);
	}
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		GenericRecByGroupLens_Evalu eva = new GenericRecByGroupLens_Evalu();
	}

}

如图:

这里是基于皮尔逊算法的评估:

这个是基于欧式距离定义相似度的评估:

可以看出,欧式的算法更加的优于皮尔逊的推荐算法

时间: 2024-11-29 07:08:32

基于欧式距离定义相似度推荐算法的评估的相关文章

Mahout:采用斯皮尔曼相关系数基于相对排名定义相似度

//此处为UserSimilarity实现引入缓存的机制 //采用斯皮尔曼相关系数基于相对排名定义相似度 //其中加入了缓存的机制,将得到的结果进行内部的缓存 //然后,当需要进行提供一个已经计算过的用户间相似度时, //就可以直接返回,而不需要进行重新的进行计算 //但是这个方法的代价很高,很耗内存 package byuser; import java.io.File; import java.io.IOException; import org.apache.mahout.cf.taste

美团网基于机器学习方法的POI品类推荐算法

美团网基于机器学习方法的POI品类推荐算法 前言 在美团商家数据中心(MDC),有超过100w的已校准审核的POI数据(我们一般将商家标示为POI,POI基础信息包括:门店名称.品类.电话.地址.坐标等).如何使用这些已校准的POI数据,挖掘出有价值的信息,本文进行了一些尝试:利用机器学习方法,自动标注缺失品类的POI数据.例如,门店名称为"好再来牛肉拉面馆"的POI将自动标注"小吃"品类. 机器学习解决问题的一般过程:本文将按照:1)特征表示:2)特征选择:3)基

基于朴素贝叶斯的内容推荐算法

论文出处: http://www.cs.utexas.edu/~ml/papers/libra-sigir-wkshp-99.pdf 引言 这篇文章里面将会详细介绍基于多项式贝叶斯的内容推荐算法的符号以及术语,公式推导以及核心思想,学习如何从文本分类的角度来实现物品推荐.详细了解算法过程后,你应该可以利用里面的公式来计算出某个用户对于单词级别的喜好强度列表(profile),根据这个强度大小来对其他物品(需先用该强度来对该物品做加权算出该物品的喜好强度)做一个推荐的排序,从而得到用户可能最喜欢的

Mahout学习系列之推荐算法

参考: 从源代码剖析Mahout推荐引擎 mahout 推荐系统示例 Mahout推荐算法API详解 使用Mahout实现协同过滤 Mahout的taste推荐系统里的几种Recommender分析 前言:Mahout框架集成了大量的常用的机器学习算法,且都支持在Hadoop分布式环境下运行,很大程度上节约了数据处理的时间成本,其中的推荐算法引擎有cf.taste包实现,它提供了一套完整的推荐算法工具库,同时规范了数据结构,并标准了程序开发过程. 1:Mahout推荐算法介绍 2:Taste接口

电商推荐算法

一. 电商推荐算法简述 目前比较多的电商模式为B2B,B2C,O2O,在本文介绍和需要举例说明的地方B2B电商模式为主. 电商推荐根据推荐内容不同分为物品推荐.商家推荐:流行的推荐应用主要有三个方面:1)针对用户的浏览.搜索等行为所做的相关推荐:2)根据购物车或物品收藏所做的相似物品推荐:3)根据历史会员购买行为记录,利用推荐机制做邮件推送或会员营销.其中推荐算法主要分为以下几个类: 1.基于用户的协同过滤推荐算法 a. 找到与目标用户兴趣相似的用户集合 b. 找到这个集合中用户喜欢的.并且目标

什么是协同过滤推荐算法?

剖析千人千面的大脑——推荐引擎部分,其中这篇是定位:对推荐引擎中的核心算法:协同过滤进行深挖. 首先,千人千面融合各种场景,如搜索,如feed流,如广告,如风控,如策略增长,如购物全流程等等:其次千人千面的大脑肯定是内部的推荐引擎,这里有诸多规则和算法在实现对上述各个场景进行“细分推荐排序”:最后是推荐引擎的算法又以“协同过滤”为最核心.最主流热门,也是当下众多内容型.电商型.社交工具.分发型的基础. 由于协同过滤的算法介绍,网上也蛮多但片段化.要么侧重讲“原理流程”,这个占了4成:要么讲算法公

互联网中常见的推荐算法

原文链接:各种互联网中常见的推荐算法锦集 我们在上网购物.看小说.买电影票的时候,都会遇到各种各样的推荐,给我们推荐一些我们曾经买过或收藏过的同类型产品,或者是推荐一些我们看过的小说题材相同的小说.那这些产品推荐都是如何实现的呢? 我们今天就来聊聊这些“无聊”的算法. 在互联网的应用中,常用的推荐算法有:协同过滤推荐算法(Collaborative Filtering Recommendation).内容推荐算法(Content-based Recommendation).相似性推荐算法(Sim

SimRank协同过滤推荐算法

在协同过滤推荐算法总结中,我们讲到了用图模型做协同过滤的方法,包括SimRank系列算法和马尔科夫链系列算法.现在我们就对SimRank算法在推荐系统的应用做一个总结. 1. SimRank推荐算法的图论基础 SimRank是基于图论的,如果用于推荐算法,则它假设用户和物品在空间中形成了一张图.而这张图是一个二部图.所谓二部图就是图中的节点可以分成两个子集,而图中任意一条边的两个端点分别来源于这两个子集.一个二部图的例子如下图.从图中也可以看出,二部图的子集内部没有边连接.对于我们的推荐算法中的

用Spark学习矩阵分解推荐算法

在矩阵分解在协同过滤推荐算法中的应用中,我们对矩阵分解在推荐算法中的应用原理做了总结,这里我们就从实践的角度来用Spark学习矩阵分解推荐算法. 1. Spark推荐算法概述 在Spark MLlib中,推荐算法这块只实现了基于矩阵分解的协同过滤推荐算法.而基于的算法是FunkSVD算法,即将m个用户和n个物品对应的评分矩阵M分解为两个低维的矩阵:$$M_{m \times n}=P_{m \times k}^TQ_{k \times n}$$ 其中k为分解成低维的维数,一般远比m和n小.如果大