您现在的位置是:首页 > 正文

在ML中缺乏数据可是个大问题,亲测有效的5种方法帮您解决

2024-01-30 21:10:30阅读 0

https://www.toutiao.com/a6701193162699833859/

 

在ML中缺乏数据可是个大问题,亲测有效的5种方法帮您解决

 

在我做过的很多项目中,公司虽然有非常棒的AI商业创意,但当他们意识到自己没有足够的数据时,却会慢慢的变得沮丧起来。然而,确实有解决的方案。本文的目的是简要地向你介绍其中的一些在我的实践中已经证明有效的方法,而不是列出所有现有的解决方案。

数据稀缺问题非常重要,因为数据是任何人工智能项目的核心。在ML项目中,数据集的大小常常导致性能低下。

大多数时候,数据相关的问题是伟大的AI项目无法完成进展的主要原因。在一些项目中,你会得出这样的结论:没有相关的数据,或者收集过程过于困难和耗时。

监督机器学习模型正被成功地用于应对一系列业务挑战。然而,这些模型需要大量的数据,它们的性能在很大程度上依赖于可用的训练数据的大小。在许多情况下,很难创建足够大的训练数据集。

有监督的机器学习模型正成功应用于应对各种业务挑战。 但是,这些模型需要大量数据,其性能在很大程度上取决于可用训练数据的大小。 在许多情况下,很难创建足够大的训练数据集。

我需要多少数据?

你需要的例子大约是模型中自由度的10倍。模型越复杂,就越容易过度拟合,但通过验证可以避免这种情况。然而,根据用例可以使用更少的数据。

过度拟合:过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

还值得讨论处理缺失值的问题。特别是当数据中缺失值的数量足够大(超过5%)时。

同样,处理缺失的值将取决于某些"成功"标准。此外,对于不同的数据集,甚至对于不同的应用程序,这些标准都是不同的,比如识别、分割、预测和分类(给定义相同的数据集),甚至对于不同的应用程序(识别、分割、预测、分类)。

重要的是要理解,没有完美的方法来处理需要丢失的数据。

在ML中缺乏数据可是个大问题,亲测有效的5种方法帮您解决

 

存在着不同的解决方案,但这取决于问题的类型——时间序列分析、ML、回归等。

当涉及到预测的技术时,只有在没有完全随机观察缺失值时才使用它们,并且选择变量来估算缺失值与它的某种关系,否则它可能产生不精确的估计。

通常,可以使用不同的机器学习算法来确定缺失值。 这可以通过将缺少的特征转换为标签本身,现在使用没有缺失值的列来预测具有缺失值的列。

根据我的经验,如果你决定去构建一个人工智能驱动的解决方案,那么在某个时候你将会面临缺乏数据或丢失数据的问题,但幸运的是,有一些方法可以去解决这个问题。

缺乏数据?

如上所述,精确估计人工智能项目所需的最小数据量是不可能的。显然,项目本身的性质将影响所需的数据量。例如,文本、图像和视频通常需要更多的数据。然而,为了作出准确的估计,还应考虑许多其他的因素。

  • 要预测的类别数量

你的模型的预期输出是多少?基本上,数量或类别越少越好。

  • 模型的性能

如果你计划生产一种产品,你需要了解更多产品。一个小的数据集可能足以证明概念, 但在生产中,你需要更多的数据去完善你的产品。

一般来说,小型数据集需要具有不复杂(或高偏差)的模型,以避免模型对数据的过度拟合。

非技术性的解决方案

在探索技术解决方案之前,让我们分析一下我们可以做些什么来增强你的数据集。这可能听起来很简单,但在开始使用人工智能之前,请在考虑数据收集的情况下,通过开发外部和内部工具尽可能多地获取数据。如果你知道机器学习算法要执行的任务,那么你可以预先创建一个数据收集的机制。

尝试在你的组织中建立一个真实的数据文化。

要启动ML执行,可以依赖于开放源码数据。ML有很多可用的数据,一些公司已经准备好提供这些数据。

如果你的项目需要外部数据,为了获得相关数据,与其他组织建立伙伴关系是有益的。建立合作关系显然需要一些时间,但获得的专有数据将对所有竞争对手构成天然屏障。

构建一个有用的应用程序,把它分发出去,使用数据

我在之前的项目中使用的一种方法是向客户提供对云应用程序的访问权限。进入应用程序的数据可以用来构建机器学习模型。我以前的客户为医院开发了一个应用程序,并免费提供。因此,我们收集了大量数据,并为ML解决方案创建了一个独特的数据集。告诉客户或投资者你已经建立了自己独特的数据集,这真的很有帮助。

