This chapter covers
 What recommenders are, within Mahout
 A first look at a recommender in action
 Evaluating the accuracy and quality of
recommender engines
 Evaluating a recommender on a real
data set: GroupLens

1.mahout in Action2.2第一个例子

Running a first recommender engine

数据:
第一个数字是用户ID 第二个是书的ID,第三个是用户对书的评分,1-5 越高,表示用户越喜欢
1,101,5.0
1,102,3.0
1,103,2.5

2,101,2.0
2,102,2.5
2,103,5.0
2,104,2.0

3,101,2.5
3,104,4.0
3,105,4.5
3,107,5.0

4,101,5.0
4,103,3.0
4,104,4.5
4,106,4.0

5,101,4.0
5,102,3.0
5,103,2.0
5,104,4.0
5,105,3.5
5,106,4.0

1-5 用户对不同书的喜好程度如下图所示:


直觉上看这个图,用户1和用户5喜好很相似,都喜欢101,对102,103只是喜欢那么一点点。可以说非常相似。1和4其次,也很相似,都很喜欢101,不怎么喜欢103。
1和2的喜好貌似完全相反,1喜欢101,而2不喜欢。等等。。。

那么。考察用户1,我们推荐什么书给他呢?

101 102 103他已经知道了,在剩下的书中,我们选取哪几个呢?直觉告诉我们,1和4,5号用户很相似,因此,我们应该用4.5的喜好推测1的喜好,进行推荐。那么4,5都很喜欢104,106,我们就应该推荐这两本书给1.

人的内心是这么思考的,代码怎么表示出来呢?



publicstaticvoid main(String[] args)throwsException{
File modelFile =null;
if(args.length >0)
modelFile =newFile(args[0]);
if(modelFile ==null||!modelFile.exists())
modelFile =newFile("intro.csv");加载文件
if(!modelFile.exists()){
System.err.println("Please, specify name of file, or put file 'input.csv' into current directory!");
System.exit(1);
}
DataModel model =newFileDataModel(modelFile);
 
UserSimilarity similarity =newPearsonCorrelationSimilarity(model);
UserNeighborhood neighborhood =
newNearestNUserNeighborhood(2, similarity, model);
 
Recommender recommender =newGenericUserBasedRecommender(
model, neighborhood, similarity);
 
List<RecommendedItem> recommendations =
recommender.recommend(1,1);推荐,对于用户1 推荐一个
 
for(RecommendedItem recommendation : recommendations){
System.out.println(recommendation);
}
 
}




程序输出:

RecommendedItem [item:104, value:4.257081]

结果说明 推荐104 因为相应的评分为4.25

下一章节讲述怎么评价这个结果,这个和我们做生物研究实验一样,就是检验自己的结果的可信性。如果检验可信度高,就可以认为我们的理论是正确的。我们生物经常用到的是T检验,K检验等等,都是经典的理论。




Charles 于2015-12-17 Phnom Penh



版权说明:
本文由Charles Dong原创,本人支持开源以及免费有益的传播,反对商业化谋利。
CSDN博客:http://blog.csdn.net/mrcharles
个人站:http://blog.xingbod.cn
EMAIL:charles@xingbod.cn

