只接受发布货源信息,不可发布违法信息,一旦发现永久封号,欢迎向我们举报!
1064879863
16货源网 > 餐饮行业新闻资讯 > 网站建设哪家公司好 >  如何入门大数据(数据挖掘方面)?


如何入门大数据(数据挖掘方面)?

发布时间:2019-09-02 15:19:58  来源:网友自行发布(如侵权请联系本站立刻删除)  浏览:   【】【】【
你可以参照下我之前的回答。如何迅速成长成为一名数据分析师? - Terry Meng 的回答看你的背景可以说差不多符合一个data scientist的要求,我下面建议的比较针对你目前的情况:1. 技
如何入门大数据(数据挖掘方面)?你可以参照下我之前的回答。
如何迅速成长成为一名数据分析师? - Terry Meng 的回答

看你的背景可以说差不多符合一个data scientist的要求,我下面建议的比较针对你目前的情况:
1. 技术
如果你想走应用方面,那么可以去一些机器学习的网站找一些challenge 来做,比如kaggle, 锻炼下怎么应用stats在实际的解决方案。
2. 行业
能把数据分析的基本功练好的地方不多,保险金融银行互联网,随便进一个先,把习惯养好,基本功打扎实 。特别是对数据的validation, business acumen, analysis hypothesis等等,这些比拟会几个模型更来得重要。

不出一年,你就不会再来问这种问题了。我之前有个回答,是根据去年阿里的大数据竞赛写的入门,希望对你有帮助,而且阿里今年有大数据竞赛的联赛。
本科数学,目前在读计算机研一,毕业的时候想要应聘数据挖掘工程师,看了对数据挖掘工程师的招聘要求,感觉太宽泛了,希望能具体说一下现在应该准备哪些知识(算法?编程语言?其他?),谢谢! - 知乎用户的回答
-----------------------------------------------广告------------------------------------------------------
各位老师、同学,帮忙转发宣传一下哈,阿里大数据竞赛之【余额宝资金流入流出预测】,6-3 在南大召开沙龙,这次的题目参赛人数比之前的购买预测赛题少了很多,拿奖几率绝对大多了!也是不可多得的学习机会!
天池师哥带你打比赛 之《大数据与时间序列预测》半年前从纯数学专业转行到了互联网行业做数据挖掘和推荐系统,在做具体的业务的时候遇到了一些知识点,于是自己整理出来。如果有后来人需要转行的话,可以用这份资料来参考一下。大牛请忽视以下的内容,小白可以参考下。

从数学专业转行到工业界做数据挖掘需要的知识储备:
1. Hadoop,HIVE,SQL数据库操作需要会。
Hive用于提取数据,做基本的数据分析。hive的基本函数,比如聚合函数,数学函数,字符串的函数,连接表格函数等。hive的各种语句,比如if else,case等语句。
EXCEL的基本操作需要掌握,用熟悉了其实挺方便的。

2. 编程语言最好会python,c/c++,或者java,至少一种。做机器学习的话感觉用python会多一些。

3. Linux系统,脚本语言Shell。

4. 数据挖掘和机器学习的基础知识和算法:
LR,SVM,聚类算法,神经网络算法,决策树,随机森林,GBDT,异常值检测等常用算法需要掌握。
特征工程的基础知识:根据相应的产品进行必要的特征构造,物品特征,交叉特征等。

其中LR使用广泛:由于LR是使用线性方法来处理非线性的问题,导致特征工程十分复杂,交叉项多(二维或者三维的交叉)。

工程上的最优化论文推荐:
Ad Click Prediction a View from the Trenches:
需要了解的是相关论文的背景SGD算法,Truncated Gradient算法,RDA算法,FOBOS算法,FTRL算法等。

5. 统计学:
时间序列模型,变量的相关系数,ROC和AUC曲线,交叉验证,主成分分析。

6. 大数据,推荐系统,计算广告学的科普书籍。

我是一个从传统行业转行到数据挖掘的应届生,我从我的角度回答一下这个问题吧,希望能对其他的同学有帮助,不过毕竟是个人经历,有一定的局限性,还请大家以批判的眼光看待这篇回答。



1. 前言

答主是2017应届毕业生,已签美团的数据挖掘岗,本次秋招一共投递了39份简历,做了19场笔试,面了12家公司,从一开始的完全不自信,到被折磨的要死但还是坚强的活下来,到最后的各种坦然,成长了许多。


答主本硕均是机械专业,在校学习成绩中等偏上,原本想从事嵌入式方向的工作,无奈学了两个月被导师叫停,说没有项目学完就忘,遂作罢。研二上在没有目标的情况下系统的学习了C++和数据结构,入门了Python。研二下开始学习机器学习相关知识,从四月下旬开始出差给导师做无聊的项目,白天出去搬砖,晚上回来学习,暑假没回家继续学习(暑假其实就两周),直到八月底开始找工作。


整个自学的过程一年左右,主要内容有计算机专业的基础知识,基础的机器学习知识,由于时间的原因,没有学hadoop和spark,这点确实是短板,各位如果有时间,最好能看看。



2. 基础知识自学

面试的时候一般先问基础知识:编程语言,数据结构和算法,操作系统和网络编程(数据库相对而言问的比较少),前两部分非常重要!如果前两部分非常熟悉,后两部分稍微会一点都能过面试,但是前两部分只会一点或者不会,九成九会跪在一面。答主就是前两部分比较熟悉,后两部分背了背常见的面试题,所有的面试都走到了终面。



2.1 编程语言

编程语言常问的是C/C++和Java,答主学的是C++。我首先把C语言圣经《C程序设计语言》详细的看了一遍,然后系统的看了《C++ Primer》(这本书已经出到第五版了),如果其他同学时间充裕的话,可以再把《Effective C++》看一下。


此处说明一下,看书不是简单地“看”,而是不看书能手敲出书上的例子,能独自做课后题。在这个过程中,常常会发现自己写的代码和书上代码,参考答案的代码有一些不一样,重点分析不一样的部分,会有很大的收获。我常常用笔抄一些关键代码,然后在纸上画出一个章节的简单思维导图,默记一会,把纸扔掉,最后把没有记住的知识点总结在为知笔记中,每过一段时间复习一下。


如果学的是C++,学完以后,要能回答下面的问题:内存怎么管理,const有什么用,引用和指针的区别,虚函数和纯虚函数,虚函数表,继承,重载和多态,模板函数,模板类,容器等相关知识。



2.2 数据结构和算法

网上大多人推荐的是《算法导论》或者《数据结构与算法分析(C语言描述)》,《算法导论》确实是一本很牛逼的书,但是真的太难啃了,不适合“快速学习”,这里我推荐《算法(第4版)》,这本书使用Java讲解常见的算法,但是完全木有关系,Java零基础的我看起来没有任何压力,因为该书几乎没有用到Java的任何特殊语法。


仅仅看《算法(第4版)》是不够的,还需要《剑指offer》和《程序员代码面试指南》,《剑指offer》一定要多看几遍,里面的题目真的被考烂了,被问到原题的概率很大。《程序员代码面试指南》属于提升书籍,里面按照专题把题目归类了,强烈建议把动态规划专题看一遍。


如果只会算法而不能把代码写出来,也不行,锻炼这个能力只能靠OJ了。这里推荐去牛客网刷题,可以先刷《剑指offer》或者学习《直通BAT面试算法精讲课》,然后再刷leetcode专题,刷leetcode的时候可以按照网上推荐的顺序刷,非常舒服(第一次做的时候,可以先跳过hard,最后再做)。


数据结构和算法常考的是堆,栈,排序,链表,二叉树和动态规划等,相关的问题多练练,面试的时候才能写得比较快。有句话这么说,考试并不是让考生在考场上把不会的题做出来,而是检查考生会什么,不会什么,仅此而已。面试的时候,如果反应快一点,能给面试官留下很好的印象。



2.3 操作系统和网络编程

这里答主没怎么学,时间不够,看了几章《深入理解计算机系统》就看不下去,罪过。。。


后来就去搜索常见的面试题:进程和线程的区别有哪些?进程/线程间如何通信?如何防止线程死锁?TCP三次握手四次挥手是个什么步骤?我把这些问题的答案背下来,等面试官问我的时候我再背出来,然后坦白自己没有学过操作系统和网络编程,这些都是我在网上找答案背的,再深一点我也不会了。一般情况下,面试官的表情会比较诧异,不过也就不再讨论这个话题了。


这部分怎么学我不清楚,各位还是咨询计算机专业的同学或者看看别的答案吧。



2.4 个人学习历程

答主花了半年时间(研二上)点了编程语言,数据结构和算法的技能点,顺道点了一些别的小技能点。这段时间主要看了《C++ Primer》,《算法(第4版)》,《Learn Python The Hard Way》,《鸟哥的Linux私房菜》,按照廖雪峰的教程把git学了一下,开始用markdown写博客。



3. 机器学习自学

今年的机器学习很火,稍微大一点的公司都招这个方面的人才,我的感觉大多人都是自学的,貌似本科开这个专业的学校很少?


个人理解的机器学习主要有三个方向(按照岗位要求分):数据挖掘,自然语言处理和深度学习。数据挖掘主要是搜索排序,反作弊,个性化推荐,信用评价等;自然语言处理主要是分词,词性分析等;深度学习主要是语音和图像识别。

(此处经知友 @吴文君 提醒,数据挖掘是一个较为宽泛的概念,包含机器学习,自然语言处理和深度学习,我在这里把概念搞混了,大家不要被我误导哈)


我找的是数据挖掘方向,所以就说说这个方向的个人学习经验吧。


主要准备两个方面,一方面是掌握常见机器学习算法原理,另一方面是应用这些算法并解决问题。



3.1 常见机器学习算法

和大部分人一样,我是看吴恩达老师的《机器学习》视频入门的,看了两遍,说实话第一遍自己以为懂了,看第二遍的时候才发现第一遍的懂了是“假懂”,第一遍懂得就是皮毛。吴恩达的视频有两个版本,一个是网易公开课在教室讲课录制的版本,另一个是在自己办公室录制的版本,我看的是在办公室录制的版本,看了网易公开课版本的目录之后,个人感觉网易公开课的要难一点。


看完视频以后,需要自己动手实践加深理解,这里我主要看《机器学习实战》和《统计学习方法》,前者全是实践没有理论,后者全是理论没有实践,所以结合起来学习非常棒。我主要按照《机器学习实战》的目录学,涉及到什么机器学习模型,就去《统计学习方法》中看该模型的数学推导及证明,然后把《机器学习实战》上的代码敲一遍,验证一遍。


后来市面上出了一本很好的机器学习教材:周志华老师的《机器学习》。我现在的建议是主要按照《机器学习》的结构走,《机器学习实战》和《统计学习方法》作为辅助,《机器学习实战》有对应模型的代码就敲一遍,没有就算了;《统计学习方法》的证明一般比《机器学习》更深一点,有对应的证明就看,没有就算了。


上面三本书吃透,基础就差不多了,但是面试的时候会发现,除了DT,LR,SVM问得比较多之外,随机森林和GBDT问的也非常多,以及参数如何调整,模型如何评价等等。这些东西只能求助于搜索引擎和论文了,暂时没有别的系统的学习方法。


补充一下,推荐算法问的也比较多,把项亮的《推荐系统实践》好好看就行了。


学完这个部分应该会的问题,我放在了最后,以免影响排版。



3.2 应用这些算法并解决问题

在实际的工作中,硕士生其实大多是用算法而不是发明算法,所以还得学会怎么用算法解决实际问题。这里建议参加Kaggle的比赛,都是比较实际的问题,而且还有排名,面试的时候也有一定的说服力。


