许多开展人工智能项目的公司都具有出色的业务理念,但是当企业AI团队发现自己没有足够多的数据时,就会慢慢变得十分沮丧......不过,这个问题的解决方案还是有的。 本文将简要介绍其中一些经笔者实践证明确实有效的办法。
数据稀缺的问题非常重要,因为数据是任何AI项目的核心,数据集的大小往往是影响项目表现优劣的一个重要因素。大多数情况下,与数据相关的问题,往往都是无法做出优秀人工智能项目的主要原因。
有监督的机器学习模型正广泛用于应对各种业务挑战。但是这些模型需要大量数据,其性能也在很大程度上取决于训练数据的多少。但是在许多情况下,AI团队很难创建足够大的训练数据集。
同时还有另一个问题,那就是项目分析师可能会低估处理常见业务问题所需的数据量。在为大公司工作时,收集数据会更加复杂。
我需要多少数据?
在许多情况下,你需要大约10倍的数据,因为模型中有自由度。模型越复杂,就越容易过度拟合,但可以通过模型校验来避免。 不过,根据用例的实际情况,所需的数据可以适当减少。
还有必要讨论一下的是,如何处理缺失值的问题。特别是如果数据中缺失值的数量足够大(超过5%)。
值得一提的是,处理缺失值依赖某些既定的“成功”标准。此外,这些标准对于不同的数据集甚至对于不同的应用也是不同的,例如识别、分割、预测和分类(给定相同的数据集)。
选择什么样的解决方案取决于问题的类型——如时间序列分析,ML,回归等。
涉及到预测技术时,只有当缺失值不是完全随机观察到的时候才应该进行使用,并且需要选择变量来估算这些缺失值与它有某种关系,否则可能产生不精确的估计。
一般来说,可以使用不同的机器学习算法来确定缺失值。可以将缺少的特征转换为标签本身,然后再使用没有缺失值的列来预测具有缺失值的列。
根据笔者的经验,如果你决定构建一个基于AI的解决方案,那么在某些时候你将面临缺乏数据或缺少数据的问题, 但幸运的是,有很多方法可以将这个“负”变为“正”。
缺少数据?
如上所述,不可能精确估计AI项目所需的最小数据量,项目本身将显著影响你需要的数据量的多少。例如,文本、图像和视频通常需要更多数据。但是,为了做出准确的估计,还应考虑许多其他因素。
- 要预测的类别数量
模型的预期输出是什么?基本上来说,数量或类别越少越好。
- 模型性能
如果你计划将项目投入生产,则需要更多。 一个小数据集,用于概念验证可能足够了,但在生产中,你需要更多数据。
一般来说,小型数据集需要低复杂度(或高偏差)的模型,以避免模型对数据的过度拟合。
非技术解决方案
在探究技术解决方案之前,让我们分析一下可以通过哪些方法来增强数据集。这可能是一句废话,但在开始AI项目之前,需要通过开发外部和内部工具尽可能多地收集数据。如果你知道机器学习算法预期要执行的任务,那就可以提前创建数据收集机制。
另外在启动ML项目时,你也可以借助开源数据。网络上有很多可用于ML的数据,其所属公司已经准备好将其弃用。
如果你需要项目的外部数据,与其他组织建立合作伙伴关系以获取相关数据的办法可能会有用。形成合作关系显然会花费你一些时间,但获得的专有数据将为你提供天然的竞争力。
构建一个有用的应用程序,别管这个应用,只用数据
笔者在之前的项目中使用的另一种方法是向客户提供对云应用程序的访问权限,进入应用的数据可用于构建机器学习模型。笔者以前的客户为医院建立了一个应用程序并供其免费使用。我们收集了大量数据,并设法为我们的ML解决方案创建了一个独特的数据集。
- 小数据集
根据笔者的经验,使用小数据集构建预测模型的一些常用方法有:
通常,机器学习算法越简单,就越能从小数据集中学习。从ML的角度来看,小数据需要具有低复杂度(或高偏差)的模型,以避免将模型过度拟合到数据。朴素贝叶斯算法是最简单的分类器之一,因此从相对较小的数据集中学习得非常好。
你还可以依赖其他线性模型和决策树。实际上,它们在小数据集上的表现也相对较好。基本上,简单模型能够比更复杂的模型(神经网络)更好地从小数据集中学习,因为它们本质上是在努力实现更少的学习。
对于非常小的数据集,贝叶斯方法通常是类中***的,尽管结果可能对您的先验选择很敏感。笔者认为朴素贝叶斯分类器和岭回归是***的预测模型。
对于小数据集,你需要具有少量参数(低复杂性)和/或强先验的模型。你还可以将“先验”解释为你可以对数据行为方式做出的假设。
根据业务问题的确切性质和数据集的大小,确实存在许多其他解决方案。
迁移学习
定义: 在构建机器学习模型时,利用现有相关数据或模型的框架。
迁移学习使用从学习任务中获得的知识来改进相关任务的性能,通常可以减少所需的训练数据量。
迁移学习技术很有用,因为它们允许模型使用从另一个数据集或现有机器学习模型(称为源域)获得的知识对新域或任务(目标域)进行预测。
当您没有足够的目标训练数据时,应考虑使用迁移学习技术,源域和目标域有一些相似之处,但不尽相同。
单纯地聚合模型或不同的数据集并不总是有效的,如果现有数据集与目标数据非常不同,则新的学习模型可能会受到现有数据或模型的负面影响。
当你有其他可用于推断知识的数据集时,迁移学习效果很好,但是如果你根本没有数据,这时该怎么办?此时,数据生成可以提供很大的帮助。当没有数据可用,或者你需要创建的数据超过你通过聚合收集到的数据时,可以使用这一方法。
简单来说,该方法需要修改现存的少量数据,以创建该数据的变体,进而训练模型。例如,可以通过裁剪和缩小某一个汽车图像,来生成更多的汽车图像。
缺乏高质量的标签数据也是数据科学团队面临的***挑战之一,通过使用迁移学习和数据生成等技术,可以在一定程度上克服数据稀缺问题。
迁移学习的另一个常见应用是在跨客户数据集上训练模型,以克服冷启动问题。笔者注意到许多SaaS公司在将新客户加入他们的ML产品中时,经常需要处理这个问题。实际上,在新客户收集到足够的数据以实现良好的模型性能(可能需要几个月)之前,很难提供有效的价值。
数据扩充
数据扩充表示增加数据点的数量。在笔者的***项目中,我们使用数据扩充技术来增加数据集中的图像数量。就传统的行/列格式数据而言,这意味着增加行或对象的数量。
我们别无选择,只能依靠数据扩充,原因有两个:时间和准确性。每个数据收集过程都与成本相关联,这个成本可以是美元、人力、计算资源,当然也可以是过程中消耗的时间。
因此,我们不得不扩充现有数据,以增加我们提供给ML分类器的数据大小,并补偿进一步数据收集所产生的成本。
有很多方法可以扩充数据。仍然是汽车图像的例子,你可以旋转原始图像,更改光照条件,以不同方式裁剪。因此对于一个图像,你可以生成不同的子样本。 这样,你就可以减少对分类器的过度拟合。
但是,如果你使用过采样方法(如SMOTE)生成人工数据,那么很可能会引发过度拟合。
在开发AI解决方案时,你必须考虑这一点。
合成数据
合成数据是指包含与“真实”对应物相同模式和统计属性的虚假数据。基本上,这些数据看起来非常真实,几乎看不出来它是假数据。
那么,合成数据的意义是什么呢?如果我们已经获得了真实的数据,为什么又要做这件事?
在某些情况下,特别是当我们处理私人数据(银行,医疗保健等)时,使用合成数据其实是一种更安全的开发方法。
合成数据主要用于没有足够的实际数据,或者没有足够的实际数据用于特定的模式。对于训练和测试数据集,它的用法基本相同。
合成少数类过采样技术(SMOTE)和Modified-SMOTE是生成合成数据的两种技术。简单地说,SMOTE采用少数类数据点并创建位于由直线连接的任何两个最近数据点之间的新数据点。
该算法计算特征空间中两个数据点之间的距离,将距离乘以0到1之间的一个随机数,并将新数据点放在距离计算所用数据点之一的新距离上。
为了生成合成数据,你必须使用一个训练集来定义一个模型,这需要进行验证,然后通过更改感兴趣的参数,你就可以通过仿真生成合成数据。域/数据的类型非常重要,因为它影响整个流程的复杂性。
在笔者看来,在开始做一个AI项目时,问问自己是否有足够的数据,可能会揭示你以前也许从未意识到的问题,这有助于揭露你认为***的业务流程中的问题,并让你了解为什么这个问题是在企业中创建成功数据战略的关键所在。