管理机器学习项目

管理机器学习项目

一. 目录

  1. 传统的软件项目管理
  2. 目前的现状
  3. 机器学习项目管理

二、传统的软件项目管理

传统的软件项目管理和开发流程已经非常成熟。大致的流程如下:

  1. 由运营、产品进行最初的功能策划,进行可行性分析
  2. 由项目经理召集相关人员进行产品启动会,确定产品运营、开发、测试等相关负责人
  3. 由产品人员讲解各个功能模块的需求,进行需求评审;由各个开发、测试、数据、运维等了解和明确需求
  4. 架构师和开发经理进行方案设计,技术文档编写,之后进行技术评审
  5. 测试人员进行测试用例编写并进行测试用例评审。
  6. 运维、数据人员明确上线依赖顺序,数据库等硬件支持,并与相关人员进行确认。
  7. 项目经理再次召集各个模块功能的负责人进行计划排期,明确时间节点和相关负责人。

最后按照日期进行开发工作,当一切开发工作就绪后:

  1. 进行自测
  2. 外部联调
  3. 提交测试进行功能测试、性能测试
  4. 预发并验证
  5. 上线并验证

通过以上步骤,一个版本的迭代就完成了,当然,这个过程现在基本都用敏捷开发的项目管理进行,都是一个迭代的思想。说到敏捷,机器学习的项目管理能用敏捷管理方式进行吗?这里有一篇文章,大家可以参考。https://zhuanlan.zhihu.com/p/20729176

三、目前的现状

传统软件项目管理和机器学习项目管理有着不小的区别,但是在代码管理,上线流程管理,算法服务管理上也有不少的相同之处。相同的部分我们可以套用传统软件的项目管理方法,利用敏捷进行产品的快速迭代。不同的部分比较重要,也是不能单纯地套用传统软件工程的方法。

传统软件工程和机器学习工程最大的区别在于确定性和不确定性。确定性是相对的,对于一个确定的代码编译器、执行器来说,输入一个值,输出是可以预期和计算的一个确定的值;对于机器学习工程来说,机器学习的任务大多是分类、回归、预测等,它的输出不是一个确定的值,而是一个概率值,这也是它不可控的最主要的原因。

如果你是一个传统软件工程的管理人员、产品经理或者项目经理,思维一定要转换和改变,要由确定性思维转换为不确定性思维。如果你是一个中高层管理者,但是没有相关机器学习工程的经验,一定要做自主的改变和认识,对于管理者来说,最重要的是对一个事物的正确认识,这样才能更好地带领团队向着正确的方向进行前进,这往往也关乎到项目的成败,公司的存亡。

对于机器学习工程的认识,举几个例子。

首先介绍一下项目背景。某公司的高层经过决策商议后,准备做一款信息流产品。其中涉及到的机器学习工程是推荐系统,在领导眼里就是算法,前置条件是算法很厉害,能大幅提升效果。这是一个很危险的预期,很不切实际的想法。盲目的崇拜算法技术,将项目的成败寄托于算法,一旦算法没有达到自己的预期,项目就宣告死亡,这是应该极力避免的。

  1. 在项目上线后,当天领导就来问有没有效果(与第三方算法服务比较),告诉他算法是要时间进行优化的。后续将效果做到了和第三方持平。领导还是很不满意,认为算法没效果。这就是典型的对算法没有正确的认识。 后续了解到原因是参考了今日头条,而且比较的指标是使用时长,并不是算法的评价指标ctr(定义算法考核指标是ctr,按照这个进行的算法优化)。

以上示例反应了几个问题:

  1. 确定性思维,认为算法上线就会立即有效果
  2. 缺乏目标思维,定好的ctr指标,但是要和使用时长比较
  1. 领导认为自建算法超第三方10%不满意,不相信算法效果这么男提升,做了半年多算法了,怎么这么慢,遂再接入一个号称很牛逼的第三方。签订合同超过其他第三方最高50%。领导很不屑的说,怎么才超50%!!

作为算法来说,50%是一个很高的数值了,况且现在点击率已经达到25%了。算法团队工作异常辛苦,还得不到领导认同。这里反应的问题是领导不切实际的期望

除了以上两个示例外,还有很多奇葩的事情。比如,他们不理解为什么没有量级就不能做推荐?甚至安排给三个广告做个推荐的奇葩需求,还是强制完成与实现。这明显体现了领导对于专业人员的不信任

好了,说了这么多,我们进入重点的内容。怎样管理一个机器学习工程。

四、机器学习项目管理

4.1 选项目

要对机器学习项目进行管理,首先得有一个机器学习项目,刚才将的对3个广告做推荐的我们就不选了,这做不起来。选项目要注意几个要素。

  1. 是否能将项目、业务问题转化为机器学习的问题
  2. 产品数据是否丰富(如果缺乏就进行补充)
  3. 这个项目产品是否数据驱动
  4. 这个项目产品是否公司核心业务

项目选好了,能很快出成绩,对于算法团队的发展有巨大的作用。

4.2 预期管理

对于一个项目产品,算法的效果作用要有一个合理的预期,这个预期我建议是不要有预期,按照实际线上效果来接受现实。为什么这样说?大家想想,对于一个算法的评估是涉及到很多影响因素的,具体场景要具体分析。如果盲目预期,对于自身、团队的心理有着不小的影响。

上线结果无非三种,很差,马马虎虎,非常好。对于以上3种情况,我们都需要结合实际的场景进行分析,进而不断迭代优化,提升核心指标。有些时候,有经验的算法人员能预期到结果,但也往往有黑马情况出现。

这里的预期管理主要对领导说。

4.3 机器学习项目的排期计划

这里的时间包括数据收集,整理,特征工程处理,算法模型的开发,算法模型优化调参,算法服务的开发、测试、部署上线等等。

这里建议大家有一个迭代的思路,先从简单的模型逐渐进行迭代,在迭代过程中逐步完善特征工程等一系列的处理。包括调参、优化等等。

4.4 机器学习项目的过程管理

参考 https://blog.csdn.net/chunyun0716/article/details/100771650

4.5 数据分析

算法按时上线后,一定要及时跟进效果,分析数据就显得很重要。算法工程师一直是在分析数据,查找问题,调参中度过。分析数据和查找问题是很重要的,它决定着一个业务,项目的方向。

4.6 优化计划

做项目、产品的算法优化计划,一定不能很死板,写的计划项和时间节点并不是很细和具体的,这往往会影响算法的有效迭代。过多的计划,过细的安排反而会让算法的优化偏离方向。比如,按照计划,算法1,算法2在具体的时间点上线。但是算法3从侧面验证了某个问题,没有必要再进行算法1和算法2的开发上线了,那么这个计划在领导那里就是没完成。实际上是没有必要完成了。所以,针对不同的情形要知道快速改变和适应。

你可能感兴趣的:(推荐系统,管理)