这里主要学一些Python的包就行了,如numpy,pandas,matplotlib和sklearn等,推荐一本五星级好书:《利用Python进行数据分析》。


这一部分关于特征处理的问题问的比较多,比如怎么选相关特征,如何清洗数据,以及选取什么样的机器学习模型。



3.3 个人学习历程

机器学习部分答主也花了半年的时间学习(研二下),看了《机器学习实战》和《统计学习方法》,《机器学习》只看了几章,《利用Python进行数据分析》看了一大半,《推荐系统实践》看了一半。机器学习相关的东西得经常复习,尤其是推导部分,SVM的推导我每隔几周复习一次,每次都有新的收获。


自己写了一个豆瓣爬虫,爬了豆瓣11W多网页共4W本书,利用PyQt写了一个界面,使用基于物品的协同过滤算法推荐书籍。


这段时间还走了点弯路,报了个课程,写了一个图片分享网站,学了一些前端和后台的东西,如HTML,CSS,JavaScript和Flask等等,本来是想学完这个,把书籍推荐的那个项目从单机版做成网页版,服务于他人,结果根本没时间,做不到那一步,面试也从来没问过这些东西,囧……



4. 其它

做数据挖掘不可避免的要接触大数据,目前常用的大数据框架就两个,Hadoop和Spark,如果会一个就很有优势,在美团实习的同学说这两个都用……所以建议看完C以后,不学C++,学Java,因为Hadoop的原生开发语言是Java,资料多;相应的Spark的原生开发语言是Scala,不过也有Python的API。


具体学Hadoop还是Spark,学Java还是Scala,大家还是在拉勾网上面看自己心仪岗位的要求。反正答主目前是在恶补Java和Hadoop,希望在入职前补上短板。



5. 校招

每年3、4月份各大厂会招很多实习生,尽量出去实习,面试的时候有实习经历很有优势,哪怕公司比较小,只要你实际上在认真的做项目就可以了,有人带怎么都比自学好。答主原本计划出去实习,但是导师根本不放,心好累。


面试主要有两点要说,一是一定要先去面一下不想去的公司,熟悉一下面试流程和套路,二是一定要多看面经。答主花了两天看了近200篇机器学习岗的面经,把问题和答案都整理了一下,收获很大,后面面试碰到了好多原题。


对于答主来说,最难的不是面试,而是笔试,笔试范围广,难度大,今年要是不能全AC,进面试很难。怎么办?想办法内推吧,避免参加笔试,内推从7月份就开始了,多找学长问问,没有学长,就去论坛上发帖求内推,要不然9月份笔一次挂一次,会严重怀疑人生。



6. 推荐书单

先说答主看过的,质量保证:
C/C++:《C程序设计语言》,《C++ Primer》
数据结构和算法:《算法(第4版)》,《剑指offer》,《程序员代码面试指南》
机器学习:《机器学习》(周志华),《机器学习实战》,《统计学习方法》,《推荐系统实践》
Python:《Python核心编程(第二版)》,《利用Python进行数据分析》


其中《Python核心编程(第二版)》有点厚,像字典,不适合遍历,网上都推荐《Python基础教程》,应该也不错。


没看过的,但是评价也不错的:《Effective C++》,《STL源码剖析》;《编程之美》,《编程珠玑》;《数据挖掘导论》,《集体智慧编程》,《模式识别和机器学习》,《凸优化》;《深入理解计算机系统》,《操作系统》,《计算机程序的构造和解释》,《代码大全》,《Head First 设计模式》,《代码整洁之道》,《程序员的自我修养》。


这些书足够看3-5年了,233~



7. 小结
  • 一定要耐得住寂寞,守得住孤独,没有人和你讨论问题,就去网上求助
  • 一定要动手实践并且随时做笔记,要不然忘得很快
  • OJ尽早开始刷,最晚7月开始,9月前至少做完200~300道题
  • 能实习就实习,不能实习一定要参加Kaggle比赛
  • 常见的机器学习模型都能推导,会调参,能说优缺点,能和别的模型比较


彩蛋——常见机器学习问题
  • 什么是bias和variance
  • k折交叉验证中k取值多少有什么关系
  • 分类模型和回归模型的区别是什么
  • 为什么会产生过拟合
  • 如何解决过拟合
  • 写出信息增益,信息增益比和基尼系数的公式
  • 写出LR的目标函数和损失函数
  • LR和SVM的异同
  • 推导SVM
  • SVM在哪个地方引入核函数
  • 常用的核函数有哪些,说说它们的特点及调参方式
  • 随机森林的学习过程
  • 随机森林的优缺点
  • GBDT和随机森林的区别
  • 如何判断决策树过拟合
  • 线性分类器与非线性分类器的区别及优劣
  • 特征比数据量还大时,选择什么样的分类器
  • L1和L2正则的区别,如何选择L1和L2正则
  • 多分类怎么处理
  • 如何进行特征选择
  • 吐槽一个推荐算法,并提出修改意见

参考我在另一个问题下的回答:如何快速成为数据分析师? - 张宏伦的回答 - 知乎

如果有理工硕士背景,相关的东西学起来应该都挺快的

数据挖掘相关的职位包括数据挖掘工程师、算法工程师、机器学习工程师,这些职位负责数据建模、机器学习和算法实现,需要熟悉算法和精通计算机编程。

一般来说,数据挖掘有两个门槛:

第一个门槛是数学

首先,机器学习的第一个门槛是数学知识。机器学习算法需要的数学知识集中在微积分、线性代数和概率与统计当中,具有本科理工科专业的同学对这些知识应该不陌生,如果你已经还给了老师,我还是建议你通过自学或大数据学习社区补充相关知识。所幸的是如果只是想合理应用机器学习算法,而不是做相关方向高精尖的研究,需要的数学知识啃一啃教科书还是基本能理解下来的。

第二个门槛是编程

跨过了第一步,就是如何动手解决问题。所谓工欲善其事必先利其器,如果没有工具,那么所有的材料和框架、逻辑、思路都给你,也寸步难行。因此我们还是得需要合适的编程语言、工具和环境帮助自己在数据集上应用机器学习算法。对于有计算机编程基础的初学者而言,Python是很好的入门语言,很容易上手,同时又活跃的社区支持,丰富的工具包帮助我们完成想法。没有编程基础的同学掌握R或者平台自带的一些脚本语言也是不错的选择。


那么数据挖掘如何入行呢?PPV课的建议如下:

  • Make your hands dirty

数据挖掘和机器学习的工作流程:

  1. 数据建模:将业务问题抽象为数学问题;

  2. 数据获取:获取有代表性的数据,如果数据量太大,需要考虑分布式存储和管理;

  3. 特征工程:包括特征预处理与特征选择两个核心步骤,前者主要是做数据清洗,好的数据清洗过程可以使算法的效果和性能得到显著提高,这一步体力活多一些,也比较耗时,但也是非常关键的一个步骤。特征选择对业务理解有一定要求,好的特征工程会降低对算法和数据量的依赖。

  4. 模型调优:所谓的训练数据都是在这个环节处理的,简单的说就是通过迭代分析和参数优化使上述所建立的特征工程是最优的。

这些工作流程主要是工程实践上总结出的一些经验。并不是每个项目都包含完整的一个流程,只有大家自己多实践,多积累项目经验,才会有自己更深刻的认识。

翻过了数学和编程两座大山,就是如何实践的问题,其中一个捷径就是积极参加国内外各种数据挖掘竞赛。国外的Kaggle和国内的阿里天池比赛都是很好的平台,你可以在上面获取真实的数据和队友们一起学习和进行竞赛,尝试使用已经学过的所有知识来完成这个比赛本身也是一件很有乐趣的事情。

另外就是企业实习,可以先从简单的统计分析和数据清洗开始做起,积累自己对数据的感觉,同时了解企业的业务需求和生产环境。我们通常讲从事数据科学的要”Make your hands dirty”,就是说要通过多接触数据加深对数据和业务的理解,好厨子都是食材方面的专家,你不和你的“料”打交道,怎么能谈的上去应用好它。

  • 摆脱学习的误区

初学机器学习可能有一个误区,就是一上来就陷入到对各种高大上算法的追逐当中。动不动就讨论我能不能用深度学习去解决这个问题啊?实际上脱离业务和数据的算法讨论是毫无意义的。上文中已经提到,好的特征工程会大大降低对算法和数据量的依赖,与其研究算法,不如先厘清业务问题。任何一个问题都可以用最传统的的算法,先完整的走完机器学习的整个工作流程,不断尝试各种算法深挖这些数据的价值,在运用过程中把数据、特征和算法搞透。真正积累出项目经验才是最快、最靠谱的学习路径。

  • 自学还是培训

很多人在自学还是参加培训上比较纠结。我是这么理解的,上述过程中数学知识需要在本科及研究生阶段完成,离开学校的话基本上要靠自学才能补充这方面的知识,所以建议那些还在学校里读书并且有志于从事数据挖掘工作的同学在学校把数学基础打好,书到用时方恨少,希望大家珍惜在学校的学习时间。

除了数学以外,很多知识的确可以通过网络搜索的方式自学,但前提是你是否拥有超强的自主学习能力,通常拥有这种能力的多半是学霸,他们能够跟据自己的情况,找到最合适的学习资料和最快学习成长路径。如果你不属于这一类人,那么参加职业培训(www.ppvke.com)也许是个不错的选择,在老师的带领下可以走少很多弯路。另外任何学习不可能没有困难,也就是学习道路上的各种沟沟坎坎,通过老师的答疑解惑,可以让你轻松迈过这些障碍,尽快实现你的“小”目标。

数据挖掘和机器学习这个领域想速成是不太可能的,但是就入门来说,如果能有人指点一二还是可以在短期内把这些经典算法都过一遍,这番学习可以对机器学习的整体有个基本的理解,从而尽快进入到这个领域。师傅领进门,修行靠个人,接下来就是如何钻进去了,好在现在很多开源库给我们提供了实现的方法,我们只需要构造基本的算法框架就可以了,大家在学习过程中应当尽可能广的学习机器学习的经典算法。

  • 学习资料

至于机器学习的资料网上很多,大家可以找一下,我个人推荐李航老师的《统计机器学习》和周志华老师的《机器学习》这两门书,前者理论性较强,适合数学专业的同学,后者读起来相对轻松一些,适合大多数理工科专业的同学。

搜索“AI时代就业指南”可了解更多大数据相关职业规划信息

具体的转岗方法论,已有的回答已经非常完整了,那么如果从具体的雇主招聘需求上看,如何向大数据方向靠拢呢?

本次回答主要包括以下三个方面:

  1. 可供工程师选择的大数据岗位
  2. 从雇主需求看,如何发掘自己转岗优势
  3. 为转岗工程师提供的建议

ps:本回答较长,读完约要6分钟。


可供工程师选择的大数据岗位

大数据平台/开发工程师

他们的工作重心在于数据的收集、存储、管理与处理。通常比较偏底层基础架构的开发和维护,需要这些工程师对 Hadoop/Spark 生态有比较清晰的认识,懂分布式集群的开发和维护。熟悉 NoSQL,了解 ETL,了解数据仓库的构建,还可能接触机器学习平台等平台搭建。有些大数据开发工程师做的工作可能也会偏重于应用层,将算法工程师训练好的模型在逻辑应用层进行实现,不过有些公司会将此类工程师归入软件开发团队而非大数据团队。

算法&数据挖掘工程师

