“机器学习需要的数据量需要怎么算”

这个问题经常让不少开发者非常苦恼。实际上,这个问题回答起来比看上去要复杂的多,因为其中要涉及到很多因素,比如你使用的模型类型,模型在实际业务中的用途等等。下面我们看看围绕需要多少训练数据出现的痛点,然后探讨针对自己的项目需要多少训练数据。

为何很难预估你的数据集大小?确定目标数据量的许多困难源于训练过程的目标。有很多文章都讲到了模型训练过程的工作原理,但要记住,我们训练的目的是构建一个能理解数据背后模式和关系的模型,而不仅仅是理解数据本身。收集数据时,我们需要确保所拥有的数据数量能教会算法数据中的关系,以及数据和结果之间的关系。

这看起来很容易预测。但实际上机器学习项目的目标多种多样,可以产生大量的训练数据类型。因此,每个项目都有各自独特的多种因素,这使得提前计算数据需求变得非常困难,可能包括以下部分或全部内容:模型的复杂度:模型为完成任务而必须考虑的每个参数都会增加训练所需的数据量。例如,用于识别特定汽车品牌的模型具有少量的参数,主要与车辆的形状相关。而如果是一个必须从长远考虑汽车成本的模型,不仅要顾及到包括汽车品牌和状况的因素,还有经济和社会因素。由于这种复杂程度更高,第二个模型需要比第一个模型更多的数据。训练方法:由于模型必须理解更多的互连参数,由此导致的复杂性使得训练模型的方式也被迫发生改变。传统的机器学习算法使用结构化学习,这意味着它们很快就会出现附加数据投入产出比很低的情况。相反,深度学习模型可以找出自己的参数,并学习如何在没有结构的情况下进行改进。这意味着它们不仅需要更多的数据,而且还有更长的学习曲线,其中进一步增加数据具有积极的影响。因此,你使用的训练方法会导致对你的模型有用的训练数据量发生显著变化。标签需求:根据实际任务,我们会以不同方式注释数据点。这可能会导致数据生成的标签数量,以及创建这些标签所需的工作量发生明显变化。例如,如果我们有1000个输入数据句子用于情感分析,我们可能只需要将它们标记为正面情感或负面情感,因此每个句子产生一个标签。但是,如果对同样1000个句子进行注释用于实体提取,则可能需要为每个句子标记5个单词。尽管具有相同的原始输入数据,但是一个任务产生的标签比另一个任务多五倍。因此,我们准备数据的方式可能会影响项目所需的工作量和花费的成本。误差容忍度:模型在你的实际业务中的预期作用也会影响数据量。对于预测天气的模型,20%的误差率是可接受的,但如果用于检测有心脏病发作风险的患者,这个误差率万万不可。在边界案例方面的改进可以降低这种风险。如果你的算法具有高度风险规避或者对于项目能否成功至关重要,那么你需要的数据量会大幅增加,才能追求完美性能。输入的多样性:我们生活在一个复杂的世界中,可以向模型输入各种类型的输入数据。例如,聊天机器人必须能够理解各种语言,哪怕它们是用一系列正式,非正式甚至语法不正确的风格写就的。如果无法高度控制模型的输入,就需要更多数据来帮助你的模型在不可预测的环境中运行。从上面这些因素可以清楚地看到,我们需要的数据量取决于项目的独特需求和预期目标。最后,项目负责人必须自己平衡这些因素,并提出自己的目标。那么有没有什么方法呢?有,接下来就看看有哪些方法可以帮我们在刚开始时确定所需的数据量。我们该如何计算数据需求?确定任何给定算法所需的确切数据数量可能无法做到。