在ML中缺乏数据可是个大问题,亲测有效的5种方法帮您解决

 

小数据集

根据我的经验,一些可以帮助从小数据集构建预测模型的常用方法是:

在ML中缺乏数据可是个大问题,亲测有效的5种方法帮您解决

 

  1. 使用更简单的分类器模型,例如:短决策树,它可以避免过度拟合。
  2. 也可以使用集成方法,其中分类器投票可以补偿个人的过度学习。

在ML中缺乏数据可是个大问题,亲测有效的5种方法帮您解决

 

一般来说,机器学习算法越简单,它就越能从小数据集中学习。从ML的角度来看,小数据需要具有简单(或高偏差)的模型,以避免模型对数据的过度拟合。我注意到朴素贝叶斯算法是最简单的分类器之一,因此可以从相对较小的数据集中很好地学习。

朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Bayesian Model,NBM)。

朴素贝叶斯分类器基于一个简单的假定:给定目标值时属性之间相互条件独立。

你还可以依赖其他线性模型和决策树。实际上,它们也可以在较小的数据集上执行得相对较好。基本上,简单的模型能够比复杂的模型(神经网络)更好地从小数据集中学习,因为它们本质上试图学习得更少。

对于非常小的数据集,贝叶斯方法通常是最好的,尽管结果可能对你之前的选择很敏感。我认为朴素贝叶斯分类器和岭回归是最好的预测模型。

当涉及到小型数据集时,你需要具有很少参数(低复杂性),或者是强先验的模型。你还可以将"先验"解释为关于数据行为的假设。

在ML中缺乏数据可是个大问题,亲测有效的5种方法帮您解决

 

例:

  1. 线性模型,如线性/逻辑回归。该模型不仅简化了参数的计算,而且它只假设了线性的相互作用;
  2. 简单的贝叶斯算法就能得到这样一个朴素贝叶斯法,在这个算法中,你也只有很少的参数,而且可以直接得到你的先验值;

根据业务问题的确切性质和数据集的大小,确实存在许多其他解决方案。

在ML中缺乏数据可是个大问题,亲测有效的5种方法帮您解决

 

迁移学习

定义:在构建机器学习模型时利用现有相关数据或模型的框架。

迁移学习使用从学习任务中获得的知识来改进相关任务的性能,通常需要减少所需的训练数据量。

迁移学习技术非常有用,因为它们允许模型使用从另一个数据集或现有机器学习模型(源域)学到的知识来预测新领域或任务(称为目标域)。

当你没有足够的目标训练数据,并且源域和目标域有一些相似之处但又不完全相同时,就应该考虑迁移学习技术。

在ML中缺乏数据可是个大问题,亲测有效的5种方法帮您解决

 

一味地聚合模型或不同的数据集并不总是有效的。如果现有的数据集与目标数据非常不同,那么新学习者可能会受到现有数据或模型的负面影响。

当你有其他可以用来推断知识的数据集时,迁移学习的效果很好,但是当你完全没有数据时会发生什么呢?这就是数据生成可以发挥作用的地方。当没有可用的数据时,或者当你需要创建的数据超过你通过聚合聚集的数据时,就会使用它。

在本例中,对确实存在的少量数据进行了修改,以在该数据上创建变量来训练模型。例如,可以通过裁剪和缩小汽车的单个图像生成汽车的许多图像。

遗憾的是,缺乏高质量的标记数据也是数据科学团队面临的最大挑战之一,但是通过使用诸如传输学习和数据生成等技术,有可能克服数据稀缺的问题。

迁移学习的另一个常见应用是在跨客户数据集上训练模型,以克服冷启动的问题。我注意到SaaS公司在将新客户引入他们的ML产品时经常要处理这个问题。实际上,除非新客户收集了足够的数据来实现良好的模型性能(这可能需要几个月的时间),否则很难提供价值。

数据扩充

数据扩充意味着增加数据点的数量。在我的最新项目中,我们使用数据增强技术来增加数据集中的图像数量。对于传统的行/列格式数据,它意味着增加行或对象的数量。

我们别无选择,只能依靠数据增强,原因有两个:时间和准确性。每个数据收集过程都与一个成本相关联。这种成本可以是美元、人力、计算资源,当然还有过程中消耗的时间。

在ML中缺乏数据可是个大问题,亲测有效的5种方法帮您解决

数据收集过程/时间磨练+计算资源+金钱

因此,我们必须增加现有数据,以增加提供给ML分类器的数据大小,并补偿进一步收集数据所涉及的成本。

增加数据的方法有很多。