此类工程师的工作重心在于数据的价值挖掘。他们通常利用算法、机器学习等手段,从海量数据中挖掘出有价值的信息,或者解决业务上的问题。虽然技能构成类似,但是在不同团队中,因为面对的业务场景不同,对算法 & 数据挖掘工程师需要的技能有不同侧重点。因而这个类目下还可细分为两个子类:

1. 算法工程师

这类团队面对的问题通常是明确而又有更高难度的,比如人脸识别、比如在线支付的风险拦截。这些问题经过了清晰的定义和高度的抽象,本身又存在足够的难度,需要工程师在所研究的问题上有足够的专注力,对相关的算法有足够深度的了解,才能够把模型调到极致,进而解决问题。这类工程师的 Title 一般是「算法工程师」。

2. 数据挖掘工程师

有的团队面对的挑战不限于某一个具体问题,而在于如何将复杂的业务逻辑转化为算法、模型问题,从而利用海量数据解决这个问题。这类问题不需要工程师在算法上探索得足够深入,但是需要足够的广度和交叉技能。他们需要了解常见的机器学习算法,并知晓各种算法的利弊。同时他们也要有迅速理解业务的能力,知晓数据的来源、去向和处理的过程,并对数据有高度的敏感性。这类工程师的 Title 以「数据挖掘工程师」居多。


了解了市面上有哪些可以转为大数据方向的岗位后,公司都希望能够招聘到一个怎样的大数据工程师呢?
基础的逻辑、英文等素质是必须的,聪明、学习能力强是未来成长空间的保障,计算机基础需要扎实,最好做过大规模集群的开发和调优,会数据处理,还熟悉聚类、分类、推荐、NLP、神经网络等各种常见算法,如果还实现过、优化过上层的数据应用就更好了……

嗯,以上就是招聘方 心中完美的大数据相关候选人形象。

但是,如果都以尽善尽美的标准进行招聘的话,恐怕没几个团队能够招到人。现在大数据、数据挖掘火起来本身就没几年,如果想招到一个有多年经验的全才,难度不是一般的高。
因此对于雇主而言,如何调整招聘中的取舍,成为想要转岗大数据方向的工程师的突破口:

从雇主需求看,如何发掘与培养自己转岗优势

1. 挖掘长处,发挥优势匹配岗位

以某一家计算机视觉领域的大数据公司的招聘需求为例,该团队中既需要对算法进行过透彻研究的人才,把图像识别有关算法模型调整到极致,也需要工程实力比较强的人才,将训练好的算法模型在产品中进行高性能的实现,或者帮助团队搭建一整套视频图像数据采集、标注、机器学习、自动化测试、产品实现的平台。

对于前一种工程师,他需要在深度学习算法甚至于在计算视觉领域都有过深入的研究,编程能力可以稍弱一些;而对于后一种工程师,如果他拥有强悍的工程能力,即使没有在深度学习算法上进行过深入研究,也可以很快接手对应的工作。

即使在算法工程师团队内部,不同成员之间的技能侧重点也可能各不相同。

比如某一资讯内容推荐公司的算法团队中,一部分工程师会专注于核心算法问题的研究,对解决一个非常明确的问题(比如通过语义分析进行文章分类的问题,如何判断「标题党」的问题等等),他们需要有足够深度的了解;另外一部分工程师,则专注于算法模型在产品中的应用,他们应该对业务非常有 sense,具备强悍的分析能力,能够从复杂的业务问题中理出头绪,将业务问题抽象为算法问题,并利用合适的模型去解决。两者一个偏重于核心算法的研究,一个偏重业务分析与实现,工作中互为补充,共同优化个性化内容推荐的体验。

对于后者来说,因为对核心算法能力要求没有前者那么高,更重视代码能力与业务 sense,因而这个团队可以包容背景更丰富的人才,比如已经补充过算法知识的普通工程师,以及在研究生阶段对算法有一些了解的应届生。

看了两个公司的例子之后,我们来看一个具体应用的例子,本来主要从事利用GPU服务器进行运算加速工作的宋翔,在公司的需求下,转型从事机器学习平台的开发和平台搭建工作。
对于宋翔而言,他了解如何让算法在机器上运转得够快,才能够缩短模型迭代的时间,加速模型优化的过程。而大部分算法工程师可能对此了解甚少,宋翔就可以充分发挥自己的特长,利用硬件和底层系统加速机器学习算法。

当需要训练的数据量特别大的时候,比如几十 T 以上甚至 PB 级的时候,在分布式系统中, I/O 或者网络可能成为瓶颈了,这时需要系统工程师的介入,看怎么优化数据传输使得 I/O 的使用率提高;看怎么去存储,用 HDFS 还是用 Key Value Store 或者其他存储方式,可以让你更快地拿到数据去计算,或者你用磁盘的存储还是 SSD 存储 或者 in-memory 的存储。这其中,系统工程师也需要平衡成本和效率之间的关系。 系统工程师还可以帮助你设计一个系统,让算法工程师快速地提交任务,或者方便地同时训练多个模型,尝试多个参数 系统工程师非常擅长把本来串行的工作拆分之后变成并行工作。比如可以把数据预处理和深度学习运算做一个并发,等等

除了对底层系统有深入了解之外,宋翔现在也在了解机器学习的算法。他带领的小团队中,除了有2名系统工程师之外,还有两名算法工程师,他一直鼓励两种工程师互相学习,共同提高,这样才能够让整个团队效率最大化。如果系统工程师对算法不了解的话,可能也不知道怎么去优化算法运行的效率;算法工程师也应大概了解不同模型在CPU、GPU机器上的运算速度,帮助自己设计出更高效的算法。

对于期望转岗为大数据相关的普通工程师来说,一旦通过自身擅长的技能切入新团队之后,就有了更多横向发展的机会,帮助自己在大数据相关领域建立更强竞争力。


2. 如果现阶段技能水平不能匹配:扎实基础,展现自身可成长性

成长空间一直是一个老生常谈的问题。这个问题在当前市场供给偏少的大数据相关领域,更加突出。那么,为什么成长空间这么重要?与其说是成长空间,不如说是看中了这些工程师背后的潜力。这些有成长性的工程师可以利用已有的工程实力完成一部分基础工作,并在经过1-2年的锻炼之后,接手更复杂的问题。

从大数据方向金字塔技能模型上看:

越是偏金字塔底部的素养,对于企业来说越是重要。最底部的基础素养,代表的是未来的成长空间。当前互联网高速发展,每家企业都是跑步前进,如果一个当前技能不错的工程师,未来成长空间有限,也可能变成企业的负担。

再上一层的计算机基础 - 基本的算法与数据结构,某一门编程语言的精通,是几乎每个工程师岗位都重视的能力。一个基础不扎实的程序员,可能会让企业怀疑其学习能力。扎实的基础,会为应用技能的学习扫除障碍,更容易建立深度的理解;而数学基础对于算法理解上的帮助十分重要。

这最下方的两层构成了一个工程师人才的基础素养。如果底层的基础比较扎实,掌握应用层技能所需要的时间也许比我们预想的要少一些。

TalkingData 的技术 VP&CTO 闫志涛在操作(招聘)环节中的具体考虑如下:

TalkingData 的大数据工程师工作中非常依赖 Spark 技能,但是了解 Spark 本身并没有那么难,因而候选人的 Spark 技能对我而言并不是最强吸引点。 相比于对 Spark 了解更多的人,我更愿意招收那些 Java 学得好的人。因为 Spark 的接口学习起来相对容易,但是要想精通 Java 是一件很难的事情。 如果你把 Java 或者 C++ 学透了,你对计算机技术的认识是不一样的。这其实是道和术的问题。

在 100offer 平台上就有这样靠扎实的个人功底和成长空间转岗成为大数据人才的候选人。
曾在中国移动负责机顶盒业务的后端架构进行服务化转型工作的赵平抱着对基础平台架构的浓厚兴趣加入宜信。他在这家公司做的第一个项目是分布式存储系统的设计和开发。第一个项目完美收官之后,他的学习能力、基础能力备受褒奖。当宜信开始组建大数据平台团队时,赵平看到了自己理想的职业发展方向并提交了转岗申请,基于他过往的优异表现,顺利地拿到了这个工作机会。

转岗之后,赵平也遇到了一些挑战,比如大数据涉及的知识点、需要用到的工具更加丰富,Spark,Scala,HBase,MongoDB…,数不清的技能都需要边用边学,持续恶补;比如思维方式上,需要从原来的定时数据处理思维向 Spark 所代表的流式实时处理思维转变。不过基于他扎实的基础,以及之前做分布式存储系统经验的平滑过渡,加之整个团队中良好技术氛围的协助,最终顺利完成第一个大数据项目的开发工作。


转岗建议

  1. 重视基础。无论各种岗位,基础是成长的基石。
  2. 发挥专长。从能够发挥自己现有专长的岗位做起,可以让新团队更欢迎你的加入。比如算法模型的工程化,偏重于业务的数据挖掘,大数据平台开发,机器学习系统开发等等,这些工作对于普通工程师更容易上手。而普通工程师直接转偏研究方向的算法工程师,难度更高。
  3. 准备充分。请预先做好相关知识的学习,有动手实践更佳。如果没有一点准备,雇主如何相信你对这个领域真的有兴趣呢?
  4. 考虑同公司转岗。在同公司转岗阻力更小。亦可考虑加入一家重视大数据的公司,再转岗。

其实发现兴趣之后,最能帮助你靠近他的其实就是先开始学习、操练起来。越靠近,才能越明白中间的距离和能够让自己抵达的方式。

相关干货:

免费pdf电子书下载:2018秋季数据科学行业人才流动报告

Live(注册免费领票):大数据工程师如何实现技术成长?

干货:如何快速成长为一名出色的算法工程师?


如果感到有启发,请按左下角的赞。

我也是转行自学的,自己也写了一些总结,看看对你有没有帮助

http://mp.weixin.qq.com/s/JmADqEqUCNurCKBCT-xn6Q

大数据分析与挖掘不只是掌握一些数学知识就可以的!需要学习编程语言!

当然你有理工科硕士背景,学习编程也比文科学生要容易很多!

下面我就说一下学习大数据需要学习哪些编程语言和工具


想自学或先了解一下的话,可以关注知乎专栏:从头学习大数据


1、基础知识:javaSE+linux

学习大数据技术的基础知识,就是java和linux,如果有java基础可以跳过

2、HADOOP-hive-oozie-web-flume-python-hbase-kafka-scala-SPARK


课程大纲附上:

一个大数据开发者应该具备的技能修养,以一个大数据开发工程师的角度的总结:

一个大数据工程师应该具备的技能“修养”,以思维导图的方式总结:

数据结构和算法是基础

设计模式是思想

大数据工具组件是技能

Hadoop体系:

HDFS,MapReduce,yarn,Hive,Hbase,Flume,Sqoop等

Spark体系:

SparkCore,SparkSQL,SparkStreaming,SparkMLlib

机器学习是分析

推荐系统

数据结构和算法思维导图:

设计模式思维导图:

Hadoop思维导图:

Hive思维导图:

Hbase思维导图:

Flume知识体系思维导图:

Sqoop知识体系思维导图:

Kafka知识体系思维导图:

Redis知识体系思维导图:

SparkCore知识体系思维导图:

SparkSQL知识体系思维导图:

SparkStreaming:

机器学习基础知识思维导图:

推荐系统知识体系思维导图:

是不是应该点赞呢:

我14年接触的大数据,不请自来。

也是刚好自己在写大数据系列教程,主要是从零开始到掌握。

