数据挖掘工程师在公司中一般都具体做什么?需要了解哪些知识?

以后想从事数据挖掘行业,但不清楚数据挖掘工程师的工作到底是做什么?
如果仅仅只是用excel,sas,python,r语言等工具来用现有的算法进行数据挖掘,总感觉比软件工程师的工作量要小,那为什么很多数据挖掘工程师的招聘要求还特别高?
是否很多数据挖掘工程师还需要对具体场景设计新的算法和方案来进行数据挖掘?
如果现在要学习的话是否还需要学习hadoop,hive等之类的分布式应用的平台?
已邀请:

gus

赞同来自: 安之若素 candy

对于数据挖掘,以下为个人的理解:
数据挖掘,从字面上理解,就是在数据中找到有用的东西,哪些东西有用就要看具体的业务目标了。最简单的就是统计应用了,比如电商数据,如淘宝统计过哪个省购买泳衣最多、哪个省的女生胸罩最大等,进一步,可以基于用户的浏览、点击、收藏、购买等行为推断用户的年龄、性别、购买能力、爱好等能表示一个人的画像,就相当于用这些挖掘出来的属性来刻画一个人,这些还是最简单的东西,更深层次的比如预测(股票预测),但是比较难。
说到数据挖掘。往往与机器学习离不开。比如分类、聚类、关联规则挖掘、个性化推荐、预测、神经网络、深度学习等。很多年前说人工智能AI(比如产生式系统、专家系统等,好像现在提得比较少了),90年代AI到了瓶颈阶段,机器学习是一个突破口,现在机器学习又遇到了瓶颈阶段,深度学习又是一个突破口(其实神经网络出来了很久,但是为什么中间一段时间沉寂了,在70年代左右出现了低潮(根据评论修改),我归结是两点,第一神经网络就像一个黑夹子一样,很多东西不透明,模型的解释性不强,以及当时没办法处理非线性分类问题,参数过多,训练复杂,容易出错,容易过拟合,无法保证全局最优,加上很多问题无法用数学方法证明(个人理解)等等,科学家和工程师还是有区别的,科学家都想把一个问题归结为数学问题,然后证明出来,他们就会认为是有意义的,数学上证明其有效往往比做千百个实验说明其有效要好些吧,工程师往往更在乎效果与结果),直到后来出现了BP算法。第二,得益于现在的大规模计算工具,能够处理PB级别的数据了。总之现在人工智能还远没达到人类的水平,最后结果会怎样,这个暂时不设想。
目前正处于大数据时代,很多企业拥有巨大的数据,比如阿里拥有消费数据、百度拥有搜索数据,腾讯拥有社交数据,消费数据与搜索数据都可以直接变现形成商业模式,而社交数据暂时还无法直接变现,至少企鹅现在还在探寻中,举个例子,你的朋友圈,qq空间到处是广告,你是不是很讨厌,差评,呵呵。数据有了,还有个重要的方面,处理数据的能力,也就是数据处理工具,能够处理这么大的数据量,二者不可或缺,缺一谈什么大数据都是耍流氓。
以上都是一些yy。对于数据挖掘工程师:
首先你数学知识肯定要扎实吧,统计与概率论是最基本(也有人说现在的机器学习是统计学习,确实有道理)、微分与积分肯定要知道、数学公式要看的懂吧,进阶阶段最优化,随机过程等。建议去看看机器学习十大算法与一些深度学习的东西,多看大牛的博客。
对于语言,搞科研知道matlab就永不怕了,但是对于工程师嘛,肯定要知道写代码吧,不懂写代码的工程师都是扯淡,不要写代码的数据挖掘与机器学习,那是研究员,懂得一门高级语言与一门脚本语言就差不多了(如JAVA或C++,Python或R,个人推荐Java与Python,因为像Hadoop、Spark、Hive、MPI之类的都对Java提供了很方便的接口,Python写脚本很爽),还需要懂得Linux、Shell、SQL,这都是个人意见,至少在阿里,用java+sql+python+shell,阿里有个很牛逼的东西叫做odps,可以去查查相关资料。
对于你所说的excel、sas,数据分析人员专用,因为工程师嘛,编程语言还是必须的。对于是否需要学习hadoop、hive之类的,个人意见是只要知道用,然后怎么用,怎么在上面实现一些算法,怎么去优化自己写的程序就差不多了,它们只是工具,而且更新得很快,就说hadoop吧,我还没完全搞明白,就逐渐被spark取代了,记住,这些只是工具而已。推荐个加深你数据挖掘功力的东西weka(单机版的)与mahout(分布式的,有基于hadoop与spark),都是开源的。
对于工作是否需要设计新算法,我觉得在企业还是没有要求这么高,除非你觉得自己很牛逼,想向google看齐,但是设计一个好的算法并能解决实际问题的算法,不是一朝一夕的,个人观点,很多算法可以想出来,最大的问题就是怎样去证明其正确,其有效。想到企业中去,多看看google与ms工程性的文章,想研究就多看看学术大牛的文章,比如ICML,IJCAI,KDD,NIPS,CVPR等。大部分工作是,将已有的机器学习与数据挖掘算法应用到具体的实践中,根据业务场景与数据特点对算法进行改造或者调整等。
最后举个例子,你在淘宝上买一件衣服,系统怎样向你推荐你感兴趣的并且和这件衣服搭配的裤子或者饰品,这就是数据挖掘工程师的一方面工作。

