从探索性的数据分析到自动机器学习(AutoML),组织需要使用这些技术来推动其数据科学项目发展,并建立更好的模型。
你需要对数据进行分类还是预测结果?你的机器学习项目启动有困难吗?有许多技术可以帮助你解决问题。
在以下讨论的八种方法中,一些方法将会显著加快机器学习过程,而另外一些方法不仅可以加快过程,而且还可以帮助你构建更好的模型。并非所有这些方法都适用于给定的项目,但一定不能忽略探索性数据分析。
以下是启动机器学习或深度学习项目的8种方法:
1.从探索性数据分析开始
在没有深入检查数据的情况下直接进入机器学习训练,就像没有在体育比赛时热身一样,而在这一过程中需要完成很多工作。
探索性数据分析结合了图形和统计方法。一些更常见的技术包括单个变量的直方图和盒须图、变量对的散点图以及描述性统计图,例如,变量之间的相关性作为成对相关性的热图。
探索性数据分析还可以包括降维技术,例如主成分分析(PCA)和非线性降维(NLDR)。对于基于时间的数据,还需要基于时间绘制原始变量和统计数据的折线图,其中除了其他事项外,还可以突出季节和周期的变化以及风暴和流行病等外部因素引起的异常跳跃。
探索性数据分析不仅仅是统计图形。这是一种数据分析的哲学方法,旨在帮助你保持开放的态度,而不是试图将数据强加到模型中。如今,探索性数据分析的许多思想已被纳入到数据挖掘中。
2.构建无监督集群
聚类分析是一个无监督的学习问题,它要求模型查找相似数据点的集群。当前使用几种聚类算法往往具有略微不同的特征。通常情况下,聚类算法查看数据点的特征向量之间的度量或距离函数,然后将彼此“接近”的度量或距离函数进行分组。如果类不重叠,则聚类算法最有效。
最常见的聚类方法之一是k-均值,它试图使用欧几里得的距离度量将n个观测值划分为k个聚类,目的是最小化每个聚类中的方差(平方和)。这是矢量量化的一种方法,对于特征学习很有用。
劳埃德(Lloyd)算法(带有质心更新的迭代集群集聚)是解决这一问题的最常用的启发式算法,虽然效率较高,但不能保证全局收敛。为了改善这一点,人们经常使用由Forgy方法或随机划分方法生成的随机初始簇质心多次运行该算法。
k-均值假设球状簇是可分离的,因此其均值向簇中心收敛,并且还假设数据点的顺序无关紧要。集群的大小应该相似,因此对最近的集群中心的分配是正确的。
如果k-均值聚类不适合,那么需要考虑使用层次聚类分析、混合模型或DBSCAN。还应考虑其他类型的无监督学习,例如自动编码器和矩量方法。
3.使用半监督学习标记数据
标记数据是机器学习的必要条件。如果没有标记数据,则无法训练模型来预测目标值。而一个简单的方法是人工标记所有数据,但这并不经济可行。
而一种成本较低的方法是人工标记一些数据,然后尝试使用一个或多个模型预测其余的目标值。这称之为半监督学习。使用自训练算法(一种半监督学习),可以从单个模型中以高于某个阈值的概率接受任何预测值,并使用现在更大的训练数据集来构建精确模型。然后将该模型用于另一轮预测,再进行迭代,直到没有更多的预测为止。自我训练有时是有效的,而在其他时候,该模型因错误的预测而受到损坏。
如果你构建多个模型并使用它们进行相互检查,则可以采用更健壮的方法,例如三重训练。另一种选择是将半监督学习与基于不同数据构建的现有模型的转移学习相结合。
你可以自己实现这些方案中的任何一个。或者可以将Web服务与受过训练的标记数据一起使用,例如Amazon SageMaker Ground Truth、Hive Data、Labelbox、Dataloop和Datasaur。
4.添加补充数据集
外部性通常可以揭示数据集中的异常情况,特别是时间序列数据集。例如,如果将天气数据添加到自行车租赁数据集,能够解释许多偏差,例如暴雨期间租金的急剧下降。
预测零售额还提供了其他很好的例子。销售行为、竞争产品、广告变化、经济事件和天气都可能影响销售。总之,如果数据没有意义,添加一些场景,也许所有内容都会变得更加清晰。
5.尝试采用自动机器学习(AutoML)
找到最佳数据模型的唯一方法是训练每种可能的模型,然后看看哪种模型排在首位。对于许多类型的数据,尤其是带标签的表格数据,可以将自动机器学习(AutoML)工具指向数据集,稍后再返回以获得一些很好的答案。有时,最好的模型将是其他模型的集合,这可能会导致成本高昂,但是,最好的简单模型通常与该集合几乎一样好,并且运行起来成本低得多。
在幕后,自动机器学习(AutoML)服务不只是盲目尝试每个合适的模型。例如,一些自动创建标准化和工程化的特征集,估算缺失值,删除相关特征,并添加用于时间序列预测的滞后列。另一个可选活动是对一些最佳模型执行超参数优化,以进一步改善它们。为了在指定的时间内获得最佳结果,某些自动机器学习(AutoML)服务可以迅速终止对没有太大改进的模型的训练,并将更多的周期投入到看起来更有希望的模型中。
6.通过转移学习定制训练有素的模型
从头开始训练大型神经网络通常需要大量数据(数百万个训练项目并不罕见)、大量时间和计算资源(使用多个服务器GPU需要花费数周的时间)。一种强大的捷径叫转移学习,它是通过用新数据训练网络顶部的一些新层,或者从网络中提取特征,并使用这些特征来训练简单的线性分类器,来定制经过训练的神经网络。这可以使用云计算服务(例如Azure自定义视觉或自定义语言理解)来完成,也可以利用通过使用TensorFlow或PyTorch创建的经过训练的神经网络库来完成。而迁移学习或微调通常可以在单个GPU上在几分钟之内完成。
7.尝试在“Model Zoo”中进行深度学习算法
即使你无法使用首选的云计算服务或深度学习框架轻松地通过转移学习来创建所需的模型,仍然可以避免从头开始设计和训练深度神经网络模型的麻烦。大多数主要框架的原生模型库Model Zoo比其模型API更为广泛。甚至有一些网站为多个框架或任何可以处理特定表示形式的框架(例如ONNX0)维护Model Zoo。
在Model Zoo中,人们会发现许多模型都经过了充分的训练,并且随时可以使用。但是,有些快照是部分训练的快照,其权重可作为使用自己的数据集进行训练的起点。
8.优化模型的超参数
第一次训练模型通常不会结束流程。机器学习模型通常可以通过使用不同的超参数进行改进,而最佳模型可以通过超参数优化或调整来找到。这并不是真正的起步,但它是从早期不太好的模型过渡到更好模型的一种方法。
超参数是模型外部的参数,用于控制学习过程。模型内部的参数(例如节点权重)是在模型训练期间学习的。超参数优化本质上是为给定模型找到最佳的超参数集的过程。优化的每个步骤都需要重新训练模型,并获得损失函数的值。
重要的超参数取决于模型和模型中使用的优化器。例如,学习速率是神经网络的一个常见超参数,除非优化器在不同的时间段控制学习速率。对于径向基核函数和支持向量机分类器,超参数可以是正则化参数和核函数常数。
超参数优化器可以使用多种搜索算法。网格搜索是传统的方法:一方面,网格搜索需要大量训练才能覆盖多个超参数的所有组合;另一方面,如果有足够的计算资源,则所有训练都可以并行运行。随机搜索有时会更有效,并且也很容易并行化。其他替代方法包括贝叶斯优化、梯度下降、进化优化和提前停止算法。
总而言之,可以使用探索性数据分析开始模型构建过程。使用无监督学习来了解有关数据和功能的更多信息。尝试使用自动机器学习(AutoML)可以快速测试许多模型。如果需要深度神经网络模型,需要先尝试进行转移学习或Model Zoo,然后再尝试从头开始设计和训练自己的网络。如果找到认为很好的模型,可以尝试通过超参数调整对其进行改进。然后,可以在生产中试用该模型,并对其进行监控。
而这还没有真正结束。随着时间的推移,数据或概念会由于实际事件而漂移,因此需要优化和重新训练模型。人们甚至可能会发现,不同类型的模型更适合新数据。
原文标题:8 ways to jump-start your machine learning,作者:Martin Heller