学习最主要的应该是上手快速速,理工逻辑有已经很不错了,但是还有就是:

1.至少要掌握一门开发语言,比如Java、python

2.了解大数据核心生态组件比如hadoop、spark、kafka等等

最好是跟着一个脉络走下去,我最近也是在写着大数据系列的教程文章(不才,努力的写而已,不喜勿喷),已经开源。


------------------贴上我最近更新的目录,已经完成一部分了----------------

http://weixin.qq.com/r/Czvq8vnEiaT2rb2R924Z (二维码自动识别)

最新文章:

  • “卜算子·大数据”目录——系列文章与源码介绍,目录
  • 1.1 Virtualbox虚拟机快速入门
  • 1.2 Linux使用技巧快速入门
  • 1.3 virtualbox高级应用构建本地大数据集群服务器
  • 2.1 Hadoop伪分布式部署
  • 2.2 Hadoop3.1.0完全分布式集群配置与部署

项目地址 https://github.com/wangxiaoleiAI/big-data

1.1 特点

关于 ——“卜算子·大数据”,其中“卜算子”是中国诗词中唯一包含计算、占卜、预测寓意的词牌名,而后跟的大数据,亦是如此。“卜算子·大数据”合二为一,再合适不过了。

开源 ——“卜算子·大数据”,是一个开源的大数据教程。所有原创文章与源代码在Github仓库上,地址 https://github.com/wangxiaoleiai/big-data (但是有转载或者引用者要注明作者和来源信息,格式见2.1.5)

实践出真知 ——从构建到编程,以 ** http://busuanzi.org ** 为大数据教程实践项目。

快速上手 ——知识体系构成以”部分”为知识点范畴,以“章”为技能点,以“节”为知识点,从基础数据采集到顶层架构设计。由浅入深,先快速上手构建、再知识点理论、再结合项目实践。

生态较完整 ——目前最新梳理出大数据相关共计12个部分,42个章节。虽然看起来多,但是和大数据完整生态比起来,只能说正在努力构建生态。

第一部分 大数据开篇

  • 第1章 卜算子·大数据简介
  • 第2章 Linux
  • 第3章 大数据需要哪些编程语言基础

第二部分 数据存储格式

  • 第4章 Apache Avro
  • 第5章 Apache Parquet

第三部分 数据存储

  • 第10章 Apache Hadoop HDFS
  • 第11章 Apache Hbase
  • 第12章 Cassandra

第四部分 数据采集

  • 第6章 Apache Zookeeper
  • 第7章 Apache Sqoop
  • 第8章 Apache Kafka
  • 第9章 Apache Flume

第五部分 数据挖掘(批处理)系统

  • 第13章 Apache Hadoop MapReduce
  • 第14章 Apache Spark
  • 第15章 Apache pig
  • 第16章 Apache Crunch
  • 第17章 Apache Oozie

第六部分 大数据查询系统

  • 第18章 Apache Phoenix
  • 第19章 Druid
  • 第20章 Apache Kylin
  • 第21章 Apache Impala
  • 第22章 Presto
  • 第23章 GreenPlum
  • 第24章 ClickHouse
  • 第25章 Elasticsearch

第七部分 流处理系统

  • 第26章 Apache Spark Streaming
  • 第27章 Apache Storm
  • 第28章 Apache Flink
  • 第29章 Apache Kafka Streams
  • 第30章 Apache Apex
  • 第31章 Apache Samza

第八部分 大数据架构

  • 第32章 Lambda架构
  • 第33章 Kappa架构

第九部分 大数据源码解读

  • 第34章 Hadoop 源码研究
  • 第35章 Spark 源码研究

第十部分 发布-订阅入门(Streams everywhere)

  • 第36章 Java NIO
  • 第37章 Netty
  • 第38章 RabbitMQ
  • 第39章 Redis

第十一部分 大数据之机器学习

  • 第40章 Apache Spark
  • 第41章 Apache Hadoop

第十二部分 附录

  • 第42章 Linux常用开发环境部署

获取最新目录地址:https://github.com/wangxiaoleiAI/big-data

1.3 项目更新

每周更新,主要将在Github,CSDN,微信公众号更新。

http://busuanzi.org 是“卜算子·大数据”大数据学习教程中的实践项目。

Github文章、源码每周更新 https://github.com/wangxiaoleiAI/big-data

CSDN地址文章每周更新 https://blog.csdn.net/dream_an

微信公众号“从入门到精通”,第一时间获得教程更新。 搜索“从入门到精通”

对于大数据挖掘的学习心得,我认为学习数据挖掘一定要结合实际业务背景、案例背景来学习,这样才是以解决问题为导向的学习方法。

那么,大体上,大数据挖掘分析经典案例有以下几种:

①预测产品未来一段时间用户是否会流失,流失情况怎么样;

②公司做了某个促销活动,预估活动效果怎么样,用户接受度如何;

③评估用户信用度好坏;

④对现有客户市场进行细分,到底哪些客户才是目标客群;

⑤产品上线投放市场后,用户转化率如何,到底哪些运营策略最有效;

⑥运营做了很多工作,公司资源也投了很多,怎么提升产品投入产出比;

⑦一些用户购买了很多商品后,哪些商品同时被购买的几率高;

⑧预测产品未来一年的销量及收益……

大数据挖掘要做的就是把上述类似的商业运营问题转化为数据挖掘问题。

一、如何将商业运营问题转化为大数据挖掘问题?

可以对数据挖掘问题进行细分,分为四类问题:分类问题、聚类问题、关联问题、预测问题。 1、分类问题

用户流失率、促销活动响应、评估用户度都属于数据挖掘的分类问题,我们需要掌握分类的特点,知道什么是有监督学习,掌握常见的分类方法:决策树、贝叶斯、KNN、支持向量机、神经网络和逻辑回归等。

2、聚类问题

细分市场、细分客户群体都属于数据挖掘的聚类问题,我们要掌握聚类特点,知道无监督学习,了解常见的聚类算法,例如划分聚类、层次聚类、密度聚类、网格聚类、基于模型聚类等。

3、关联问题

交叉销售问题等属于关联问题,关联分析也叫购物篮分析,我们要掌握常见的关联分析算法:Aprior算法、Carma算法,序列算法等。

4、预测问题

我们要掌握简单线性回归分析、多重线性回归分析、时间序列等。

二、用何种工具实操大数据挖掘

能实现数据挖掘的工具和途径实在太多,SPSS、SAS、Python、R等等都可以,但是我们需要掌握哪个或者说要掌握哪几个,才算学会了数据挖掘?这需要看你所处的层次和想要进阶的路径是怎样的。

第一层级:达到理解入门层次 了解统计学和数据库即可。

第二层级:达到初级职场应用层次 数据库+统计学+SPSS(也可以是SPSS代替软件)

第三层级:达到中级职场应用层次 SAS或R 第四层级:达到数据挖掘师层次 SAS或R+Python(或其他编程语言)

三、如何利用Python学习大数据挖掘

只要能解决实际问题,用什么工具来学习数据挖掘都是无所谓,这里首推Python。那该如何利用Python来学习数据挖掘?需要掌握Python中的哪些知识?

1、Pandas库的操作

Panda是数据分析特别重要的一个库,我们要掌握以下三点: pandas 分组计算; pandas 索引与多重索引; 索引比较难,但是却是非常重要的 pandas 多表操作与数据透视表

2、numpy数值计算

numpy数据计算主要应用是在数据挖掘,对于以后的机器学习,深度学习,这也是一个必须掌握的库,我们要掌握以下内容: Numpy array理解; 数组索引操作; 数组计算; Broadcasting(线性代数里面的知识)

3、数据可视化-matplotlib与seaborn

Matplotib语法

python最基本的可视化工具就是matplotlib。咋一看Matplotlib与matlib有点像,要搞清楚二者的关系是什么,这样学习起来才会比较轻松。

seaborn的使用

seaborn是一个非常漂亮的可视化工具。

pandas绘图功能

前面说过pandas是做数据分析的,但它也提供了一些绘图的API。

4、数据挖掘入门

这部分是最难也是最有意思的一部分,要掌握以下几个部分:

机器学习的定义

在这里跟数据挖掘先不做区别

代价函数的定义

Train/Test/Validate Overfitting的定义与避免方法

5、数据挖掘算法

数据挖掘发展到现在,算法已经非常多,下面只需掌握最简单的,最核心的,最常用的算法:

最小二乘算法;

梯度下降;

向量化;

极大似然估计;

Logistic Regression;

Decision Tree;

RandomForesr;

XGBoost;

6、数据挖掘实战

通过机器学习里面最著名的库scikit-learn来进行模型的理解。 以上,就是为大家理清的大数据挖掘学习思路逻辑。可是,这还仅仅是开始,在通往数据挖掘师与数据科学家路上,还要学习文本处理与自然语言知识、Linux与Spark的知识、深度学习知识等等,我们要保持持续的兴趣来学习数据挖掘。

全面地了解大数据,从这三方面入手

大数据产生和互联网的发展离不开,它是互联网发展到一定程度的一种表象或特征,没有那么神秘和可怕,人们对大数据要有客观现实的认识。大数据技术就是在云计算的推动下,对于已有的各类数据进行充分挖掘和加工,产生数据本身没有体现出来的价值。如要系统地认知、全面地了解和分析大数据,一般可以从三个层面入手。



首先是理论。理论是认知的必经途径,只有把理论弄清楚和明白了才能更深入往下分析探究。一般对于大数据的定义,首先从特征上描述,然后从行业对大数据的整体分析描绘和定性。从大数据应用的领域和发展来全面深入探讨分析其真正价值趋向所在。理清大数据发展的方向,以及对于大数据发展过程中带来一系列关于对人的影响,如大数据技术可以危及人的隐私或其他价值取向。



其次是技术。大数据首先是一门信息技术,这是大数据根本属性。大数据的价值和用途最终都要落到技术上。这个技术是一个综合技术,大数据技术不断和其他技术融合形成新的技术。互联网金融从某种意义上说就是大数据技术、云计算、互联网技术等多种技术交织融汇。大数据技术在这里分别从云计算、存储技术、分布式处理技术与感知技术的发展来解释大数据从采集、处理、存储到形成结果的整个过程。



第三是实践。无论是理论还是技术最大价值体现就是实践。大数据可应用领域太多了,大数据可以和教育相融合,大数据可以和医疗相融合,大数据可以和金融相融合等,无论是政府、企业还是个人都可以和大数据联系到一起,在这个大数据时代,大数据无所不在,并且已经展现出美好景象,也正在绘制未来美好的蓝图。


好现在我们一起来了解一下入门大数据学习规划


大数据指不用随机分析法这样捷径,而采用所有数据进行分析处理的方法。互联网时代每个企业每天都要产生庞大的数据,对数据进行储存,对有效的数据进行挖掘分析并应用需要依赖于大数据开发,

阶段一、Linux&&Hadoop生态体系

1、Linux大纲

1) Linux的介绍,Linux的安装:VMware Workstation虚拟软件安装过程、CentOS虚拟机安装过程

2) 了解机架服务器,采用真实机架服务器部署linux

3) Linux的常用命令:常用命令的介绍、常用命令的使用和练习

4) Linux系统进程管理基本原理及相关管理工具如ps、pkill、top、htop等的使用;

5) Linux启动流程,运行级别详解,chkconfig详解

6) VI、VIM编辑器:VI、VIM编辑器的介绍、VI、VIM扥使用和常用快捷键

7) Linux用户和组账户管理:用户的管理、组管理

8) Linux磁盘管理,lvm逻辑卷,nfs详解

