mahout第一篇-----Mahout学习路线图
Mahout学习路线图
前言
Mahout是Hadoop家族中与众不同的一个成员,是基于一个Hadoop的机器学习和数据挖掘的分布式计算框架。Mahout是一个跨学科产品,同时也是我认为Hadoop家族中,最有竞争力,最难掌握,最值得学习的一个项目之一。
Mahout为数据分析人员,解决了大数据的门槛;为算法工程师,提供基础的算法库;为Hadoop开发人员,提供了数据建模的标准;为运维人员,打通了和Hadoop连接。
Mahout就是训象人,在Hadoop上创造新的智慧!
目录
- Mahout介绍
- Mahout学习路线图
- 我的学习经历
- Mahout的使用案例
1. Mahout介绍
Mahout 是基于Hadoop的机器学习和数据挖掘的一个分布式框架。Mahout用MapReduce实现了部分数据挖掘算法,解决了并行挖掘的问题。
根据”Mahout In Action”书中的介绍,Mahout实现3大类算法, 推荐(Recommendation),聚类(Clustering),分类(Classification)。
下文介绍的学习路线图,将以”Mahout In Action”书中思路展张。
2. Mahout学习路线图
Mahout知识点,我已经列在图中,希望帮助其他人更好的了解Mahout。
接下来,是我的学习经历,谁都没有捷径。把心踏实下来,就不那么难了。
3. 我的学习经历
之前,大概花了半年的时间,专门研究过Mahout,当时Mahout的资料非常少,中文资料更是仅仅几篇。直到发现了“Mahout In Action”如获至宝,开始反复地读。先不着急上手去做什么,一遍一遍地读。直到读完3遍,心理才有了一点把握。
从“推荐”算法开始,UserCF, ItemCF。 记得第一次在公司给小组讲的时候,还设计了一份问卷,我列出了10个网站,(其中6个IT大站,2个个人blog,2个社交类社区),分别让大家去投票,0-5分,0为不知道,1-5为对网站喜爱程序。
问卷结果格式:
user1, website1, 5
user1, website2, 2
user1, website3, 4
user2, website3, 2
user3, website3, 5
user4, website3, 0
…..
通过这个问卷来模拟尝试Mahout的推荐模型!计算的结果对大家来说,都是比较奇怪。为什么会有这样的推荐呢。 然后,深入Mahout源代码,看算法的实现,知道了相似度矩阵,距离算法,推荐算法,模型验证等,不同业务要求,不同的算法调用,对结果都是有影响的。把书中所有的的概念,关键词都整理过(可惜当时没写博客)。整整花了3个月,每天12个小时的强度,把推荐部分完整地学下来了。
然后,应用到实际业务中。我的任务是做“职位推荐”,我只有用户浏览职位,收藏职位,申请职位的行为数据。
第一次尝试,直接套用推荐模型,但结果非常之差。
出现问题的原因是有2点:
- 1. 职位是有时效性的,每个职位可能3个月就会过期:推荐结果包含了很多的过期职位。
- 2. 大量的用户行为都是历史的,甚至是2-3年前的:推荐结果不符合用户的预期。我估计每半年用户的职位都可能有上升,所以历史行为是不能直接用于当前用户的计算。
修改方案:
1. 对用户行为数据集进行过滤,只计算最近半年内的用户行为。
2. 对结果集进行过滤,排除过期的职位。
3. 分别用不同的算法模型计算(我记得Tanimoto的Item Base结果最好)
对于推荐结果有了大幅度的提升。故事到此就结束了!虽然我还做了更多的事情,不过这个产品由于公司结构性调整,最终没有上线。(程序员的悲哀!)
聚类模型,我把这个算法 应用在网站用户的活跃度分析。假设一个网站,注册用户1000W,每天登陆的1W。我们想了解一下,未登陆的999W用户有什么特点!!用到Mahout的k-means和Canopy做聚类,假设1000W的用户可能可以划分为5个大的群体。最后我们得到了一个结果,分享到了团队。故事又到此结束了。(实现就是这么悲哀!)
分类模型,我尝试着用Native Bayes对我的个人邮件进行垃圾分类。按机器学习的操作流程,历史数据健分词后,训练分类器,每天时时的数据通过分类器进行判断。整个自动化过程都已经完成。故事又结束了!(接受现实吧。)
其实还有一些,我争取都整理出来。
Mahout是有一定的学习门槛,而且需要跨学科的知识。只要坚持学习,没有跨不过的鸿沟!乐观努力!
mahout第一篇-----Mahout学习路线图的更多相关文章
- 开博第一篇,学习markdown
Markdown学习 其实之前自己也一直有记录,不过是Evernote记录,没有分享出来,最近看了一些牛人博客,觉得也应该分享出来.和别人多交流,多学习.所以花了几小时学了一下Markdown语法,现 ...
- 【第一篇】学习 android 事件总线androidEventbus之sticky事件的传递
最近再看eventbus相关代码,首先从使用开始,后期再从源码角度分析eventbus.使用Demo后期公布到github上去. 使用的框架地址:https://github.com/bboyfeiy ...
- 转】Mahout学习路线图
原博文出自于: http://blog.fens.me/hadoop-mahout-roadmap/ 感谢! Mahout学习路线图 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目 ...
- Mahout学习路线图
转自:http://blog.fens.me/hadoop-mahout-roadmap/ Mahout学习路线图 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, ...
- Mahout学习路线图-张丹老师
前言 Mahout是Hadoop家族中与众不同的一个成员,是基于一个Hadoop的机器学习和数据挖掘的分布式计算框架.Mahout是一个跨学科产品,同时也是我认为Hadoop家族中,最有竞争力,最难掌 ...
- RabbitMQ学习总结 第一篇:理论篇
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
- 学习KnockOut第一篇之Hello World
学习KnockOut第一篇之Hello World 笔者刚开始学习KnockOut.写的内容就相当于一个学习笔记.且在此处向官网致敬,比较喜欢他们家的Live Example版块,里面有jsFiddl ...
- ActionBarSherlock学习笔记 第一篇——部署
ActionBarSherlock学习笔记 第一篇--部署 ActionBarSherlock是JakeWharton编写的一个开源框架,使用这个框架,可以实现在所有的Android ...
- LINQ to XML LINQ学习第一篇
LINQ to XML LINQ学习第一篇 1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: public static void CreateDoc ...
随机推荐
- 状压dp找寻环的个数 Codeforces Beta Round #11 D
http://codeforces.com/problemset/problem/11/D 题目大意:给你n个点,m条边,找该图中有几个换 思路:定义dp[i][j]表示i是圈的集合,j表示该集合的终 ...
- 作为Web开发人员,我为什么喜欢Google Chrome浏览器
来源: http://www.cnblogs.com/QLeelulu/archive/2011/08/28/2156402.html 在Google Chrome浏览器出来之前,我一直使用FireF ...
- pulseaudio的交叉编译
在/etc/profile里导入 export PATH==$PATH:/home/jack/arm-linux-gcc/x-tools/arm-unknown-linux-gnueabi/bin 配 ...
- u盘烧写后实际容量变小了
百度了一下 : http://jingyan.baidu.com/article/d45ad148f383ea69552b808a.html 百度下载 USBoot 打开软件 列表中选择你的U盘,点击 ...
- asp之Eval()函数
运行字符串: a=Eval("1+1") 结果为:a=2 运行函数: function aa(a) aa=a+1 end function b=Eval("aa(2)&q ...
- Java中的一些术语的解释
一 API(Application Programming Interface,应用程序编程接口) 简单来说,就是其他人开发出来一块程序,你想用,他会告诉你调用哪个函数,给这个函数传什么参数,然后又 ...
- CodeForces 709B Checkpoints 模拟
题目大意:给出n个点的坐标,和你当前的坐标,求走过n-1个点的最短路程. 题目思路:走过n-1个点,为了使路程更短,那么不走的点只可能第一个点或最后一个点.模拟就行了,比较恶心. #include&l ...
- 问题:FF中把UL下的LI设为左浮动UL的背景色就没有了?
因为容器的子元素设置浮动后, 内容移出了文档流! 解决办法: 1.给个overflow:hidden;作为闭合浮动元素2.设定UL 一个固定的高度 下面是一些与之相关的解决办法,参考文章<那些 ...
- HTML5新特性总览
html5的革新带来了更多的功能,简单的一个标签遍可以做到很多事情,例如 (1)canvas画图,vedio视屏,geolocation等等新标签. 如何检查浏览器是否支持这些新特性? 这样就足够,改 ...
- 修改TabPageIndicator下划线的颜色
<style name="CustomTabPageIndicator" parent="Widget.TabPageIndicator"> < ...