构建ML模型的步骤
现在我们已经看了解到了一些ML应用程序的例子,问题是,我们如何构建这样的ML应用程序和系统?
下图总结了我们使用ML开发应用程序的方法,我们将在下面更详细地讨论这个问题:
如上图所示,建立学习模型的步骤如下:
问题定义:任何项目的第一步不仅是理解我们想要解决的问题,也定义了我们如何使用ML来解决问题。这第一步无疑是构建有用的ML模型和应用程序中最重要的一步。在开始构建ML模型之前,我们至少应该回答以下四个问题:
l 当前碰到了什么问题?这是我们描述和陈述我们试图解决的问题的地方。例如,一个问题描述可能是需要一个系统来评估小企业主偿还小企业贷款项目贷款的能力。
l 为什么这是个问题?重要的是要定义为什么这样的问题实际上是一个问题,以及为什么新的ML模型将是有用的。也许我们已经有了一个可用的模型,但发现它的表现比以前差了;我们可能已经获得了新的数据源,可以用来构建新的预测模型;或者我们希望现有的模型能够更快地产生预测结果。认为这是一个问题,并且需要一个新模型的原因可能有多种。定义它为什么是一个问题,将帮助我们在构建新的ML模型时,保持在正确的轨道上。
l 解决这个问题的方法有哪些?这是我们集思广益解决给定问题的方法的地方。我们应该考虑这个模型是如何使用的(需要这是一个实时系统还是会作为批处理运行?),它是什么类型的问题(这是一个分类问题,回归,聚类,还是其他东西?),和我们需要什么类型的数据模型。这将为构建我们的机器学习模型的接下来的步骤提供良好的基础。
l 成功的标准是什么?这是我们定义检查点的地方。我们应该考虑我们将查看什么指标,以及我们的目标模型性能应该是什么样的。如果我们正在构建一个将在实时系统中使用的模型,那么我们还可以在运行时将目标执行速度和数据可用性设置为成功标准的一部分。设定这些成功的标准将帮助我们继续前进,而不会在某个特定的步骤上停滞不前。
收集数据:拥有数据是构建ML模型最基本和最关键的部分,最好是拥有大量数据。没有数据,就没有模型。根据我们的项目,收集数据的方法可能有所不同。我们可以从其他供应商购买现有的数据源,可以抓取网站并提取数据,可以使用公共数据,也可以收集自己的数据。收集ML模型所需的数据有多种方法,但是在数据收集过程中需要记住这两个数据元素—目标变量和特征变量。目标变量是预测的答案,而特征变量是模型用来学习如何预测目标变量的因素。通常,目标变量不会以标记的形式出现。例如,当我处理微博数据以预测每条微博的情绪时,我们可能没有为每条微博标记情绪数据。在这种情况下,我们必须采取额外的步骤来标记目标变量。收集了数据之后,就可以进入准备数据步骤。
数据准备:收集完所有输入数据后,需要准备一个可用的格式。这一步比想象的更重要。如果我们拥有杂乱的数据,而没有为我们的学习算法去清理它,那么我们的算法将不会从我们收集到的的数据集中很好地学习,也不会像预期的那样执行。此外,即使我们拥有高质量的数据,如果我们的数据不是我们的算法可以训练的格式,那么拥有高质量的数据是没有任何意义的。至少我们应该处理以下列出的一些常见问题,以便我们的数据为下一步做好准备:
n 文件格式:如果我们从多个数据源获取数据,那么很可能会遇到每个数据源的不同格式问题。有些数据可能是CSV格式,而其他数据是JSON或XML格式。有些数据甚至可能存储在关系数据库中。为了训练我们的ML模型,我们首先需要将所有这些不同格式的数据源合并到一个标准格式中。
n 数据格式:不同数据源之间的数据格式也可能不同。例如,一些数据可能将地址字段分解为街道地址、市区、省份和邮政编码,而另一些数据可能没有。有些数据的日期字段可能是美国日期格式(mm/dd/yyyy),而有些数据可能是英国日期格式(dd/mm/yyyy)。在解析这些值时,数据源之间的这些数据格式差异可能会导致问题。为了训练我们的ML模型,我们需要为每个字段提供统一的数据格式。