9) Linux系统文件权限管理:文件权限介绍、文件权限的操作

10) Linux的RPM软件包管理:RPM包的介绍、RPM安装、卸载等操作

11) yum命令,yum源搭建

12) Linux网络:Linux网络的介绍、Linux网络的配置和维护

13) Shell编程:Shell的介绍、Shell脚本的编写

14) Linux上常见软件的安装:安装JDK、安装Tomcat、安装mysql,web项目部署

2、大型网站高并发处理

1) 第四层负载均衡

a) Lvs负载均衡

i. 负载算法,NAT模式,直接路由模式(DR),隧道模式(TUN)

b) F5负载均衡器介绍

2) 第七层负载均衡

a) Nginx

b) Apache

3) Tomcat、jvm优化提高并发量

4) 缓存优化

a) Java缓存框架

i. Oscache,ehcacheb) 缓存数据库

i. Redis,Memcached

5) Lvs+nginx+tomcat+redis|memcache构建二层负载均衡千万并发处理

6) Haproxy

7) Fastdfs小文件独立存储管理

8) Redis缓存系统

a) Redis基本使用

b) Redis sentinel高可用

c) Redis好友推荐算法

3、Lucene课程

1) Lucene介绍

2) Lucene 倒排索引原理

3) 建索引 IndexWriter

4) 搜索 IndexSearcher

5) Query

6) Sort和 过滤 (filter)

7) 索引优化和高亮

4、Solr课程

1) 什么是solr

2) 为什么工程中要使用solr

3) Solr的原理

4) 如何在tomcat中运行solr

5) 如何利用solr进行索引与搜索

6) solr的各种查询

7) solr的Filter

8) solr的排序

9) solr的高亮

10) solr的某个域统计

11) solr的范围统计

12) solrcloud集群搭建

5、Hadoop离线计算大纲

1) Hadoop生态环境介绍

2) Hadoop云计算中的位置和关系

3) 国内外Hadoop应用案例介绍

4) Hadoop 概念、版本、历史

5) Hadoop 核心组成介绍及hdfs、mapreduce 体系结构

6) Hadoop 的集群结构

7) Hadoop 伪分布的详细安装步骤

8) 通过命令行和浏览器观察hadoop

9) HDFS底层工作原理

10) HDFS datanode,namenode详解

11) Hdfs shell

12) Hdfs java api

13) Mapreduce四个阶段介绍

14) Writable

15) InputSplit和OutputSplit

16) Maptask

17) Shuffle:Sort,Partitioner,Group,Combiner

18) Reducer

19) 二次排序

20) 倒排序索引

21) 最优路径

22) 电信数据挖掘之-----移动轨迹预测分析(中国棱镜计划)

23) 社交好友推荐算法

24) 互联网精准广告推送 算法

25) 阿里巴巴天池大数据竞赛 《天猫推荐算法》案例

26) Mapreduce实战pagerank算法

27) Hadoop2.x集群结构体系介绍

28) Hadoop2.x集群搭建

29) NameNode的高可用性(HA)

30) HDFS Federation

31) ResourceManager 的高可用性(HA)

32) Hadoop集群常见问题和解决方法

33) Hadoop集群管理

6、分布式数据库Hbase

1) HBase与RDBMS的对比

2) 数据模型

3) 系统架构

4) HBase上的MapReduce

5) 表的设计

6) 集群的搭建过程讲解

7) 集群的监控

8) 集群的管理

9) HBase Shell以及演示

10) Hbase 树形表设计

11) Hbase 一对多 和 多对多 表设计

12) Hbase 微博 案例

13) Hbase 订单案例

14) Hbase表级优化

15) Hbase 写数据优化

16) Hbase 读数据优化

7、数据仓库Hive

1) 数据仓库基础知识

2) Hive定义

3) Hive体系结构简介

4) Hive集群

5) 客户端简介

6) HiveQL定义

7) HiveQL与SQL的比较

8) 数据类型

9) 外部表和分区表

10) ddl与CLI客户端演示

11) dml与CLI客户端演示

12) select与CLI客户端演示

13) Operators 和 functions与CLI客户端演示

14) Hive server2 与jdbc

15) 用户自定义函数(UDF 和 UDAF)的开发与演示

16) Hive 优化

8、数据迁移工具Sqoop

1) 介绍 和 配置Sqoop

2) Sqoop shell使用

3) Sqoop-importa) DBMS-hdfsb) DBMS-hivec) DBMS-hbase

4) Sqoop-export

9、Flume分布式日志框架

1) flume简介-基础知识

2) flume安装与测试

3) flume部署方式

4) flume source相关配置及测试

5) flume sink相关配置及测试

6) flume selector 相关配置与案例分析

7) flume Sink Processors相关配置和案例分析

8) flume Interceptors相关配置和案例分析

9) flume AVRO Client开发

10) flume 和kafka 的整合

10、Zookeeper开发

1) Zookeeper java api开发

2) Zookeeper rmi高可用分布式集群开发

3) Zookeeper redis高可用监控实现

4) Netty 异步io通信框架

5) Zookeeper实现netty分布式架构的高可用

11、某一线公司的真实项目

项目技术架构体系:

a) Web项目和云计算项目的整合

b) Flume通过avro实时收集web项目中的日志

c) 数据的ETL

d) Hive 批量 sql执行

e) Hive 自定义函数

f) Hive和hbase整合。

g) Hbase 数据支持 sql查询分析

h) Mapreduce数据挖掘

i) Hbase dao处理

j) Sqoop 在项目中的使用。

k) Mapreduce 定时调用和监控

阶段二、大数据计算框架体系

1、Storm基础

Storm是什么

Storm架构分析

Storm编程模型、Tuple源码、并发度分析

Maven环境快速搭建

Storm WordCount案例及常用Api

Storm+Kafka+Redis业务指标计算

Storm集群安装部署

Storm源码下载编译

2、Storm原理

Storm集群启动及源码分析

Storm任务提交及源码分析

Storm数据发送流程分析

Strom通信机制分析浅谈

Storm消息容错机制及源码分析

Storm多stream项目分析

Storm Trident和传感器数据

实时趋势分析

Storm DRPC(分布式远程调用)介绍

Storm DRPC实战讲解

编写自己的流式任务执行框架

3、消息队列kafka

消息队列是什么

kafka核心组件

kafka集群部署实战及常用命令

kafka配置文件梳理

kafka JavaApi学习

kafka文件存储机制分析

kafka的分布与订阅

kafka使用zookeeper进行协调管理

4、Redis

nosql介绍

redis介绍

redis安装

客户端连接

redis的数据功能

redis持久化

redis应用案例

5、zookeper

Zookeeper简介

Zookeeper集群部署

zookeeper核心工作机制

Zookeeper命令行操作

Zookeeper客户端API

Zookeeper应用案例

Zookeeper原理补充

6、日志告警系统项目实战

需求分析

架构及功能设计

数据采集功能开发及常见问题

数据库模型设计及开发

Storm程序设计及功能开发

集成测试及运行

优化升级及常见问题

7、猜你喜欢推荐系统实战

推荐系统基础知识

推荐系统开发流程分析

mahout协同过滤Api使用

Java推荐引擎开发实战

推荐系统集成运行

阶段三、云计算体系

1、Docker 课程

基本介绍

vm docker 对比

docker基本架构介绍

unfs cgroup namespace

进程虚拟化 轻量级虚拟化

docker 安装

docker 镜像制作

docker 常用命令

docker 镜像迁移

docker pipework(i.openvswitch)

docker weave

2、ReactJS框架

虚拟化介绍,虚拟化适用场景等等

Qemu Libvirt & KVM

安装KVM, Qemu, Libvirt

QEMU-KVM: 安装第一个能上网的虚拟机

Kvm虚拟机 nat,网桥基本原理

kvm虚拟机克隆

kvm虚拟机vnc配置

kvm虚拟机扩展磁盘空间

Kvm快照

Kvm 迁移

Java,python,c语言编程控制kvm

构建自己的虚拟云平台

3、AngularJS框架

openstack介绍和模块基本原理分析

openstack多节点安装部署(a.采用centos6.x系统)

Keystone基本原理

glance

Cinder

Swift

Neutron

Openstack api 二次开发

阶段四、机器学习&&深度学习

1、R语言&&机器学习

1) R语言介绍,基本函数,数据类型

2) 线性回归

3) 朴素贝叶斯聚类

4) 决策树分类

5) k均值聚类

a) 离群点检测

6) 关联规则探索

7) 神经网络

2、Mahout机器学习

1) 介绍为什么使用它,它的前景

a) 简单介绍Mahout

b) 简单介绍机器学习

c) 实例演示Mahout单机推荐程序

2) 配置安装(hadoop2.x版本的)编译安装步骤说明

a) 命令行中测试运行协同过滤概念

3) 推荐

a) 讲解基于用户的协同过滤

b) 讲解基于物品的协同过滤

4) 分类

a) 分类概念

b) 分类的应用及Mahout分类优势

c) 分类和聚类、推荐的区别

d) 分类工作原理

e) 分类中概念术语

f) 分类项目工作流

g) 如何定义预测变量

h) 线性分类器的介绍,及贝叶斯分类器

i) 决策树分类器的介绍,及随机森林分类器

j) 如何使用贝叶斯分类器和随机森林分类器的代码展示

5) 聚类

a) 聚类概念

b) 聚类步骤流程

c) 聚类中的距离测度

d) 讲解K-means聚类

e) K-means聚类算法展示

f) 聚类其他算法

g) 介绍TF-IDF

h) 归一化

i) 微博聚类案例

3、项目实战

项目技术架构体系:

a) 分布式平台 Hadoop,MapReduce

b) 数据采集 Flume

c) 数据清洗 ETL

d) 数据库 Hbase,Redis

e) 机器学习 Mahou

大数据现在是很热门的一个话题,也是最值得我们去学习的一个专业,所以在面对大数据的时候,我们要鼓起勇气去努力的学习。

人工智能时代,信息新旧交替的时间越来越短,对于整个社会的整体创新来说,也越来越容易,信息的大集合就是创新的黑土地。在这样的大形势下,也就衍生了越来越多的科技公司,大家都觉得自己可以凭自己的创新在这个行业立足。

然而事实并不是这样,当创新成为了大家的家常便饭的时候,我们就会发现,大公司的饭似乎一直比那些小企业的饭优质的多,也就毫无竞争力。

最后,我们要想成功,就需要有足够的资源,可以让彼此形成你帮我带的创业模式,在没有竞争的方向上,让懂行的人可以为我们提供一定的资源援助和硬件技术支持。还可以将传统的投资模式进行优化,让新型的创业项目可以得到最大的技术支持和资金支持。

最后我们是否成功入驻大数据就看我们的能力了。

人们对新技术总是有着相同的原始渴求,至少知其然在聊天时不会显得很“土鳖”。现在大数据那么火,大数据是什么呢?最早对大数据做出比较明确的定义的是麦肯锡,大数据一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低几大大特征。

大数据开发工程师职业发展方向

大数据开发行业发展速度较快,对应的人才供给不足,由于大数据人才数量较少,大多数公司的数据部门一般都是采取扁平化的层级管理模式,大致分为数据分析师、资深研究员、部门总监3个级别,当然,大数据工程师的职业发展方向不一定只有晋升这条路线,更为正确的路线应该是从现在的平台跳转到另外的更大的平台。

大数据开发工程师待遇

