机器学习项目如何管理:工作内容

标签: 机器学习 项目 管理 | 发表时间:2018-02-23 13:01 | 作者:
出处:http://gigix.thoughtworkers.org/

前一篇文章介绍了机器学习的基本过程,然后讨论了如何对机器学习项目设置期望的问题。我们了解到,度量准确率的指标可以有多种,需要根据应用场景来选择。一旦选好了度量指标,接下来就可以围绕这个指标来划分任务、监控进度、管理风险。

机器学习项目涉及哪些工作

站在非常宏观的角度,机器学习系统工作的方式是:你有一个模型,你把一堆数据输入给它,然后你以某种方式使用它提供给你的输出。所以机器学习项目要完成的任务也是三大块:处理输入;获得模型;提供产出。

  1. 处理输入
    a. 你需要获得已有的数据
    b. 你需要对数据做矢量化操作,把原本丰富多样的数据变成有若干列的矢量
    c. 你需要对数据做 特征工程,找出可能蕴涵了知识、值得被学习的那些特征项
  2. 获得模型
    a. 实际上很多时候你可以使用现成的模型,包括:(i)下载现成的离线模型,或者(ii)使用 在线的人工智能服务
    b. 如果没有现成的模型,你也可以考虑使用现有的数据来自行训练模型
  3. 提供产出
    a. 机器学习的结果可能通过某种人-机(UI)或机-机界面(API)被用户直接使用
    b. 作为项目的产出,机器学习模型需要被嵌入到整个数据流水线中
    c. 作为项目的产出,机器学习模型的开发、测试、部署需要有DevOps的支撑

在所有这些任务中,只有2.b“自行训练模型”(上图右下角标星星的部分)需要新的技能和管理方法,其他都是传统的软件开发任务,可以用标准的Scrum等敏捷方法拆分任务和管理。也就是说,如果你需要的人工智能能力已经有一个现成的模型提供,那么整个项目就是一个传统的软件开发项目,只是需要使用一些新的工具或API而已。

下面我们聚焦讨论需要自行训练模型时,这部分工作应该如何拆分、如何管理进度和风险。

自行训练模型的流程

在自行训练模型的情况下,如上图所示,你会用历史数据(X和Y)来训练一个模型,然后用这个模型对未来的生产数据(X-hat)做预测(算出Y-hat)。不论采用什么指标来度量准确率,模型在训练数据上的表现一定好于在生产数据上的表现,这是因为模型从训练数据中“学到”的知识不一定在生产数据中完全重现,或者用黑话来说,模型在训练过程中“拟合”了训练数据的特征。也就是说,如果一个模型对训练数据表现出了95%的准确率(先不管采用哪个准确率指标),其实你并不知道这个模型对生产数据会表现什么水平的准确率,于是你也不知道这个模型是否好到可以上线运行。

为了更有效地衡量模型的表现,我们会在开始训练模型之前先拿出一小部分历史数据(例如全部历史数据的10%)用于测试,整个训练过程不接触这部分数据。于是我们就有了“训练集”(training set)和“测试集”(test set)。很多时候我们还会分出一小部分数据作为“验证集”(validation set),为了简化问题,我们可以先采用“训练集+测试集”这种设置。

把历史数据分成训练集和测试集以后,可以预期,模型在训练集上的表现会优于在测试集上的表现,这两个表现通常都会低于项目期望值。我们把“【模型在训练集上的表现】与【期望值】之间的差距”叫做Bias,把“【模型在训练集上的表现】与【模型在测试集上的表现】之间的差距”叫做Variance。

于是就有3种可能的情况:

  1. High Bias:模型在训练集上的表现远低于期望,模型还不能实用(此时Variance如何并不重要);
  2. Low Bias, High Variance:模型在训练集上表现好,但是在测试集上表现差,模型还不能实用;
  3. Low Bias, Low Variance:模型在训练集和测试集上表现都好,可以投入实用。

我们通常会从简单的机器学习算法、手边立即能获得的数据开始尝试。这时候通常Bias会高,因为过于简单的模型不足以呈现数据背后的知识,这时我们说模型“拟合不足”(Under-fitting)。在这种情况下,可以采用的措施包括:

  • 使用更复杂的机器学习算法
  • 使用更复杂的神经网络架构

用更复杂的机器学习算法和神经网络训练出来的模型,通常能更好地拟合训练集,进入“Low Bias”的状态。这时我们再关注模型在测试集上的表现,如果测试集的表现远差于训练集的表现,就说明模型过度地针对训练集的特征做了优化,我们说模型“过度拟合”(Over-fitting)训练数据。在这种情况下可以采用的措施包括:

  • 引入 Regularization通常能降低over-fitting的程度
  • 通过特征工程可以避免一些over-fitting的情况,例如排除掉一些严重过度拟合的特征
  • 引入更多的训练数据,包括数据量和特征量

最终我们的目标是得到Bias和Variance双低的模型。

潜在风险点

从上述的工作流程中,我们可以预先识别一些潜在的风险:

  • 在Under-fitting的状态下,如果人员能力不足,就无法应用更复杂的算法
  • 在Under-fitting的状态下,如果计算资源不足,就无法训练更复杂的模型
  • 在Over-fitting的状态下,如果数据质量不足,就无法开展有效的特征工程
  • 在Over-fitting的状态下,如果数据数量不足,就无法训练高效的模型
  • 如果整个项目涉及的数据基础设施不足,就无法快速迭代实验

