首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

做算法工程师是什么样的工作体验?

做了3-4年的数据挖掘/机器学习相关工作,谈谈自己的感受。

数据挖掘/机器学习工程师是做啥的?

在我司做机器学习和数据挖掘的统称算法开发,业界也差不多吧,所以下文中数据挖掘/机器学习/算法开发都是一个意思。别以为有着算法开发的Title就天天写算法了,我当时也是这么想的(天真脸)。除了公司平台部门(基础架构部啥的),其他业务部门的算法工程师来了之后要从事和业务紧密相关的数据挖掘工作(划重点)多么痛的领悟。说白了用机器学习在业务数据找到规律,然后应用于业务。

做到最后,你可能比运营更懂业务数据(悲伤无奈中。。)自己写算法的机会也是有的,只要你觉得在紧张的排期中,你愿意自己写而不是用Spark mllib或者sklearn等现成的工具包。

算法工程师和系统工程师不一样。系统工程师做一个系统边界很明确的,需求文档上的功能全部实现了,就算完成了。但是模型的准确率达到多少算是好呢?事先会拍脑袋定一个正确率和召回率,但是不一定有用啊,因为模型的效果和数据有极大关系,所以我感觉数据挖掘是个探索的过程。就像挖金子,没挖到之前,你也不知道金矿到底有多大。

你需要哪些技能?

我描述下自己的工作流程,中间顺带说明要掌握的技能,这样直观些。

了解需求,考察数据。和产品和运营开会,了解她们的需求,自己去数据仓库中考察各种数据(写HiveQL,类SQL语言)。

生成原始特征表。考察完之后将要用的数据汇总到一张Hive表中,作为原始特征表,这张表为后面的特征工程提供原始数据(写ETL)。

模型选择。将问题抽象成分类、聚类或者是标注问题,然后选择一个模型(熟悉机器学习算法)。

实现模型,或者用开源工具包。用开源工具包需要先熟悉接口(熟悉机器学习算法或是开源工具包,自己实现的话用CPP或是Python,Java写矩阵运算有点尴尬)。

特征工程。根据2中的原始特征表生成4中模型需要的数据,特征的增删改都需要在特征工程中完成。特征工程是整个过程中用时最长,影响最大的环节,需要工程师对业务深刻了解。(一般是计算密集型程序,单机跑太慢,用分布式集群跑,就得用MR程序或者Spark程序,现在比较流行Spark)。

将结果数据写回Hive,然后生成抽查数据,让运营检验(写HiveQL)。

总结起来,一个数据挖掘工程师工作中用到的技能包括HiveQL、ETL、机器学习算法、一种强类型语言(CPP/Python/Java也行吧)、Spark/Hadoop。

如果你周围的人不懂算法?

我发现一个很有意思的现象:如果一个人没搞过算法,TA对算法有一种不信任感,而宁愿相信规则。

一个人对于不懂的东西,不会产生信任也很正常,但是这会极大影响你的工作节奏。如果是你的上级,和你对接的运营、产品不懂算法、不信任算法,工作起来是有些吃力的。目前来看,懂机器学习的运营和产品太少了,做好给她们解释最基础概念的准备。

遇到过的挑战?

数据噪音好坑爹。在工作的时候,运营和产品要求模型正确率是98%,然后我优化到94%就优化不上去了,后面查了下标注数据的正确率是95%,这就尴尬了。让运营去标注吧,工作量太大。想要清洗数据吧,找不到规律(不是所有数据都能找到规律)。这个时候只有用各种奇技淫巧生产正确率够高的标注数据,或者修改项目预期,不然就等着项目delay吧。

薪资待遇、竞争和门槛

薪资待遇和门槛成正比,和竞争成反比。总的来说,算法工程师的门槛相对较高,所以竞争不算激烈,缺口蛮大,薪资待遇相比于其他职位要高一些。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181219G1DP7A00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券