大数据开发工程师作为IT类职业中的“大熊猫”,大数据工程师的待遇是非常高的,在这个领域再次给我们展示了“物以稀为贵“的道理。在国内IT、通讯、行业招聘中,有10%的招聘岗位都是和大数据相关的,且比例还在不断的上升。在美国,大数据工程师平均每年薪酬高达17.5万美元,而在国内,顶尖的互联网类公司,相比于其他岗同等级别的岗位,大数据工程师的薪酬大约要比其他职位高20%至30%,而且很受企业的重视。

想学习大数据可以关注一下好程序员。

针对题主个人问题,建议分三步走。第三步,说的是谷歌算法工程师们如何进行数据挖掘由入门到精通的。最后教会你碧血剑法的最高境界...人剑合一。

牛皮吹破了,让我们看看实战吧......

1. 先认清大数据这个行业和你希望从事的数据挖掘这个岗位方向。

因为它太火了,火的有点炸掉,一旦一样东西太火了,后续必然会有一些问题比如泡沫经济,比如股市大萧条之前的回光返照。所以,入坑要谨慎...一定要结合自己的兴趣,看是否你愿意长期从事这行,毕竟这行的转行成本有点高,数学专业也不例外。我身边很多数学专业毕业的学生,转过来也要花费不少气力。在这个阶段你可以多看看介绍大数据相关的书籍,这些数据技术性不要太强,更多的是帮你确定未来从事数据挖掘哪一个方向奠定基础。大数据+通信?大数据+证券?大数据+互联网?大数据+教育?

如果考虑不清楚就会导致你在转行和非转行间犹豫徘徊。你考虑清楚了,下面的事情对你而言才会是惊喜。

2. 其次,就是认识数据挖掘能做什么?

本科硕士阶段学习的专业知识,尤其是数学方面的知识,可以在数据挖掘方面体现的淋淋尽致。神马。。。微积分、神马。。。。线性代数,你原以为停留在课本的那些数学公式会在你脑中不断出现,并运用在你之后的工作当中。但,此前还是建议你看的第一本书是吴军的《数学之美》,对于数学专业的小伙伴们,这本书简直就是妥妥的福利,他既不想一般的专业技术书一样,直入挖掘算法,而是给你讲讲数学和现有的算法应用的联系。看完后你才会发现“哇塞,数学原来可以如此好玩,如此有趣并且如此好用”。

3.最后,如果你要开始做,可以参考谷歌这套学习方法。这简直就是逼格大神的成长完美路线,好好收藏吧~

数学基础—题主的优势,我就不介绍书籍了,统计学及机器学习相关

  • 《统计学基础》
  • 《机器学习》吴恩达/周志华《机器学习》
  • 《python入门手册》——个人看的这本,感觉厚实,但还是非常系统的,推荐耐心看看。如果想快速上手,建议百度搜"菜鸟教程"就好了,里面有python最基础句法结构。
  • 《Pattern Recognition and Machine Learning》——PRML,经典书,难度较大,需要的话可以通过下面链接下载。

链接:

https://pan.baidu.com/s/1TrL8b80x1zcebX5xmMHuGA

提取码: trh2

4. 最后的最后。。。业务。。。业务。。。业务。。。重要的事情说三遍,没有业务的数据分析挖掘工作,都是纸上谈兵,千万别把自己炼成了刀枪不入的葫芦娃。这才是决定你前面千锤百炼的关键。


最后,祝愿每一位入坑人事能入这行,爱这行...

社招和校招不同之处在于:校招会因为良好的基础,较好的母校背景,给你实习机会,但社招绝对不会因为你学会了理论就直接给你一个机会。

社招来说,转型最好的方法是找到一种方式来实践参与并能获得等同于工作积累的经验与技巧

幸运的是大数据挖掘领域,这样的实践机会是比较好找的

比如:kaggle,就是一个立足于理论,但能够在简历中写上一笔的线上比赛形态,他的好处是,

  1. 略去了自己清洗数据,找寻数据的脏活累活
  2. 最后的结果往往可以量化且贴近真实的工程(当然只是贴近)
  3. 提供的平台式的使用方法和各公司真实的数据挖掘环境接近
Your Home for Data Science

最后就是:不要去盲目付费大数据挖掘课程,这个行业还远未饱和到一线的开发有时间来准备和讲解课程的时候

看了一圈回复,有不少回复都列举得特别详细,很值得参考。

数据挖掘算是机器学习下面的一个子方向,相对于机器学习来说对数学基础的要求没那么高。然而,这个方向要求技术面比较广,各方面都得懂一些。对于在职人士而言,业余时间碎片化,想固定一段时间来进行系统性训练似乎不太可能。这里,本人打算从可行性的角度来给在职人士推荐入门方法。

首先可以考虑在Coursera修数据挖掘系列课程。这类网课的特点是比较简单,容易入门,也比较好控制时间。

Data Mining | Coursera

上完之后总结一下自己哪方面有明显短板,然后找一本专业教材补补。本人学习「数据挖掘」时使用的教材是「Data Mining and Analysis: Fundamental Concepts and Algorithms」。作者是Mohammed J. Zaki和Wagner Meira Jr.。不需要每一章节仔细看,在职人士也没那个时间。只需要找短板补充一下即可。数据挖掘对线性代数的基本功要求还是不低的,不过题主说数学基础扎实,相信这不会有障碍。

附上电子书的下载链接:

https://repo.palkeo.com/algo/information-retrieval/Data%20mining%20and%20analysis.pdf

理论知识学习完就可以进入实战阶段。最简单直接的方式就是上kaggle找些热门的比赛来练练手,又或者熟练使用pandas对数据集进行探索。kaggle的其中一个特点是数据集比较规范,不需要花大量时间在前期的清洗(有时会有人放出探索结果,节省不少时间)。而且,也有不少人分享自己的工作,可以互相勉励。再者,kaggle比较追求效果,适合入门级选手。最重要的是,选个自己喜欢的dataset来做,比如说作为一个pokemon铁粉,当然就要选「Pokémon for Data Mining and Machine Learning」。

https://www.kaggle.com/alopez247/pokemon

万事起头难,尤其是分身乏术的在职人士。我当年也是边工作边考GRE申请CS转行的,特别能明白其中的艰辛。不要想着今天学了下个月就立刻有回报,要以兴趣为优先,才能坚持下来。

预祝题主转行顺利。

最近看到一篇比较不错的数据挖掘的文章,主要讲述的就是30个数据挖掘的知识点,我觉得作为入门是比较不错的,这篇文章因为转载较多,所以已经无法找到初始作者了,如果有人知道可以联系修改:

想要数据产生价值,那么数据分析和数据挖掘是必不可少的两个关键点,数据挖掘是指在大量的数据中挖掘出信息,通过认真分析来揭示数据之间有意义的联系、趋势和模式。而数据挖掘技术就是指为了完成数据挖掘任务所需要的全部技术。

下面是一些关于大数据挖掘的知识点:

1. 数据、信息和知识是广义数据表现的不同形式。

2. 主要知识模式类型有:广义知识,关联知识,类知识,预测型知识,特异型知识。

3. web挖掘研究的主要流派有:Web结构挖掘、Web使用挖掘、Web内容挖掘。

4. 一般地说,KDD是一个多步骤的处理过程,一般分为问题定义、数据抽取、数据预处理,数据挖掘以及模式评估等基本阶段。

5. 数据库中的知识发现处理过程模型有:阶梯处理过程模型,螺旋处理过程模型,以用户为中心的处理结构模型,联机KDD模型,支持多数据源多知识模式的KDD处理模型。

6. 粗略地说,知识发现软件或工具的发展经历了独立的知识发现软件、横向的知识发现工具集和纵向的知识发现解决方案三个主要阶段,其中后面两种反映了目前知识发现软件的两个主要发展方向。

7. 决策树分类模型的建立通常分为两个步骤:决策树生成,决策树修剪。

8. 从使用的主要技术上看,可以把分类方法归结为四种类型:

  • 基于距离的分类方法
  • 决策树分类方法
  • 贝叶斯分类方法
  • 规则归纳方法

9. 关联规则挖掘问题可以划分成两个子问题:

  • 发现频繁项目集:通过用户给定Minsupport ,寻找所有频繁项目集或者最大频繁项目集。
  • 生成关联规则:通过用户给定Minconfidence ,在频繁项目集中,寻找关联规则。

10. 数据挖掘是相关学科充分发展的基础上被提出和发展的,主要的相关技术:

  • 数据库等信息技术的发展
  • 统计学深入应用
  • 人工智能技术的研究和应用

11. 衡量关联规则挖掘结果的有效性,应该从多种综合角度来考虑:

  • 准确性:挖掘出的规则必须反映数据的实际情况。
  • 实用性:挖掘出的规则必须是简洁可用的。
  • 新颖性:挖掘出的关联规则可以为用户提供新的有价值信息。

12. 约束的常见类型有:

  • 单调性约束
  • 反单调性约束
  • 可转变的约束
  • 简洁性约束

13. 根据规则中涉及到的层次,多层次关联规则可以分为:

  • 同层关联规则:如果一个关联规则对应的项目是同一个粒度层次,那么它是同层关联规则。
  • 层间关联规则:如果在不同的粒度层次上考虑问题,那么可能得到的是层间关联规则。

14. 按照聚类分析算法的主要思路,聚类方法可以被归纳为如下几种。

  • 划分法:基于一定标准构建数据的划分。
  • 属于该类的聚类方法有:k-means、k-modes、k-prototypes、k-medoids、PAM、CLARA、CLARANS等。
  • 层次法:对给定数据对象集合进行层次的分解。
  • 密度法:基于数据对象的相连密度评价。
  • 网格法:将数据空间划分成为有限个单元(Cell)的网格结构,基于网格结构进行聚类。
  • 模型法:给每一个簇假定一个模型,然后去寻找能够很好的满足这个模型的数据集。

15. 类间距离的度量主要有:

  • 最短距离法:定义两个类中最靠近的两个元素间的距离为类间距离。
  • 最长距离法:定义两个类中最远的两个元素间的距离为类间距离。
  • 中心法:定义两类的两个中心间的距离为类间距离。
  • 类平均法:它计算两个类中任意两个元素间的距离,并且综合他们为类间距离:离差平方和。

16. 层次聚类方法具体可分为:

  • 凝聚的层次聚类:一种自底向上的策略,首先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到某个终结条件被满足。
  • 分裂的层次聚类:采用自顶向下的策略,它首先将所有对象置于一个簇中,然后逐渐细分为越来越小的簇,直到达到了某个终结条件。
  • 层次凝聚的代表是AGNES算法。层次分裂的代表是DIANA算法。

17. 文本挖掘(TD)的方式和目标是多种多样的,基本层次有:

  • 关键词检索:最简单的方式,它和传统的搜索技术类似。
  • 挖掘项目关联:聚焦在页面的信息(包括关键词)之间的关联信息挖掘上。
  • 信息分类和聚类:利用数据挖掘的分类和聚类技术实现页面的分类,将页面在一个更到层次上进行抽象和整理。
  • 自然语言处理:揭示自然语言处理技术中的语义,实现Web内容的更精确处理。

18. 在web访问挖掘中常用的技术:

  • 路径分析:路径分析最常用的应用是用于判定在一个Web站点中最频繁访问的路径,这样的知识对于一个电子商务网站或者信息安全评估是非常重要的。
  • 关联规则发现:使用关联规则发现方法可以从Web访问事务集中,找到一般性的关联知识。
  • 序列模式发现:在时间戳有序的事务集中,序列模式的发现就是指找到那些如“一些项跟随另一个项”这样的内部事务模式。
  • 分类:发现分类规则可以给出识别一个特殊群体的公共属性的描述。这种描述可以用于分类新的项。
  • 聚类:可以从Web Usage数据中聚集出具有相似特性的那些客户。在Web事务日志中,聚类顾客信息或数据项,就能够便于开发和执行未来的市场战略。

