分享

数据挖掘就业解答及相关说明

fc013 发表于 2016-11-5 16:20:51 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 7318
本帖最后由 fc013 于 2016-11-5 16:27 编辑


问题导读:

1.数据挖掘主要是做算法还是做应用?分别都要求什么?
2.北上广以外的普通公司用的多吗?待遇如何?
3.和前端后端程序员比有什么区别?有什么优缺点?
4.目前在学习机器学习,如果想找数据挖掘方面的工作应该学习哪些内容?
5.hadoop,hive之类的需要学习吗?





1.数据挖掘主要是做算法还是做应用?分别都要求什么?

这个问题太笼统,基本上算法和应用是两个人来做的,可能是数据挖掘职位。做算法的比较少,也比较高级,其实所谓做算法大多数时候都不是设计新的算法(这个可以写论文了),更多的是技术选型,特征工程抽取,最多是实现一些已经有论文但是还没有开源模块的算法等,还是要求扎实的算法和数据结构功底,以及丰富的分布式计算的知识的,以及不错的英文阅读和写作能力。

但即使是这样也是百里挑一的,很难找到。绝大读书数据挖掘岗位都是做应用,数据清洗,用现成的库建模,如果你自己不往算法或者架构方面继续提升,和其他的开发岗位的性质基本没什么不同,只要会编程都是很容易入门的。

数据挖掘岗位应该更偏应用一些。

目前市面上的岗位一般分为算法模型、数据挖掘、数据分析三种。

算法模型岗位,对数学统计知识要求最高,需要研究现有模型并提出改进意见,且最好熟悉一种编程语言,比如Matlab或者r语言等,不然没办法做实验。

数据挖掘岗位,和算法岗位相比,对数学统计知识要求要低一些,但最好也是数学统计专业,能看懂公式推导流程,理解算法原理,理解参数含义,且有一定的编程能力,熟练使用java或python,能通过调用第三方机器学习库写出符合工业要求的代码。

数据分析岗位,会基本的统计即可,有一定的sql功底,即对数学和编程要求较低,but,对业务也求较高,需要了解行业,了解业务,能提出好的idea。三种岗位需要相互配合、相互补充,各有各的重点。

2.北上广以外的普通公司用的多吗?待遇如何?

实际情况不太清楚,由于数据挖掘和大数据这个概念太火了,肯定到处都有人招聘响应的岗位,但是二线城市可能仅仅是停留在概念上,很多实际的工作并没有接触到足够大的数据,都是生搬硬套框架(从我面试的人的工作经验上看即使是在北上广深这种情况也比较多见)。

只是在北上广深,可能接触到大数据的机会多一些。而且做数据挖掘现在热点的技术比如Python,Spark,Scala,R这些技术除了在一线城市之外基本上没有足够的市场(因为会的人太少了,二线城市的公司找不到掌握这些技术的人,不招也没人学),所以我推测二线城市最多的还是用JAVA+Hadoop,或者用JAVA写一些Spark程序。

北上广深和二线城市程序员比待遇是欺负人,就不讨论了。别的省市不知道,反正山东不多,薪资的话,同等水平的人,北上深杭的薪资除以2左右,差不多是二三线城市的薪资。

3.和前端后端程序员比有什么区别?有什么优缺点?

和传统的前后端程序员相比,最主要的去别就是对编程水平的要求。从我招聘的情况来看,做数据挖掘的人编程水平要求可以降低一个档次,甚至都不用掌握面向对象。

但是要求技术全面,编程、SQL,Linux,正则表达式,Hadoop,Spark,爬虫,机器学习模型等技术都要掌握一些。

前后端可能是要求精深,数据挖掘更强调广博,有架构能力更好。都是技术岗位,没什么区别,术业有专攻而已!

优点:薪资要可观一些,且不会忙到晚上一两点,不用时时刻刻盯着服务器。

缺点:如果公司对于挖掘水平要求较高,压力会比较大,后端的工作,可能加班就能解决,但是数据的事,并不是靠时间能解决的,需要你各方面都比较强,想想硕士博士憋论文的场景吧!


4.目前在学习机器学习,如果想找数据挖掘方面的工作应该学习哪些内容?

打基础是最重要的,学习一门数据挖掘常用的语言,比如Python,Scala,R;学习足够的Linux经验,能够通过awk,grep等Linux命令快速的处理文本文件。

掌握SQL,MySQL或者PostgreSQL都是比较常用的关系型数据库,搞数据的别跟我说不会用数据库。

补充的一些技能,比如NoSQL的使用,Elasticsearch的使用,分词(jieba等模块的使用),算法的数据结构的知识。

打好基础。

数学统计基础:矩阵,概率论,数值分析,最优化理论等,参考大学数学专业书目。

算法模型基础:至少读两本以上数据挖掘相关书籍,参考统计学习方法、机器学习实战等。

编程语言基础:直接学习python吧,另外建议读一下设计模式,培养自己的编程逻辑和习惯。

其他能力:英文阅读能力,沟通表达能力等。

5.hadoop,hive之类的需要学习吗?

我觉得应当学习,

首先Hadoop和Hive很简单(如果你用AWS的话你可以开一台EMR,上面直接就有Hadoop和Hive,可以直接从使用学起)。

我觉得如果不折腾安装和部署,还有Linux和MySQL的经验,只要半天到一天就能熟悉Hadoop和Hive的使用(当然你得有Linux和MySQL的基础,如果没有就先老老实实的学Linux和MySQL,这两个都可以在自己的PC上安装,自己折腾)。

Spark对很多人来说才是需要学习的,如果你有JAVA经验大可以从JAVA入门。

如果没有那么还是建议从Scala入门,但是实际上如果没有JAVA经验,Scala入门也会有一定难度,但是可以慢慢补。所以总的来说Spark才足够难,以至于需要学习。

需要,太需要了!

但是要明白学习重点。并不要求你会Hadoop集群搭建、集群调度优化等,但是要求会熟练编写mr,了解mr原理,熟练使用Hadoop命令等。hive的话,会熟练使用SQL语句,了解hive内置函数,了解hive原理(比如内部表外部表,分区、分桶等),最好还会写udf,毕竟求人不如求己。

最后的最后我有一些建议。

第一要对自己有一个系统的认知,自己的编程水平够么,SQL会用么,Linux会用么,能流畅的看英文文档么?

如果上面任何一个问题的答案是No,我都不建议直接转行或者申请高级的数据挖掘职位(因为你很难找到一个正经的数据挖掘岗位,顶多是一些打擦边球的岗位,无论是实际干的工作还是未来的成长可能对你的帮助都不大)。

无论你现在是学生还是已经再做一些前段后端、运维之类的工作你都有足够的时间补齐这些基础知识。

补齐了这些知识之后,第一件事就是了解大数据生态,Hadoop生态圈,Spark生态圈,机器学习,深度学习(后两者需要高等数学和线性代数基础,如果你的大学专业学这些不要混)。

选定其中一个方向做一些钻研和学习,网上有很多现成的资料(基本上是英文的,所以我说了,不能看英文的赶紧去背单词),科学上网用谷歌这个大家都懂。希望我的建议能对你有一些帮助。



来源:zhihu
作者:纪路,笑虎

已有(1)人评论

跳转到指定楼层
lf61nol 发表于 2017-1-6 17:38:03
谢谢楼主分享这么多心得
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条