mahout in Action2.2-给用户推荐图书(1)-直观分析和代码的更多相关文章

  1. mahout in Action研读(1)-给用户推荐图书

    1.mahout in Action2.2第一个例子   Running a first recommender engine   数据: 第一个数字是用户ID 第二个是书的ID,第三个是用户对书的评 ...

  2. mahout in Action2.2-给用户推荐图书(2)-分析对用户推荐书目的结果

    2.2.3 Analyzing the output 在之前的程序运行结果中我们得到的结果输出是: RecommendedItem [item:104, value:4.257081] 程序要求选择一 ...

  3. mahout in Action2.2-给用户推荐图书(3)-评价推荐系统

    推荐系统引擎是一个工具,一种回答问题的手段,"对用户来讲什么是最好的推荐?",在研究回答的前先研究一下这个问题.一个好的推荐的准确含义是什么?如何知道推荐系统是如何生成推荐的?下面 ...

  4. 【Machine Learning】Mahout基于协同过滤(CF)的用户推荐

    一.Mahout推荐算法简介 Mahout算法框架自带的推荐器有下面这些: l  GenericUserBasedRecommender:基于用户的推荐器,用户数量少时速度快: l  GenericI ...

  5. 推荐算法之用户推荐(UserCF)和物品推荐(ItemCF)对比

    一.定义 UserCF:推荐那些和他有共同兴趣爱好的用户喜欢的物品 ItemCF:推荐那些和他之前喜欢的物品类似的物品 根据用户推荐重点是反应和用户兴趣相似的小群体的热点,根据物品推荐着重与用户过去的 ...

  6. 【推荐图书】+ 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例+C#入门经典等

    [推荐图书]+ 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例+C#入门经典等 3赞 发表于 2016/7/4 21:14:12 阅读(1921) 评论(3) 初次接触FPGA,到 ...

  7. linux 系统内核空间与用户空间通信的实现与分析<转>

    linux 系统内核空间与用户空间通信的实现与分析 2 评论: 陈鑫 (chen.shin@hotmail.com), 自由软件爱好者, 南京邮电学院电子工程系 2004 年 7 月 01 日 内容 ...

  8. Linux 系统内核空间与用户空间通信的实现与分析

    本文转载自:https://www.ibm.com/developerworks/cn/linux/l-netlink/index.html 多数的 Linux 内核态程序都需要和用户空间的进程交换数 ...

  9. GitHub Python项目推荐|瓦力Devops开源项目代码部署平台持续部署

    GitHub Python项目推荐|walle - 瓦力 Devops开源项目代码部署平台 项目热度 标星(star):8418 (很不错的实用项目,大神作品,建议关注) 标星趋势 关注(watch) ...

随机推荐

  1. <a>标签点击不跳转

    HTML中的<a></a>标签点击不跳转的方法 一.<a href="####" ></a> 使用这个方法我们会发现<a hr ...

  2. python 矩阵转置transpose

    在读图片时,会用到这么的一段代码: image_vector_len = np.prod(image_size)#总元素大小,3*55*47 img = Image.open(path)       ...

  3. poj2942 点-双联通+二分图染色

    题意:有一群骑士要坐在一个圆形的桌子上,他们之间有些人相互讨厌,所以不能挨着,要求算出一次也不能坐在桌子上的人,每次会议桌子必须奇数个人,一个人不能开会 题解:可以先建一个补图,要满足题目条件我们只要 ...

  4. 性能差异 ASP.NET WebForm与ASP.NET MVC

    一.为什么说 ASP.NET WebForm 比 ASP.NET MVC 要差? WebForm 顾名思义,微软一向主打简单化,窗体模式,拖拽控件就能做网站了, 然而这也引发了许多 Java 和 .N ...

  5. NAT123之类的软件是如何实现访问域名然后穿透到内网主机的80端口?——有公网ip就是动态域名解析,没有就是穿透+代理转发

    实际上两种都用到了:1,服务提供商(123NAT,花生壳)做Proxy转发 2,两个私网地址直接连接:STUN 和TURN 使用动态域名解析还是端口映射   什么情况下使用动态域名解析?什么情况下使用 ...

  6. AI探索(一)基础知识储备

    AI的定义 凡是通过机器学习,实现机器替代人力的技术,就是AI.机器学习是什么呢?机器学习是由AI科学家研发的算法模型,通过数据灌输,学习数据中的规律并总结,即模型内自动生成能表达(输入.输出)数据之 ...

  7. GEF入门实例_总结_02_新建初始RCP空项目

    一.前言 本节承接上一节: GEF入门实例_总结_01_教程.源码.开发环境准备 这一节我们来创建一个空的RCP项目. 二.新建RCP项目 1. New 一个 Plug-in Project 2.输入 ...

  8. LeetCode OJ:Count and Say(数数)

    The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...

  9. jquery的插件选择chosen的使用

    版权声明:本文为博主原创文章,未经博主允许不得转载.http ://blog.csdn.net/jobschen/article/details/46619443 一,文件引入 jquery // j ...

  10. .net remoting和wcf自托管——一个bug引发的警示

    一.解决问题,需要深入,并从细节入手,多从代码找原因,不能认为代码是死的,不会出错: 之前代码都运行良好,突然某一天,在我电脑上出问题了.出了问题,那就应该找出原因.其实这个问题,本身并不难,好歹给你 ...