19. 根据功能和侧重点不同,数据挖掘语言可以分为三种类型:

  • 数据挖掘查询语言:希望以一种像SQL这样的数据库查询语言完成数据挖掘的任务。
  • 数据挖掘建模语言:对数据挖掘模型进行描述和定义的语言,设计一种标准的数据挖掘建模语言,使得数据挖掘系统在模型定义和描述方面有标准可以遵循。
  • 通用数据挖掘语言:通用数据挖掘语言合并了上述两种语言的特点,既具有定义模型的功能,又能作为查询语言与数据挖掘系统通信,进行交互式挖掘。通用数据挖掘语言标准化是目前解决数据挖掘行业出现问题的颇具吸引力的研究方向。

20. 规则归纳有四种策略:减法、加法,先加后减、先减后加策略:

  • 减法策略:以具体例子为出发点,对例子进行推广或泛化,推广即减除条件(属性值)或减除合取项(为了方便,我们不考虑增加析取项的推广),使推广后的例子或规则不覆盖任何反例。
  • 加法策略:起始假设规则的条件部分为空(永真规则),如果该规则覆盖了反例,则不停地向规则增加条件或合取项,直到该规则不再覆盖反例。
  • 先加后减策略:由于属性间存在相关性,因此可能某个条件的加入会导致前面加入的条件没什么作用,因此需要减除前面的条件。
  • 先减后加策略:道理同先加后减,也是为了处理属性间的相关性。

21. 数据挖掘定义有广义和狭义之分:

从广义的观点,数据挖掘是从大型数据集(可能是不完全的、有噪声的、不确定性的、各种存储形式的)中,挖掘隐含在其中的、人们事先不知道的、对决策有用的知识的过程。

从这种狭义的观点上,我们可以定义数据挖掘是从特定形式的数据集中提炼知识的过程。

22. web挖掘的含义: 针对包括Web页面内容、页面之间的结构、用户访问信息、电子商务信息等在内的各种Web数据,应用数据挖掘方法以帮助人们从因特网中提取知识,为访问者、站点经营者以及包括电子商务在内的基于因特网的商务活动提供决策支持。

23. K-近邻分类算法(K Nearest Neighbors,简称KNN)的定义:通过计算每个训练数据到待分类元组的距离,取和待分类元组距离最近的K个训练数据,K个数据中哪个类别的训练数据占多数,则待分类元组就属于哪个类别。

24. K-means算法的性能分析:

  • 主要优点:是解决聚类问题的一种经典算法,简单、快速;对处理大数据集,该算法是相对可伸缩和高效率的;当结果簇是密集的,它的效果较好。
  • 主要缺点:在簇的平均值被定义的情况下才能使用,可能不适用于某些应用;必须事先给出k(要生成的簇的数目),而且对初值敏感,对于不同的初始值,可能会导致不同结果;不适合于发现非凸面形状的簇或者大小差别很大的簇。而且,它对于“躁声”和孤立点数据是敏感的。

25. ID3算法的性能分析:

  • ID3算法的假设空间包含所有的决策树,它是关于现有属性的有限离散值函数的一个完整空间。所以ID3算法避免了搜索不完整假设空间的一个主要风险:假设空间可能不包含目标函数。
  • ID3算法在搜索的每一步都使用当前的所有训练样例,大大降低了对个别训练样例错误的敏感性。因此,通过修改终止准则,可以容易地扩展到处理含有噪声的训练数据。
  • ID3算法在搜索过程中不进行回溯。所以,它易受无回溯的爬山搜索中的常见风险影响:收敛到局部最优而不是全局最优。

26. Apriori算法有两个致命的性能瓶颈:

  • 多次扫描事务数据库,需要很大的I/O负载。
  • 对每次k循环,侯选集Ck中的每个元素都必须通过扫描数据库一次来验证其是否加入Lk。假如有一个频繁大项目集包含10个项的话,那么就至少需要扫描事务数据库10遍。
  • 可能产生庞大的侯选集。
  • 由Lk-1产生k-侯选集Ck是指数增长的,例如104个1-频繁项目集就有可能产生接近107个元素的2-侯选集。如此大的侯选集对时间和主存空间都是一种挑战。a基于数据分割的方法:基本原理是“在一个划分中的支持度小于最小支持度的k-项集不可能是全局频繁的”。

27. 改善Apriori算法适应性和效率的主要的改进方法有:

  • 基于数据分割(Partition)的方法:基本原理是“在一个划分中的支持度小于最小支持度的k-项集不可能是全局频繁的”。
  • 基于散列的方法:基本原理是“在一个hash桶内支持度小于最小支持度的k-项集不可能是全局频繁的”。
  • 基于采样的方法:基本原理是“通过采样技术,评估被采样的子集中,并依次来估计k-项集的全局频度”。
  • 其他:如,动态删除没有用的事务:“不包含任何Lk的事务对未来的扫描结果不会产生影响,因而可以删除”。

28. 面向Web的数据挖掘比面向数据库和数据仓库的数据挖掘要复杂得多:

  • 异构数据源环境:Web网站上的信息是异构: 每个站点的信息和组织都不一样;存在大量的无结构的文本信息、复杂的多媒体信息;站点使用和安全性、私密性要求各异等等。
  • 数据的是复杂性:有些是无结构的(如Web页),通常都是用长的句子或短语来表达文档类信息;有些可能是半结构的(如Email,HTML页)。当然有些具有很好的结构(如电子表格)。揭开这些复合对象蕴涵的一般性描述特征成为数据挖掘的不可推卸的责任。
  • 动态变化的应用环境:
  • Web的信息是频繁变化的,像新闻、股票等信息是实时更新的。
  • 这种高变化也体现在页面的动态链接和随机存取上。
  • Web上的用户是难以预测的。
  • Web上的数据环境是高噪音的。

29. 简述知识发现项目的过程化管理I-MIN过程模型:

  • MIN过程模型把KDD过程分成IM1、IM2、…、IM6等步骤处理,在每个步骤里,集中讨论几个问题,并按一定的质量标准来控制项目的实施。
  • IM1任务与目的:它是KDD项目的计划阶段,确定企业的挖掘目标,选择知识发现模式,编译知识发现模式得到的元数据;其目的是将企业的挖掘目标嵌入到对应的知识模式中。
  • IM2任务与目的:它是KDD的预处理阶段,可以用IM2a、IM2b、IM2c等分别对应于数据清洗、数据选择和数据转换等阶段。其目的是生成高质量的目标数据。
  • IM3任务与目的:它是KDD的挖掘准备阶段,数据挖掘工程师进行挖掘实验,反复测试和验证模型的有效性。其目的是通过实验和训练得到浓缩知识(Knowledge Concentrate),为最终用户提供可使用的模型。
  • IM4任务与目的:它是KDD的数据挖掘阶段,用户通过指定数据挖掘算法得到对应的知识。
  • IM5任务与目的:它是KDD的知识表示阶段,按指定要求形成规格化的知识。
  • IM6任务与目的:它是KDD的知识解释与使用阶段,其目的是根据用户要求直观地输出知识或集成到企业的知识库中。

30. 改善Apriori算法适应性和效率的主要的改进方法有:

  • 基于数据分割(Partition)的方法:基本原理是“在一个划分中的支持度小于最小支持度的k-项集不可能是全局频繁的”。
  • 基于散列(Hash)的方法:基本原理是“在一个hash桶内支持度小于最小支持度的k-项集不可能是全局频繁的”。
  • 基于采样(Sampling)的方法:基本原理是“通过采样技术,评估被采样的子集中,并依次来估计k-项集的全局频度”。
  • 其他:如,动态删除没有用的事务:“不包含任何Lk的事务对未来的扫描结果不会产生影响,因而可以删除”。

大数据工程说,对应的工作岗位就叫大数据工程师,对于大数据工程师而言,您至少要掌握以下技能:

linux基础

因为大数据体系,基本都是开源软件,这些开源软件都是在开源的linux系统上运行的,所以你必须会基本的linux操作,比如用户管理,权限,shell编程之类的

一门JVM系语言

当前大数据生态JVM系语言类的比重极大,某种程度上说是垄断也不为过。这里我推荐大家学习Java或Scala,至于Clojure这样的语言上手不易,其实并不推荐大家使用。另外,如今是“母以子贵”的年代,某个大数据框架会带火它的编程语言的流行,比如Docker之于Go、Kafka之于Scala。

因此笔者这里建议您至少要精通一门JVM系的语言。值得一提的,一定要弄懂这门语言的多线程模型和内存模型,很多大数据框架的处理模式其实在语言层面和多线程处理模型是类似的,只是大数据框架把它们引申到了多机分布式这个层面。

笔者建议:学习Java或Scala


计算处理框架:

严格来说,这分为离线批处理和流式处理。流式处理是未来的趋势,建议大家一定要去学习;而离线批处理其实已经快过时了,它的分批处理思想无法处理无穷数据集,因此其适用范围日益缩小。事实上,Google已经在公司内部正式废弃了以MapReduce为代表的离线处理。如果你对大数据开发感兴趣,想系统学习大数据的话,可以戳我加入大数据技术学习交流群,私信管理员即可免费领取开发工具以及入门学习资料

因此如果要学习大数据工程,掌握一门实时流式处理框架是必须的。当下主流的框架包括:Apache Samza, Apache Storm, Apache Spark Streaming以及最近一年风头正劲的Apache Flink。当然Apache Kafka也推出了它自己的流式处理框架:Kafka Streams

笔者建议:学习Flink、Spark Streaming或Kafka Streams中的一个

... batch-streaming-101

分布式存储框架:

虽说MapReduce有些过时了,但Hadoop的另一个基石HDFS依然坚挺,并且是开源社区最受欢迎的分布式存储,绝对您花时间去学习。如果想深入研究的话,Google的GFS论文也是一定要读的当然开源世界中还有很多的分布式存储,国内阿里巴巴的OceanBase也是很优秀的一个。

笔者建议:学习HDFS

资源调度框架:

Docker可是整整火了最近一两年。各个公司都在发力基于Docker的容器解决方案,最有名的开源容器调度框架就是K8S了,但同样著名的还有Hadoop的YARN和Apache Mesos。后两者不仅可以调度容器集群,还可以调度非容器集群,非常值得我们学习。

笔者建议:学习YARN

分布式协调框架:

有一些通用的功能在所有主流大数据分布式框架中都需要实现,比如服务发现、领导者选举、分布式锁、KV存储等。这些功能也就催生了分布式协调框架的发展。最古老也是最有名的当属Apache Zookeeper了,新一些的包括Consul,etcd等。学习大数据工程,分布式协调框架是不能不了解的, 某种程度上还要深入了解。

笔者建议:学习Zookeeper——太多大数据框架都需要它了,比如Kafka, Storm, HBase等

KV数据库:

典型的就是memcache和Redis了,特别是Redis简直是发展神速。其简洁的API设计和高性能的TPS日益得到广大用户的青睐。即使是不学习大数据,学学Redis都是大有裨益的。

笔者建议:学习Redis,如果C语言功底好的,最好熟读源码,反正源码也不多

列式存储数据库

笔者曾经花了很长的时间学习Oracle,但不得不承认当下关系型数据库已经慢慢地淡出了人们的视野,有太多的方案可以替代rdbms了。人们针对行式存储不适用于大数据ad-hoc查询这种弊端开发出了列式存储,典型的列式存储数据库就是开源社区的HBASE。实际上列式存储的概念也是出自Google的一篇论文:Google BigTable