安之若素

赞同来自: candy

我来回答一下吧。
首先数据挖掘这个概念与机器学习基本是等同的,狭义上来说数据挖掘是机器学习与数据库技术的一个交叉学科。但是现在数据挖掘本身的涵义在外延,因此所有能从数据中挖掘出信息的技术都可以说成是数据挖掘。基本上大部分数据挖掘的算法都是机器学习算法。

虽然从数据中可以挖掘出信息,但是大部分的信息是平凡的,也就是常识。困难的是从数据中挖掘出不平凡的信息,也就是能够带来价值的信息。一个好的数据挖掘实践需要大量的钻研以及对技术和业务的深刻理解,因此不是那么简单的工作。

一般来说,一个成熟的数据挖掘应用一定是业务与技术协力的成果。单纯的技术专家与业务专家都不是项目成功的关键,两者的协力配合才是最重要的。因为数据只有在业务下拥有意义,而数据中的信息必须通过技术才能体现。

是否很多数据挖掘工程师还需要对具体场景设计新的算法和方案来进行数据挖掘?

实际上是不需要的,数据挖掘工程师基本上不创造新算法,而是对已有算法调优。比方说神经网络算法,在使用前提中有许多参数需要设置,参数的不同带来算法最后的效果可能天差地别。这个地方就是体现数据挖掘工程师功力的地方了。有句话说得好:“机器学习就是调参工作”

如果现在要学习的话是否还需要学习hadoop,hive等之类的分布式应用的平台?

基本上是不需要的,在大的公司,如阿里巴巴等等。分布式应用的工作会由专门的架构工程师去实现,而数据挖掘工程师只需要提供算法。一般情况下是数据挖掘工程师在小数据集上进行验证,然后将算法再由其他工程师搬迁到大数据的处理平台上。数据挖掘工程师只需对分布式平台有所了解即可。

Spark平台中有个MLlib的组件,提供了机器学习在分布式平台上的接口,如果你感兴趣的话,可以搭一个Spark平台,然后使用java写个调用试试。

candy

赞同来自:

数据挖掘,不是简单的把数据呈现出来,而是要挖掘出数据之间隐藏着的不知道的关系、信息。
可以用,数据会说话来描述。
技术分类:预言:用历史预测未来;描述:了解数据中潜在的规律。

相关技术包括:关联,序列发现,分类,聚集,异常检测,汇总,回归,时间序列分析。
可以一个个学习。

数据挖掘的核心是算法。

要回复问题请先登录注册