在业界,做机器学习和数据挖掘的人也统称算法开发工程师,但是别以为有着算法开发的Title就天天写算法了。除了公司平台部门(基础架构部等),其他业务部门的算法工程师往往要花费大量的时间和精力要从事和业务紧密相关的数据挖掘工作。
算法工程师和系统工程师不一样。系统工程师做一个系统边界很明确的,需求文档上的功能全部实现了,就算完成了。但是模型的准确率达到多少算是好呢?事先会拍脑袋定一个正确率和召回率,但是不一定有用啊、,因为模型的效果和数据有极大关系,所以数据挖掘是个探索的过程。就像挖金子,没挖到之前,你也不知道金矿到底有多大。
作为数据挖掘/机器学习工程师,你需要哪些技能?
1、了解需求,考察数据。和产品和运营开会,了解他们的需求,自己去数据仓库中熟悉各种数据(写HiveQL,类SQL语言)。
2、生成原始特征表。熟悉完之后将要用的数据汇总到一张Hive表中,作为原始特征表,这张表为后面的特征工程提供原始数据(写ETL)。
3、模型选择。将问题抽象成分类、聚类或者是标注问题,然后选择一个模型(熟悉机器学习算法)。
4、自己动手实现模型或者用开源工具包。用开源工具包需要先熟悉接口(熟悉机器学习算法或开源工具包,自己实现的话用CPP或是Python,Java写矩阵运算有点尴尬)。
5、特征工程。根据2中的原始特征表生成4中模型需要的数据,特征的增删改都需要在特征工程中完成。特征工程是整个过程中用时最长,影响最大的环节,需要工程师对业务深刻了解。(一般是计算密集型程序,单机跑太慢,用分布式集群跑,就得用MR程序或者Spark程序,现在比较流行Spark)。
6、将结果数据写回Hive,然后生成抽查数据,让运营检验(写HiveQL)。
总结起来,一个数据挖掘工程师工作中用到的技能包括HiveQL、ETL、机器学习算法、一种强类型语言(CPP/Python/Java也行吧)、Spark/Hadoop。