笔者建议:学习HBASE,这是目前应用最广泛的开源列式存储

消息队列:

大数据工程处理中消息队列作为“削峰填谷”的主力系统是必不可少的,当前该领域内的解决方案有很多,包括ActiveMQ,Kafka等。国内阿里也开源了RocketMQ。这其中的翘楚当属Apache Kafka了。Kafka的很多设计思想都特别契合分布流式数据处理的设计理念。这也难怪,Kafka的原作者Jay Kreps可是当今实时流式处理方面的顶级大神。

笔者建议:学习Kafka,不仅仅好找工作(几乎所有大数据招聘简历都要求会Kafka:-) ),还能触类旁通进一步理解基于备份日志方式的数据处理范型

四,大数据分析师Or数据科学家

针对角色二:大数据分析,对应的工作岗位就叫大数据分析师或者数据科学家,作为数据科学家的我们必须要掌握以下技能:

数学功底:

微积分是严格要掌握的。不一定要掌握多元微积分,但一元微积分是必须要熟练掌握并使用的。另外线性代数一定要精通,特别是矩阵的运算、向量空间、秩等概念。当前机器学习框架中很多计算都需要用到矩阵的乘法、转置或是求逆。虽然很多框架都直接提供了这样的工具,但我们至少要了解内部的原型原理,比如如何高效判断一个矩阵是否存在逆矩阵并如何计算等。

重温同济版《高等数学》,有条件可以去Coursea学习宾夕法尼亚大学的微积分课程

推荐学习Strang的线性代数:《Introduction to Linear Algebra》——这是最经典的教材,没有之一!

数理统计:

概率论和各种统计学方法要做到基本掌握,比如贝叶斯概率如何计算?概率分布是怎么回事?虽不要求精通,但对相关背景和术语一定要了解

找一本《概率论》重新学习下

交互式数据分析框架:

这里并不是指SQL或数据库查询,而是像Apache Hive或Apache Kylin这样的分析交互框架。开源社区中有很多这样类似的框架,可以使用传统的数据分析方式对大数据进行数据分析或数据挖掘。

笔者有过使用经验的是Hive和Kylin。不过Hive特别是Hive1是基于MapReduce的,性能并非特别出色,而Kylin采用数据立方体的概念结合星型模型,可以做到很低延时的分析速度,况且Kylin是第一个研发团队主力是中国人的Apache孵化项目,因此日益受到广泛的关注。

首先学习Hive,有时间的话了解一下Kylin以及背后的数据挖掘思想。

机器学习框架:

机器学习当前真是火爆宇宙了,人人都提机器学习和AI,但笔者一直认为机器学习恰似几年前的云计算一样,目前虽然火爆,但没有实际的落地项目,可能还需要几年的时间才能逐渐成熟。

不过在现在就开始储备机器学习的知识总是没有坏处的。说到机器学习的框架,大家耳熟能详的有很多种, 信手拈来的就包括TensorFlow、Caffe8、Keras9、CNTK10、Torch711等,其中又以TensorFlow领衔。

笔者当前建议大家选取其中的一个框架进行学习,但以我对这些框架的了解,这些框架大多很方便地封装了各种机器学习算法提供给用户使用,但对于底层算法的了解其实并没有太多可学习之处。因此笔者还是建议可以从机器学习算法的原理来进行学习,比如:

目前机器学习领域最NB的入门课程:吴恩达博士的Machine Learning


五,大数据必备技能详细

因为笔者本身是偏Java应用方向的,所以整理的大数据必备技能详细,也是偏向于大数据工程师方向。总共分为五大部分,分别是:

  • 大数据技术基础
  • 离线计算Hadoop
  • 流式计算Storm
  • 内存计算Spark
  • 机器学习算法

大数据技术基础

linux操作基础

  • linux系统简介与安装
  • linux常用命令–文件操作
  • linux常用命令–用户管理与权限
  • linux常用命令–系统管理
  • linux常用命令–免密登陆配置与网络管理
  • linux上常用软件安装
  • linux本地yum源配置及yum软件安装
  • linux防火墙配置
  • linux高级文本处理命令cut、sed、awk
  • linux定时任务crontab

shell编程

  • shell编程–基本语法
  • shell编程–流程控制
  • shell编程–函数
  • shell编程–综合案例–自动化部署脚本

内存数据库redis

  • redis和nosql简介
  • redis客户端连接
  • redis的string类型数据结构操作及应用-对象缓存
  • redis的list类型数据结构操作及应用案例-任务调度队列
  • redis的hash及set数据结构操作及应用案例-购物车
  • redis的sortedset数据结构操作及应用案例-排行榜

布式协调服务zookeeper

  • zookeeper简介及应用场景
  • zookeeper集群安装部署
  • zookeeper的数据节点与命令行操作
  • zookeeper的java客户端基本操作及事件监听
  • zookeeper核心机制及数据节点
  • zookeeper应用案例–分布式共享资源锁
  • zookeeper应用案例–服务器上下线动态感知
  • zookeeper的数据一致性原理及leader选举机制

java高级特性增强

  • Java多线程基本知识
  • Java同步关键词详解
  • java并发包线程池及在开源软件中的应用
  • Java并发包消息队里及在开源软件中的应用
  • Java JMS技术
  • Java动态代理反射

轻量级RPC框架开发

  • RPC原理学习
  • Nio原理学习
  • Netty常用API学习
  • 轻量级RPC框架需求分析及原理分析
  • 轻量级RPC框架开发

离线计算Hadoop

hadoop快速入门

  • hadoop背景介绍
  • 分布式系统概述
  • 离线数据分析流程介绍
  • 集群搭建
  • 集群使用初步

HDFS增强

  • HDFS的概念和特性
  • HDFS的shell(命令行客户端)操作
  • HDFS的工作机制
  • NAMENODE的工作机制
  • java的api操作
  • 案例1:开发shell采集脚本

MAPREDUCE详解

  • 自定义hadoop的RPC框架
  • Mapreduce编程规范及示例编写
  • Mapreduce程序运行模式及debug方法
  • mapreduce程序运行模式的内在机理
  • mapreduce运算框架的主体工作流程
  • 自定义对象的序列化方法
  • MapReduce编程案例

MAPREDUCE增强

  • Mapreduce排序
  • 自定义partitioner
  • Mapreduce的combiner
  • mapreduce工作机制详解

MAPREDUCE实战

  • maptask并行度机制-文件切片
  • maptask并行度设置
  • 倒排索引
  • 共同好友

federation介绍和hive使用

  • Hadoop的HA机制
  • HA集群的安装部署
  • 集群运维测试之Datanode动态上下线
  • 集群运维测试之Namenode状态切换管理
  • 集群运维测试之数据块的balance
  • HA下HDFS-API变化
  • hive简介
  • hive架构
  • hive安装部署
  • hvie初使用

hive增强和flume介绍

  • HQL-DDL基本语法
  • HQL-DML基本语法
  • HIVE的join
  • HIVE 参数配置
  • HIVE 自定义函数和Transform
  • HIVE 执行HQL的实例分析
  • HIVE最佳实践注意点
  • HIVE优化策略
  • HIVE实战案例
  • Flume介绍
  • Flume的安装部署
  • 案例:采集目录到HDFS
  • 案例:采集文件到HDFS

流式计算Storm

Storm从入门到精通

  • Storm是什么
  • Storm架构分析
  • Storm架构分析
  • Storm编程模型、Tuple源码、并发度分析
  • Storm WordCount案例及常用Api分析
  • Storm集群部署实战
  • Storm+Kafka+Redis业务指标计算
  • Storm源码下载编译
  • Strom集群启动及源码分析
  • Storm任务提交及源码分析
  • Storm数据发送流程分析
  • Storm通信机制分析
  • Storm消息容错机制及源码分析
  • Storm多stream项目分析
  • 编写自己的流式任务执行框架

Storm上下游及架构集成

  • 消息队列是什么
  • Kakfa核心组件
  • Kafka集群部署实战及常用命令
  • Kafka配置文件梳理
  • Kakfa JavaApi学习
  • Kafka文件存储机制分析
  • Redis基础及单机环境部署
  • Redis数据结构及典型案例
  • Flume快速入门
  • Flume+Kafka+Storm+Redis整合

内存计算Spark

scala编程

  • scala编程介绍
  • scala相关软件安装
  • scala基础语法
  • scala方法和函数
  • scala函数式编程特点
  • scala数组和集合
  • scala编程练习(单机版WordCount)
  • scala面向对象
  • scala模式匹配
  • actor编程介绍
  • option和偏函数
  • 实战:actor的并发WordCount
  • 柯里化
  • 隐式转换

AKKA与RPC

  • Akka并发编程框架
  • 实战:RPC编程实战

Spark快速入门

  • spark介绍
  • spark环境搭建
  • RDD简介
  • RDD的转换和动作
  • 实战:RDD综合练习
  • RDD高级算子
  • 自定义Partitioner
  • 实战:网站访问次数
  • 广播变量
  • 实战:根据IP计算归属地
  • 自定义排序
  • 利用JDBC RDD实现数据导入导出
  • WorldCount执行流程详解

RDD详解

  • RDD依赖关系
  • RDD缓存机制
  • RDD的Checkpoint检查点机制
  • Spark任务执行过程分析
  • RDD的Stage划分

Spark-Sql应用

  • Spark-SQL
  • Spark结合Hive
  • DataFrame
  • 实战:Spark-SQL和DataFrame案例

SparkStreaming应用实战

  • Spark-Streaming简介
  • Spark-Streaming编程
  • 实战:StageFulWordCount
  • Flume结合Spark Streaming
  • Kafka结合Spark Streaming
  • 窗口函数
  • ELK技术栈介绍
  • ElasticSearch安装和使用
  • Storm架构分析
  • Storm编程模型、Tuple源码、并发度分析
  • Storm WordCount案例及常用Api分析

Spark核心源码解析

  • Spark源码编译
  • Spark远程debug
  • Spark任务提交行流程源码分析
  • Spark通信流程源码分析
  • SparkContext创建过程源码分析
  • DriverActor和ClientActor通信过程源码分析
  • Worker启动Executor过程源码分析
  • Executor向DriverActor注册过程源码分析
  • Executor向Driver注册过程源码分析
  • DAGScheduler和TaskScheduler源码分析
  • Shuffle过程源码分析
  • Task执行过程源码分析

机器学习算法

python及numpy库

  • 机器学习简介
  • 机器学习与python
  • python语言–快速入门
  • python语言–数据类型详解
  • python语言–流程控制语句
  • python语言–函数使用
  • python语言–模块和包
  • phthon语言–面向对象
  • python机器学习算法库–numpy
  • 机器学习必备数学知识–概率论

常用算法实现

  • knn分类算法–算法原理
  • knn分类算法–代码实现
  • knn分类算法–手写字识别案例
  • lineage回归分类算法–算法原理
  • lineage回归分类算法–算法实现及demo
  • 朴素贝叶斯分类算法–算法原理
  • 朴素贝叶斯分类算法–算法实现
  • 朴素贝叶斯分类算法–垃圾邮件识别应用案例
  • kmeans聚类算法–算法原理
  • kmeans聚类算法–算法实现
  • kmeans聚类算法–地理位置聚类应用
  • 决策树分类算法–算法原理
  • 决策树分类算法–算法实现
责任编辑:
热门阅读排行
© 16货源网 1064879863