于是,训练一个机器学习模型就不再是一个神秘的、盲目的、随机的过程。借助Bias、Variance、迭代实验的频率等量化数据,IT管理者和不懂技术的业务代表能更清晰地看到项目的进展,整个团队能更好地判断接下来需要做什么:是需要尝试更高级的神经网络呢?还是需要想办法获得更多的数据?或者是需要更多的计算资源?还是需要寻找某些特定的知识和技能?这样就避免了业务代表怀有不切实际的期望、又不知道技术团队在做什么而感到恐慌。

在下一篇文章里,我会更加具体地介绍,如何借鉴Scrum和看板等敏捷方法的思路,把训练一个机器学习模型的工作拆分成更小粒度、更易于管理的任务,以及如何对机器学习项目进行可视化管理。

相关 [机器学习 项目 管理] 推荐:

机器学习项目如何管理:现状

- - 透明思考
Atlassian今年4月的一篇博客提出,到2020年有87%的Jira用户认为他们的工作会被AI改变. 具体到项目管理上,Atlassian的观点是,AI首先会作为项目管理助手进入我们的视野,然后透过数据拓展我们对项目的理解,更进一步还能通过主动猜测、倡导优秀实践、创造新的元数据层等方式弥补数据的缺失,最终对项目提出有益的建议.

机器学习项目如何管理:设置期望

- - 透明思考
我在之前的一篇文章中提到, 机器学习项目如何管理,目前在行业内是一个普遍存在的难题. 具体而言,对于这类项目,我们需要一套行之有效的工作办法,帮助一线工作者:(1)知道什么时候该做什么事;(2)知道什么时候该看什么指标;(3)知道什么时候可能有什么风险. 这样一套工作办法的第一步,就是对一个机器学习项目设置合理的期望.

机器学习项目如何管理:工作内容

- - 透明思考
前一篇文章介绍了机器学习的基本过程,然后讨论了如何对机器学习项目设置期望的问题. 我们了解到,度量准确率的指标可以有多种,需要根据应用场景来选择. 一旦选好了度量指标,接下来就可以围绕这个指标来划分任务、监控进度、管理风险. 站在非常宏观的角度,机器学习系统工作的方式是:你有一个模型,你把一堆数据输入给它,然后你以某种方式使用它提供给你的输出.

机器学习项目如何管理:看板

- - 透明思考
在前面的文章中我们看到,涉及机器学习、人工智能的项目,普遍地存在 项目管理的困难. 然后我介绍了针对这类项目 如何设置合理的期望,并且深入分析了 机器学习项目的工作内容. 既然已经知道如何设置客户的期望、又知道可以做哪些事来逼近这个期望,那么围绕期望和动作进行任务的拆解、管理和可视化应该是顺理成章的.

Ruby的机器学习项目

- - 阳志平的网志-技术类
作者是辉瑞公司的小牛,可惜烂尾了. 我在改啊改啊,可惜现在是商业项目,暂时不能放出改掉的部分. 对了,顺便做个小广告,去年组织翻译的一本小书:社会网络分析:方法与实践. 已经上市了,感兴趣的可以翻翻:. 社会网络分析:探索关系背后的科学与技术. treat:自然语言处理. 类似于igraph,也是桥接处理nlp.

机器学习实战之一:一个完整的机器学习项目

- - IT瘾-jianshu
一个机器学习项目主要步骤为:. 使用Pandas加载数据,并返回一个包含所有数据的Pandas. head()方法查看该数据集的前5行:. describe()方法展示数值属性的概括:. 创建测试集(根据收入,进行分层采样):. corr()方法计算出每对属性间的标准相关系数(standard correlation coefficient,也称作皮尔逊相关系数):.

10个关于人工智能和机器学习的有趣开源项目

- - 极客521 | 极客521
本文简要介绍了10款    Quora上网友推荐的 人工智能和机器学习领域方面的开源项目. GraphLab是一种新的面向机器学习的并行框架. GraphLab提供了一个完整的平台,让机构可以使用可扩展的机器学习系统建立大数据以分析产品,该公司客户包括Zillow、Adobe、Zynga、Pandora、Bosch、ExxonMobil等,它们从别的应用程序或者服务中抓取数据,通过推荐系统、欺诈监测系统、情感及社交网络分析系统等系统模式将大数据理念转换为生产环境下可以使用的预测应用程序.

10款人工智能和机器学习领域方面的开源项目

- - 灯火阑珊
GraphLab是一种新的面向机器学习的并行框架. GraphLab提供了一个完整的平台,让机构可以使用可扩展的机器学习系统建立大数据以分析产品,该公司客户包括Zillow、Adobe、Zynga、Pandora、Bosch、ExxonMobil等,它们从别的应用程序或者服务中抓取数据,通过推荐系统、欺诈监测系统、情感及社交网络分析系统等系统模式将大数据理念转换为生产环境下可以使用的预测应用程序.

2017年度盘点:15个最流行的GitHub机器学习项目

- - 机器之心
在本文中,作者列出了 2017 年 GitHub 平台上最为热门的知识库,囊括了数据科学、机器学习、深度学习中的各种项目,希望能对大家学习、使用有所帮助. 另,小编恬不知耻地把机器之心的 Github 项目也加了进来,求 star,求 pull requests. GitHub 是计算机科学领域最为活跃的社区,在 GitHub 上,来自不同背景的人们分享越来越多的软件工具和资源库.

GitHub 上最著名的20个 Python 机器学习项目,值得收藏!

- - IT瘾-geek
源 | kdnuggets|小象. 开源是技术创新和快速发展的核心. 这篇文章向你展示Python机器学习开源项目以及在分析过程中发现的非常有趣的见解和趋势. 我们分析了GitHub上的前20名Python机器学习项目,发现scikit-Learn,PyLearn2和NuPic是贡献最积极的项目. 让我们一起在Github上探索这些流行的项目.