仿佛被诸神施了诅咒一样的西西弗斯,他把一块巨石推上山顶,而由于那块巨石太重了,每每未上山顶就又滚下山去,前功尽弃,于是他就不断重复、永无止境地做这件事,而且每次都是从零开始做起。这就让我想起了杜牧《阿房宫赋》中最后一段的最后一句,换句话说,也就是"前界不暇自哀,而后界哀之;后界哀之而不鉴之,亦使后界而复哀后界也"。做大数据推荐,每界学生都要从数据的抓取或收集、数据的预处理、数据的建模、数据的评估和数据的可视化开始探索,走了很多的弯路,也花费了很多的时间,如果能将前界的经验和教训总结写来,让后界站在前界的基础之上,把时间和精力重点放在大数据推荐算法模型的建立上,走的更深,走的更远,岂不更好,于是这个博客诞生了。
一、此博客存在的意义
1、不动笔墨不读书
好记性不如烂笔头,尤其在这个信息爆炸的时代,读文献不做笔记是容易忘记的,要将暂时还没有忘却的记忆缓存序列化成为文字,让记忆成为一种永恒,而博客就是最好的载体。
2、开放、专注、传承、创新
- 开放
- 专注
- 传承
- 创新
1. Introduction
DRCP is a Distributed Machine Learning Platform based on Mahout,the functions are Distributed Storage and Distributed Computing, which is used to scientific research and learning.
2. Topology
3. Software
(1)jdk-1.7.0
(2)hadoop-0.20.2
(3) mahout-0.5.0
(4)ubuntu-12.04
说明:
这是我们的生产平台模型,以后会考虑更大的Hadoop集群以及系统升级。
三、团队运营
1、组长
- 赵海燕,研究方向:服务计算,推荐系统,社会计算,数据挖掘。
- 08级,王巧容,研究方向:服务计算等。
- 09级,陈艳兰,研究方向:服务计算等。
- 11级,袁野,研究方向:虚拟化,云计算。
- 11级,何佳,研究方向:服务计算,数据挖掘。
- 11级,席丽娜,研究方向:服务计算,数据挖掘。
- 12级,郭娣,研究方向:推荐系统,数据挖掘。
- 12级,邓华平,研究方向:推荐系统,数据挖掘。
- 13级,王升升,研究方向:推荐系统,数据挖掘,机器学习。
- 13级,熊波,研究方向:推荐系统,数据挖掘。
- 13级,刘倩玉,研究反向:推荐系统,数据挖掘。
- 14级,张健,研究方向:推荐系统,数据挖掘。
- 14级,骆金,研究方向:推荐系统,数据挖掘。
- 我们的动力是什么?
- 我们的计划是什么?
- 我们如何有效地执行?
- 我们如何有效地反馈?
- 我们如何有效地保障?
四、认识与实践
从一条宽广大路出发的人常常走投无路,而从一条羊肠小道出发的人却能够走到遥远的天边,这就是我一直提倡的人生的窄门与宽门,也感触颇深。当初做实验用的Python,因为它易于上手,但是当处理大数据的时候,比如计算100000个用户两两之间相似性的时候,速度就会很慢。有一个使一个人越陷越深的机制:一个人一旦在次要的问题上牺牲了自己理智的良心,他就不愿意轻易放弃它,他总希望用进一步的投入来证明自己选择的正确性。我们也不例外,不断地优化自己的代码,到现在为止效果依然不好,运行时间太长,没法接受。失败经过遮掩可能会导致彻底的失败,失败经过深刻反省常常又会成为一笔真正的财富。经过深刻反思,能否做出实验的关键点是SparseMatrix存储结构的设计是否合理,现在正在转向MapReduce,希望通过MapReduce解决计算性能问题。一件事物的好坏,发展的潜力与潜能,是问题还是新契机,关键看主体是否能专注凝神、敞开心胸来化转,因为凡走过必留下痕迹。
Hadoop和Spark在工业界已经成为主流,但是我并不知道中国有多少所高校在用Hadoop或者Spark在做科学研究,也不知道效果怎么样。但是,我们必须去尝试,去化解心中的疑惑,不能因为困难就停止了前进的步伐。神秘源于未知,如果一件事情你不了解,你就会感觉到它很神秘,甚至很难,好像无法认知似的。因此,对于认识问题和实践问题要有深刻的认知,为以后的发展扫平思想道路上的障碍,正确的认识和实践这个物质世界。下面是我个人的认识论和实践论指导思想:
- 认识论:任何事物都是可以被认知的,不存在不可以被认知的事物。
- 实践论:对任何事物的认知都可以通过实践而得以提高,提高的速度由对事物的认知程度和实践所采用的方法而决定。
- 认识论当中有实践论,实践论当中有认识论,如此迭代,以至无穷,构成了人类对整个物质世界的探索过程。
就像《大数据日知录:架构和算法》一书的作者所说的那样,从社会发展趋势的角度,很明显大数据会是目前肉眼可及的视野范围里能看到的最大趋势之一。从传统IT业到互联网、互联网到移动互联网,从以智能手机和Pad为主要终端载体的移动互联网到可穿戴设备的移动互联网,然后再到万物互联的物联网,这一定是不可违抗的发展规律和前进方向。伴随着这个趋势必然有越来越多、形态越来越丰富的超量数据不断产生,而大数据明显是由此衍生出来的明确且必然的发展趋势。但是,这个领域中知识的涵盖面是极其广泛的,从底层的硬件开始,到涉及基础理论、大规模数据存储系统、分布式架构设计、各种不同适用场景下的差异化系统设计思路、机器学习与数据挖掘并行算法、层出不穷的新架构和新系统等,说无所不包有些夸张但是所需要掌握知识点之多确实是很少见的。
为了解决信息过载问题,从以雅虎为代表的分类网站,到以谷歌为代表的搜索引擎,再到现在的推荐引擎。推荐引擎是是大数据时代的产物,是大数据的典型应用,推荐引擎的任务就是联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息生产者的双赢。现在的推荐引擎基本上还在PC端,但是随着移动互联网时代的兴起,推荐引擎在移动端肯定会更有作为,因为移动端的屏幕更小,更需要推荐,而且大数据和移动互联网天生就是最好的搭档,同时诞生,相互促进。
做推荐算法模型很难,作出好的效果来更是难上加难,因为预测未来本身就是一件极其困难的事情。目前,推荐算法主要有基于内容的推荐、协同过滤推荐、基于知识的推荐,基于关联规则的推荐,基于效用的推荐以及混合推荐等。常见的模型有相似模型,信任模型,时间模型,主题模型等。推荐系统广泛应用在社交、广告、资源分享等众多互联网行业中,例如社交网络、视频网站和微博等,根据收集的用户特征(兴趣、标签、历史活动、地里位置信息、购买能力等),为用户推荐完全个性化的信息或资源,而且还可以根据不断更新的用户信息实时做出推荐。总之,坚信在信息过载的大数据时代,个性化推荐的明天会更加的美好。
大数据推荐算法模型本身并没有什么固定的套路,很多方法都可以用来做推荐模型,只要效果好就行,因此涉及到的知识也是极其广泛的,因为很多学科的思想都可以用来借鉴。比如,信息检索,数据挖掘,机器学习,自然语言处理,图像图像,模式识别,机器视觉,人工智能等。但是,最最重要的还是打牢数学和统计学的基础,提高对数据的解读能力,理解数据背后的物理意义,只有这样才能选择好用什么样的模型起到最好的效果,是使用多项式回归模型,还是支持向量机模型,还是神经网络模型,甚至深度学习和量子模型等。总之,不能生搬硬套,要打牢数学和统计学的基础,提高对数据的解读能力,深刻理解数据模型的适用条件,根据适用场景下的差异化选择合适的数据模型来解决遇到的问题,这才是根本。
六、对大数据推荐的实践
基于DRCP平台,我们计划开发一个基于MapReduce的分布式推荐算法类库——Conquer,主要包括两种算法,一种是常用推荐算法的实现,一种是我们研究成果的实现,以后还会考虑将经典的机器学习算法融入Conquer之中。以后还要多读一些优秀的的开源类库,比如Mahout,word2vector等,通过阅读源码,学习软件的设计理念,并将这些优良的思想融入Conquer之中,最终将Conquer打造成为一个优秀的推荐平台,具体组件如下所示:
- 分布式网络爬虫组件
- 数据预处理组件
- 分布式数据存储组件
- 分布式推荐算法组件
- 推荐算法评估组件
- 数据可视化组件