管理机器学习项目

管理机器学习项目

一. 目录

  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的开发上线了,那么这个计划在领导那里就是没完成。实际上是没有必要完成了。所以,针对不同的情形要知道快速改变和适应。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

拖拽自动生成的DataGridView和BindingSource操作数据库(增加,修改,删除)---自己实现...

参考:http://hi.baidu.com/j2eedoc/blog/item/507ca70e1281c4e036d122dc.html using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Fo…

数据结构之结构体复习

为什么出现结构体? 为了表示一些复杂的数据,一些基本数据类型无法满足要求, 当要用一个变量描述一个对象的多个属性时,普通的内置数据类型是表示不了的,这个时候就可以用结构体回。结构体和类很相似,唯一不…

高效管理读书笔记

高效管理读书笔记一、优秀的权威宣言二、主要的内容要点2.1 有权威的领导都会关心自己的员工2.2 问责而不指责2.3 多点尤达,少点超人三、原书一、优秀的权威宣言 优秀的权威就是: 指出大部分人视而不见的问题的气质今天畅所欲言而不是空等明天的好心【…

C# 按钮美化技巧

(1)按钮 text设置成"" (2)按钮backgroundImage设置成 想要的图片 (3) ToolTip属性设置成 鼠标在上时的提示 (比如“搜索”、“删除”、“查找”)转载于:https://www.cnblogs.com/imihiroblog/archive/2012/06/08/2541940.html

蒙特卡罗方法介绍(一)

蒙特卡罗方法介绍(一) 一、蒙特卡罗方法的基本思想和解题步骤 1.1 蒙特卡罗方法的基本思想 蒙特卡罗方法也称随机模拟法、随机抽样技术或统计实验发,其基本思想是:为了求解数学、物理、工程技术或生产管理等方面的问题。首先,建立一个与求…

gawk手册

第一章 前言awk 是一个程式语言,对於资料的处理具有很强的功能。对於文 字档里的资料做修改、比对、抽取等的处理,awk 能够以很短的程式 轻易地完成。如果使用 C 或 Pascal 等语言写程式完成上述的动作, 会不方便且很花费时间,所写…

数据结构之malloc()函数动态内存分配复习

直接上代码分析 #include <stdio.h> #include <string.h> #include <malloc.h>int mian() {int a[5] { 1,5,8,46,12 };int len;printf("请输入你要分配数组的长度&#xff1a; len");scanf("%d", &len);int * pArr (int *)mallo…

神策数据张涛:如何让用户标签价值落地?

本文根据神策数据副总裁张涛在《用户个性化运营—标签体系搭建新机遇》主题沙龙中演讲整理所得。 标签系统&#xff0c;在企业中已不是什么“高大上”的说辞。然而让用户标签价值真正落地企业不多&#xff0c;就像“青少年谈性”&#xff0c; 有一段话形容得再贴切不过&#xf…

标量函数,多语句表值函数,内嵌表值函数

标量函数返回一个标量(单值)结果,可返回Timestamp,text,Ntext,Image,Table,Cursor多语句表值函数&#xff0c;返回一条或多条Transact-sql语句建立的表,可在select 语句的FROM子句中被引用.内嵌表值函数&#xff0c;位于RETURN子句中的SELECT命令段从数据库中摔选出来的&#x…

ios初学笔记

bool值只取最低位的值&#xff0c;若最低位为&#xff10;&#xff0c;bool值等于NO&#xff1b;若最低位不为&#xff10;&#xff0c;bool值等于YES。比较bool值的时候&#xff0c;将变量与NO进行比较最保险。objc不支持多继承类的description方法类似java的toString方法&…

蒙特卡罗方法介绍( 二)

蒙特卡罗方法介绍( 二) 一、蒙特卡罗求解定积分 蒙特卡洛方法求解定积分有两种方法&#xff0c;一种是上一节中讲的投点法&#xff0c;另外一种是期望法&#xff08;也称平均值法&#xff09;。 1.1 投点法 给出如下曲线f(x)f(x)f(x),求f(x)f(x)f(x)在a,ba,ba,b上的积分&am…

大数据技术之kafka (第 3 章 Kafka 架构深入) 分区策略在分析

如果不懂分区策略请看我之前的文章&#xff1a;https://blog.csdn.net/ywl470812087/article/details/105328015 默认的方式我们采用的是Range策略方式&#xff08;按主题给消费者消费&#xff0c;主题被谁订阅了就谁消费&#xff09; 先看下下面这个图&#xff0c;画的很丑&a…

如何达成目标笔记

如何达成目标 一、本书主要内容 推荐序一 升级你的行动工具箱 推荐序二 人们可以改变 引言 成功者和自制力的悖论 //004 自制力到底是怎样的 //007 你能做什么 //009 本书的主题 //011 1.1 准备就绪 第1章 你明白自己去往哪里吗 别说“做到最好” //017 大局与细节 //…

大数据技术之 Kafka (第 4 章 Kafka API ) Producer API

4.1.1 消息发送流程 Kafka 的 Producer 发送消息采用的是异步发送的方式。在消息发送的过程中&#xff0c;涉及到了两个线程——main 线程和 Sender 线程&#xff0c;以及一个线程共享变量——RecordAccumulator。main 线程将消息发送给 RecordAccumulator&#xff0c;Sender…

【分类器】- KNN

一、分类算法中的学习概念因为分类算法都是有监督学习&#xff0c;故分为以下2种学习。1、急切学习&#xff1a;在给定的训练元组之后、接受到测试元组之前就构造好分类模型。算法有&#xff1a;贝叶斯、基于规则的分类&#xff08;决策树&#xff09;、向后传播分类、SVM&…

Java虚拟机栈介绍

与程序计数器一样&#xff0c;Java虚拟机栈&#xff08;Java Virtual Machine Stack&#xff09;也是线程私有的&#xff0c;它的生命周期 与线程相同。虚拟机栈描述的是Java方法执行的线程内存模型&#xff1a;每个方法被执行的时候&#xff0c;Java虚拟机都 会同步创建一个栈…

《关键对话——何谓关键对话》读书笔记(一)

《关键对话——何谓关键对话》读书笔记&#xff08;一&#xff09; 利用假期的时间&#xff0c;将关键对话阅读了一遍&#xff0c;书中提到的观点&#xff0c;方法&#xff0c;场景等很适合我目前处的状态&#xff0c;有的时候读起来仿佛就是自己身临其境&#xff0c;有种感同身…

从java读取Excel继续说大道至简 .

在上一篇博客《从复杂到简单&#xff0c;大道至简》中说道我们要把复杂的问题简单化&#xff0c;也就是要把问题细分&#xff0c;让大问题变成小问题&#xff0c;这样解决起来会相对容易&#xff0c;当我们把容易的小问题解决掉了&#xff0c;大问题自动就会迎刃而解。 所以今天…

Java堆介绍

对于Java应用程序来说&#xff0c;Java堆&#xff08;Java Heap&#xff09;是虚拟机所管理的内存中最大的一块。Java堆是被所 有线程共享的一块内存区域&#xff0c;在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例&#xff0c;Java 世界里“几乎”所有的对象实例都…

推荐算法工程师的成长之道

推荐算法工程师的成长之道 原创&#xff1a; gongyouliu 大数据与人工智能 3月20日 源链接&#xff1a;原文地址 本文&#xff0c;作者会基于自己的实践经验讲述推荐算法工程师的成长之道&#xff0c;这里的“道”有发展路径和道(道理、方法论、经验、智慧)两层意思。 所以本文…