在我们的示例中,你可以旋转原始图像,改变光照条件,以不同的方式裁剪它,因此对于一个图像,你可以生成不同的子样本。这样,你就可以减少对分类器的过度拟合。

然而,如果你使用过采样方法(比如SMOTE)生成人工数据,那么你很可能引入过度拟合。

过拟合:过拟合模型是一种趋势线的模型,该趋势线反映了它所训练的数据中的误差,而不是准确地预测看不见的数据。

在开发人工智能解决方案时,必须考虑这一点

在ML中缺乏数据可是个大问题,亲测有效的5种方法帮您解决

 

合成数据

合成数据是指包含与"真实"对应的模式和统计属性相同的假数据。基本上,它看起来如此真实,以至于几乎不可能说它不是。

那么,合成数据的意义是什么呢?如果我们已经获得了真实的数据,那么为什么这很重要呢?

我看到应用了合成数据,特别是在处理私有数据(银行、医疗保健等)时,这使得在某些情况下使用合成数据是一种更安全的开发方法。

合成数据主要用于没有足够的实际数据,或者没有足够的实际数据用于你了解的特定模式。 它的用法大致相同,用于训练和测试数据集。

合成少数过采样技术(SMOTE)和Modified-SMOTE是生成合成数据的两种技术。 简单地说,SMOTE采用少数类数据点并创建位于由直线连接的任何两个最近数据点之间的新数据点。

该算法计算特征空间中两个数据点之间的距离,将距离乘以0到1之间的一个随机数,并将新数据点放在距离计算所用数据点之一的新距离上。

为了生成合成数据,你必须使用一个训练集来定义一个模型,这将需要验证,然后通过更改感兴趣的参数,你可以通过仿真生成合成数据。域/数据类型非常重要,因为它影响整个流程的复杂性。

在ML中缺乏数据可是个大问题,亲测有效的5种方法帮您解决

 

优点:

  • 没有版权问题的风险
  • 可以理解一个特定的概念

缺点:

  • 引入偏见的风险
  • 很难理解真实的数据问题

在我看来,问问你自己是否有足够的数据会揭示出你可能从未发现过的矛盾。它将帮助突出你认为完美的业务流程中的问题,并使你理解为什么它是在你的组织中创建成功的数据策略的关键。

网站文章

  • JavaWeb学习笔记——jQuery动画、事件

    jQuery-3动画方法练习:品牌显示事件文档加载事件绑定事件移除事件冒泡事件对象练习:图片跟随 动画 方法 基本: show([speed,[easing],[fn]]) 显示 hide([spee...

    2024-01-30 21:10:01
  • 结构体变量

    在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为: struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种集合,它里面包含了多个变量或数组,它们的...

    2024-01-30 21:09:56
  • Java面试注意

    3125

    2024-01-30 21:09:48
  • python 依赖下载

    https://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy

    2024-01-30 21:09:20
  • 轻松学懂图(下)——Dijkstra和Bellman-Ford算法

    轻松学懂图(下)——Dijkstra和Bellman-Ford算法

    概述 在上一篇文章中讲述了Kruskal和Prim算法,用于得到最小生成树,今天将会介绍两种得到最短路径的算法——Dijlkstra和Bellman-Ford算法 Dijkstra算法 算法的特点: ...

    2024-01-30 21:09:14
  • 顺序队列的基本操作实现

    顺序队列的基本操作

    2024-01-30 21:09:08
  • 电脑桌面计算机打开不显示硬盘信息,电脑加硬盘后不显示不出来怎么办

    1.给电脑添加了一个新硬盘,可是显示不出来怎么办1、在计算机上安装硬盘后,打开计算机,在计算机桌面上,选择我的计算机并右键单击“管理”进入计算机管理界面。2、选择“磁盘管理”,系统将弹出来检测新硬盘并...

    2024-01-30 21:09:00
  • 欢迎使用CSDN-markdown编辑器

    项目Properties -> Project Facets -> Runtime -> New -> Add a tomcat server ,JRE 选择 JRE1.8.0_XX.

    2024-01-30 21:08:31
  • LinkedBlockingQueue的put,take方法

    put操作:在LinkedBlockingQueue中有putlcok和takelock俩把锁,put操作使用putlock这把锁,利用lockInterruptibly方法加锁,该方法的作用为:如果...

    2024-01-30 21:08:18
  • 微信程序开发之微信接入

    微信程序开发之微信接入

    一、 微信公众号1、详情网址微信公众平台微信官方文档 | 微信开放文档微信公众平台接口调试工具几款免费内网穿透工具测评使用 - 哔哩哔哩2、使用测试号①、微信公众平台可以进行登录或注册:公众号分类:订...

    2024-01-30 21:07:50