幸好,基于整体预估的方法能帮你分析项目的训练数据需求量,以下两种方法均可:10 倍法则:一个常见的经验法则是模型通常需要超出其自由度 10 倍的数据量。这里的自由度可以是影响模型输出的参数,是数据点的一个属性,或者更简单地说,是数据集中的列。10 倍法则的目标就是是抵消这些组合参数为模型输入带来的变化。对于复杂模型而言,这可能没有帮助。但是,这条法则能让我们快速估算数据集的数量,保证项目保持运行。学习曲线:如果你已经有一些数据并希望根据更多事实情况做出决策,可以考虑创建一个研究示例,根据数据集的大小来评估模型的能力。通过把结果绘制在图表上,你应该能够找出数据集大小与模型能力之间的关系,同时还要确定什么时候添加更多数据的收益会不断递减。这种方法需要更多人力工作,包括创建一些逻辑回归问题,但至少比简单一猜要靠谱得多。通常,最好在刚开始时用手头已有的数据训练模型,在你认为有必要时再添加更多数据。

一旦项目取得一些结果,你对数据的需求会越来越明显。不过,有些朋友还是希望能在项目开水前有个确切的数字,下面是我们在网上找到的项目数据集大小的一些估计。也许这些例子能让你对自己项目所需的数据集大小心里有个数。数量 VS 质量数据的局限性也会是模型的局限性。但是,在所有关于你需要多少数据的讨论中,不要忘记这条也适用于数据质量和数量。对于模型来说,一百万个混乱的数据反而不如 100 个干净数据,后者实际上更有助于算法达成目标。无论你正在搭建什么样的模型,都要确保正在使用的数据能为你提供坚实的基础和最佳的成功机会。

此前知名机器学习博主 Jason BrownLee 曾发过一篇文章探究机器学习究竟需要多少训练数据:https://machinelearningmastery.com/much-training-data-required-machine-learning/

在文中,Jason Brownlee 也认为训练机器学习模型需要多少数据要根据很多因素,比如:问题的复杂程度机器学习算法的复杂程度Jason BrownLee 也根据自己从事机器学习研究的经历,分享出了一些估算训练数据数量的经验:使用统计学启发式搜索来计算样本数量,其中要考虑到类的数量、输入特征的数量以及模型参数的数量。非线性算法往往需要更多数据。一般把复杂的机器学习算法称为非线性算法,它们可以学习输入和输出特征之间复杂的非线性关系,但也需要更多的训练数据。Jason认为,对于简单的线性算法,每个类需要几百个训练样本,对于复杂的非线性算法,每个类需要几千个训练样本。

参考自如下作者:
作者:景略集智
链接:https://www.zhihu.com/question/63304628/answer/538598523
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

