掌握这六步,搭建机器学习项目

掌握这六步,搭建机器学习项目

上图白板展示了一系列机器学习项目启动

机器学习覆盖的范围十分广泛。这篇文章将整体描述机器学习适用的典型问题,提供实现机器学习项目雏形的框架。

首先厘清一些定义。

机器学习、人工智能和数据科学区别何在?

这三个主题没有明确的定义,因而有些难以理解。为防止误解,我们将问题简化。读者可以认为本文提到的机器学习就是发现数据中的规律,以理解某些问题或者预测未来事件。

希望读者在阅读以下步骤时能边学边做,检验结果。在实践中学习。

一条机器学习管道可以被分解成三个主要步骤:数据收集、数据建模和模型运用。这三个步骤相互影响、环环相扣。

启动项目时,你可能走入如下循环:收集数据,对其建模,发现收集到的数据质量较差,重新收集数据,建模,运用这一模型,发现它并不管用,重新建模,运用,发现新模型仍然没用,再次收集数据……

等等,模型是什么?运用又是什么?如何收集数据?

好问题。

收集数据的方式取决于问题。下文将展示一些例子,读者也可以看看电子表中的顾客购买记录。

建模就是运用机器学习算法从收集到的数据中寻找知识。

普通算法和机器学习算法的区别是什么?

普通的算法就像菜谱,是把原料转换为美味菜肴的一系列指令。

机器学习的特殊之处在于,原始条件是材料和菜肴,而非指令。机器学习算法研究原料和菜肴,给出转换所需的指令。

机器学习算法多种多样,不同算法解决不同问题的性能不同,但是它们的目标一致,即寻找数据中的模式或者指令集。

运用就是实际应用找到的指令集。运用的形式多种多样,既可以是在网络商店中向顾客推荐商品,也可以是为医疗机构寻找更好的疾病检测方案。

不同项目中每个步骤的具体细节不尽相同,但是原理基本相似。

本文重点讲解数据建模。假设读者已经收集到了数据,正准备用它构建一个机器学习模型。这个过程可以分为以下几步:

掌握这六步,搭建机器学习项目完美的机器学习项目" src="http://p3.pstatp.com/large/pgc-image/7570d203ba3b4389b8b41c5a4687576e" width="640" height="295">

两种不同类型的结构数据。表格1.0包含数值和类别数据。表格2.0以结构化形式包含图片和自然语言文本等非结构数据。

两种不同类型的结构数据。表格1.0包含数值和类别数据。表格2.0以结构化形式包含图片和自然语言文本等非结构数据。

尽管数据种类不同,原则都是一致的,那就是使用数据以获取知识或者预测事件。

有监督学习使用特征变量来预测目标变量。预测心脏病可能需要用到性别这一特征变量,目标变量可能是病人是否患有心脏病。

掌握这六步,搭建机器学习项目完美的机器学习项目" src="http://p1.pstatp.com/large/pgc-image/b6745e88d4ed4fc089c605f982299942" width="692" height="208">

首先,主要工作是确保输入(数据)和已有模型相匹配。下一步是确保输出符合问题定义和评价标准。

微调和改进模型

模型的最初结果并不意味着一切。可以像调试一辆汽车一样调试并改进机器学习模型。

微调模型需要改变超参数,比如调整学习率或者优化器。或者是其他特定模型中的建构因素,比如随机森林中树的数量以及神经网络的层数。

这一调整过程曾经是人工的,如今逐渐走向自动化,并将无处不在。

通过迁移学习调用预训练模型能够综合前述步骤的优势。

调试模型时应优先考虑可复制性和效率。其他人应该能够重现你的步骤来改进他们的模型。由于主要目标是减少训练时间而不是提出新的思路,调试过程应该是效率导向的。

比较模型

把苹果与苹果比较。

使用数据X训练模型1,使用数据Y来评测

使用数据X训练模型2,使用数据Y来评测

必须使用同样的数据训练和评测不同模型。模型1和2是可变的,而数据X, Y则不然。

6. 实验——还可以尝试什么方法?我们的发现如何影响其他步骤?模型是否表现得符合预期?

这一步包含了其他所有步骤。因为机器学习是个高度迭代的过程,必须确保实验可以执行。

首要目标是要尽量缩小线下实验和线上实验间的时间差。

线下实验发生在项目还没有向用户开放时。线上实验发生在机器学习模型开始批量生产之后。

每一次实验必须使用数据的不同部分。

  • 训练数据集——使用它来训练模型,一般占整个数据集的70%-80%。
  • 验证/开发数据集——使用它来微调模型,一般占整个数据集的10%-15%。
  • 测试数据集——使用它来测试和比较模型,一般占整个数据集的10%-15%。

这些数据集的数据量可以根据问题和数据的类型略微浮动。

如果模型在训练集上表现不佳,意味着它没有很好地学习。解决方案是尝试不同的模型、改进现有的模型或者收集更多高质量数据。

如果模型在测试集上表现不佳,意味着它难以推广。模型可能发生了过拟合。使用一个更简单的模型或者收集更多数据。

如果模型在真实数据上表现不佳,意味着真实数据和训练集与数据集之间差异较大。重复前面两步。确保数据与待解决的问题相符。

尝试大幅改变时,记录内容和原因。记住,就像在模型微调中一样,所有人,包括未来的你自己,都应该能够重复你的操作。

这意味着需要定期保存最新的模型和数据集。

结合上述步骤,做出项目雏形

许多企业对机器学习略知一二,但不知道如何开始运用。最好通过上面六步做出概念模型。

此类尝试的目的不在于从根本上改变商业运营模式,只是探索使用机器学习为公司增添商业价值的可能性。

毕竟,目标并非追赶华而不实的潮流,而是获得真正有价值的解决方案。

规定好搭建项目雏形的期限,两周、六周和十二周都是比较合适的。有了高质量的数据,一个优秀的机器学习和数据科学从业者可以在短时间内实现最终建模成果的80%-90%。

行业专家、机器学习工程师和数据科学家应该协同合作。否则可能搭建出一个用于错误对象的优秀模型,这是非常糟糕的结果。

如果可能的话,通知网络设计师改进在线商店的布局,以帮助机器学习实验。

由于项目雏形的特性,你的企业可能无法从机器学习中获利。项目经理必须清楚这一点。机器学习工程师或者数据科学家也要做好白费努力的心理准备。

但无法获利并不意味着满盘皆输。

无用的模型也有价值,你能从中得知什么是无用的,然后把精力花在别处。这就是为实验设定期限的原因。时间总是不够用,但ddl就是生产力。

如果机器学习模型表现很好,继续下一步,否则就回到上一步。在实践中学习比空想要快得多。

注意

数据是核心。没有高质量的数据,任何机器学习模型都将徒劳无功。运用机器学习应该从收集高质量数据开始。

应用会改变一切。离线表现很好的模型可能在上线时表现不佳。本文的重点是数据建模。模型一旦投入使用,就会面临架构管理、数据验证、模型再训练和分析等诸多问题。云服务商会提供这些服务,但把它们结合起来仍然是黑科技。如果你是老板,给你的数据工程师开出高薪。如果你是数据工程师,和老板分享你所掌握的。

相关推荐