机器学习需要的数据量需要怎么算相关推荐

  1. 机器学习需要的最小数据量是多少?

    数据不够,假设来凑.一个数据点甚至没有数据都能搞. 参数不多的参数化统计模型(比如线性模型或者是基于被建模对线机理而定制的参数化模型)或者是常见的非参数化贝叶斯模型(例如高斯过程)都是不错的选择. 机 ...

  2. 【机器学习】用特征量重要度(feature importance)解释模型靠谱么?怎么才能算出更靠谱的重要度?

    [机器学习]用特征量重要度(feature importance)解释模型靠谱么?怎么才能算出更靠谱的重要度? 我们用机器学习解决商业问题的时候,不仅需要训练一个高精度高泛化性的模型,往往还需要解释哪 ...

  3. 机器学习 数据量不足问题----1 做好特征工程 2 不要用太多的特征 3 做好交叉验证 使用线性svm...

    来自:https://www.zhihu.com/question/35649122 其实这里所说的数据量不足,可以换一种方式去理解:在维度高的情况下,数据相对少. 举一个特例,比如只有一维,和1万个 ...

  4. 大数据量的算法面试题

    教你如何迅速秒杀掉:99%的海量数据处理面试题 本文经过大量细致的优化后,收录于我的新书<编程之法>第六章中,新书目前已上架京东/当当/亚马逊 作者:July 出处:结构之法算法之道blo ...

  5. 【机器学习算法实践】lightGBM将可解释的机器学习实现工业落地,小数据量机器学习就够了,大数据量还得深度学习。推荐看论文进行理解,boosting方法有残差的感觉了

    LightGBM是2017年由微软推出的可扩展机器学习系统,是微软旗下DMKT的一个开源项目,由2014年首届阿里巴巴大数据竞赛获胜者之一柯国霖老师带领开发.它是一款基于GBDT(梯度提升决策树)算法 ...

  6. 提升机器学习训练数据多样性,增加医学应用可训练数据量

    文 / Google Health 软件工程师 Timo Kohlberger 和 Yuan Liu 机器学习 (ML) 在医学成像方面的进步帮助医生可以给出更好的诊断,这在一定程度上得益于对详细标记 ...

  7. flink读取不到文件_日处理数据量超10亿:友信金服基于Flink构建实时用户画像系统的实践...

    简介: 友信金服公司推行全域的数据体系战略,通过打通和整合集团各个业务线数据,利用大数据.人工智能等技术构建统一的数据资产,如 ID-Mapping.用户标签等.友信金服用户画像项目正是以此为背景成立 ...

  8. 吴恩达:机器学习应以数据为中心

    源 | 新智元 今天是吴恩达45岁生日.他是国际最权威的ML学者之一,学生遍布世界各地.在最近的一期线上课程中,吴恩达提出了以模型为中心向以数据为中心的AI. 吴恩达发推称,「大家为自己送上最好的礼物 ...

  9. 【Python开发】Python 适合大数据量的处理吗?

    Python 适合大数据量的处理吗? python 能处理数据库中百万行级的数据吗? 处理大规模数据时有那些常用的python库,他们有什么优缺点?适用范围如何? 需要澄清两点之后才可以比较全面的看这 ...

  10. 机器学习科普文章:“一文读懂机器学习,大数据/自然语言处理/算法全有了”

    PS:文章主要转载自CSDN大神"黑夜路人"的文章:           http://blog.csdn.net/heiyeshuwu/article/details/43483 ...

最新文章

  1. 修改so_新手向总结:IDA动态调试So的一些坑
  2. RTEMS移植USB无线网卡的设想
  3. PHPUnit测试框架学习(1)
  4. mysql 5.7.14编译安装_源码编译安装mysql-5.7.14-阿里云开发者社区
  5. SIP应答消息状态码与功能
  6. HTTPS原理全面介绍【备查】
  7. Unable to parse the date: 2017-12-30 日期格式转化失败
  8. Linux虚拟机上的Scala安装
  9. java读文件写文件
  10. ArcGIS js api中关于比例尺单位改为中文的方式
  11. 某传销app的用户信息泄露
  12. 微信公众号笔记(一)
  13. gym/226036-F. Two Points【三分查找】
  14. 复变函数-复指数形式
  15. 在htmlfor循环制作菱形基础上制作空心菱形
  16. 全景拍摄—焦距与对焦教程
  17. Linux用户标识符UID与GID和用户账号
  18. 电脑系统,win7与win10到底有什么区别?
  19. JavaScript如何截取字符串的最后一位
  20. C++基础-介绍·数据结构·排序·算法

热门文章

  1. 如何在ppt中生成柱状图_PPT幻灯片中怎么插入柱形图数据图表?
  2. --legacy-peer-deps 作用
  3. 暴雪正在等待另一项_守望先锋更新一直显示正在等待另一项安装或更新怎么办...
  4. 单龙芯3A3000-7A1000PMON研究学习-(4)撸起袖子干-makefile(a)
  5. 打喷嚏喉咙痛流鼻涕英文说呢?
  6. GitHub创建token
  7. CSR8670 — 说说什么是ANC、CVC、DSP降噪
  8. 小程序微信支付errcode:40163问题
  9. PM、PO、PO、PMO、PMP的区别和介绍
  10. .net下如何压缩图片大小,超简单