机器学习需要多少训练数据?

您需要的数据量取决于您问题的复杂性和您选择的算法的复杂性。

这是事实,但如果您正处于机器学习项目的关键阶段,则无济于事。

我经常被问到的一个问题是:

我需要多少数据?

我无法直接回答您或任何人的问题。但我可以为您提供几种思考这个问题的方式。

在本文中,我将概述一套方法,您可以使用它们来思考在应用机器学习解决您的问题时需要多少训练数据。

我希望其中一种或多种方法可以帮助您理解这个问题的难度,以及它如何与您试图解决的归纳问题的核心紧密相连。

让我们开始吧。

注意:您是否有自己决定机器学习需要多少训练数据的启发式方法?请在评论中分享。

How Much Training Data is Required for Machine Learning?

机器学习需要多少训练数据?
照片来源:Seabamirum,部分权利保留。

您为什么要问这个问题?

了解您询问所需训练数据集大小的原因很重要。

答案可能会影响您的下一步。

例如

  • 您是否拥有过多的数据?考虑开发一些学习曲线来找出代表性样本的大小(如下文)。或者,考虑使用大数据框架来利用所有可用数据。
  • 您是否拥有过少的数据?考虑确认您确实拥有过少的数据。考虑收集更多数据,或使用数据增强方法来人为地增加您的样本量。
  • 您是否尚未收集数据?考虑收集一些数据并评估是否足够。或者,如果这是为了研究或数据收集成本高昂,请考虑与领域专家和统计学家交流。

更一般地说,您可能有更常见的疑问,例如:

  • 我应该从数据库中导出多少条记录?
  • 达到所需的性能水平需要多少样本?
  • 训练集必须多大才能充分估计模型性能?
  • 需要多少数据才能证明一个模型比另一个模型更好?
  • 我应该使用训练/测试拆分还是 k 折交叉验证?

本文的建议可能旨在解决这些后一个问题。

在实践中,我通过学习曲线(如下文)、在小数据集上使用重采样方法(例如 k 折交叉验证和 bootstrap)以及为最终结果添加置信区间来回答这个问题。

您要求机器学习所需样本数量的原因是什么?
请在评论中告诉我。

那么,您需要多少数据?

1. 看情况;没人能告诉您

没有人能告诉您为您的预测建模问题需要多少数据。

这是无法知道的:一个棘手的问题,您必须通过实证调查来找出答案。

机器学习所需的数据量取决于许多因素,例如:

  • 问题的复杂性,即名义上是最佳关联输入变量与输出变量的未知底层函数。
  • 学习算法的复杂性,即名义上是用于从特定示例中归纳学习未知底层映射函数的算法。

这是我们的起点。

第一次有人问时,“视情况而定”是大多数从业者会给出的答案。

2. 类比推理

在您之前,很多人都处理过许多实际的机器学习问题。

其中一些人发表了他们的研究成果。

也许您可以参考与您的问题相似问题的研究,以估算所需数据的量。

类似地,研究算法性能如何随数据集大小变化是很常见的。也许这些研究可以告诉您需要多少数据来使用特定的算法。

也许您可以对多个研究进行平均。

在 Google、Google ScholarArxiv 上搜索论文。

3. 利用领域专业知识

您需要来自您问题的一个数据样本,该样本能代表您试图解决的问题。

总的来说,示例必须是独立且同分布的。

请记住,在机器学习中,我们正在学习一个映射函数,将输入数据映射到输出数据。学习到的映射函数的好坏取决于您提供给它用于学习的数据。

这意味着需要有足够的数据来合理地捕捉输入特征之间以及输入特征与输出特征之间可能存在的关系。

利用您的领域知识,或寻找领域专家,并推理出该领域以及可能需要的数据量,以合理地捕捉问题中有用的复杂性。

4. 使用统计启发式方法

有统计启发式方法可用于计算合适的样本量。

我见过的大多数启发式方法都是针对分类问题,作为类别数、输入特征或模型参数的函数。有些启发式方法看起来很严谨,有些则完全是临时的。

以下是一些您可以考虑的例子:

  • 类别的倍数:每个类别必须有 x 个独立示例,其中 x 可以是数十、数百或数千(例如 5、50、500、5000)。
  • 输入特征的倍数:示例数必须比输入特征数多 x%,其中 x 可以是数十(例如 10)。
  • 模型参数的倍数:模型中的每个参数必须有 x 个独立示例,其中 x 可以是数十(例如 10)。

在我看来,它们都是临时的比例因子。

您是否使用过这些启发式方法?
效果如何?请在评论中告诉我。

在这个主题的理论工作中(不是我的专业领域!),分类器(例如 k-近邻)经常与最优贝叶斯决策规则进行对比,并且其难度以“维度灾难”的背景来表征;也就是说,随着输入特征数量的增加,问题的难度呈指数级增长。

例如

研究结果表明,对于高维问题的稀疏样本(例如少量样本和大量输入特征),应避免使用局部方法(如 k-近邻)。

为了更友好的讨论,请参阅:

5. 非线性算法需要更多数据

更强大的机器学习算法通常被称为非线性算法。

根据定义,它们能够学习输入和输出特征之间复杂非线性关系。您很可能正在使用这些类型的算法或打算使用它们。

这些算法通常更灵活,甚至是无参数的(除了模型参数的值之外,它们还可以确定建模问题所需的参数数量)。它们也是高方差的,意味着预测会根据用于训练它们的数据集而变化。这种增加的灵活性和强大性是以需要更多训练数据为代价的,通常是大量数据。

事实上,一些非线性算法,如深度学习方法,可以随着您提供更多数据而不断提高其性能。

如果线性算法每类有几百个示例就能获得良好性能,那么对于随机森林或人工神经网络等非线性算法,您可能需要每类有数千个示例。

6. 评估数据集大小与模型技能

在开发新的机器学习算法时,通常会展示甚至解释算法的性能如何响应数据量或问题复杂度。

这些研究可能由算法作者执行和发表,也可能不存在于您正在处理的算法或问题类型中。

我建议您使用您可用的数据和一种表现良好的算法(如随机森林)来执行自己的研究。

设计一项评估模型技能与训练数据集大小之间关系的研究。

将结果绘制成折线图,x 轴为训练数据集大小,y 轴为模型技能,这将让您了解数据大小如何影响您特定问题的模型技能。

这张图被称为学习曲线

从这张图中,您或许可以预测开发一个熟练模型所需的数据量,或者在收益递减的转折点之前您实际需要多少数据。

我强烈建议普遍采用这种方法,以在对问题有全面理解的背景下开发稳健的模型。

7. 粗略估算

在应用机器学习算法时,您需要大量数据。

通常,您需要的数据比经典统计学中合理需要的数据还要多。

我经常以敷衍的回答来回答需要多少数据的问题:

获取并使用尽可能多的数据。

如果被追问,并且对您的问题毫无了解,我会说一些非常粗略的话,比如:

  • 您需要数千个示例。
  • 不少于数百个。
  • 对于“平均”建模问题,理想情况下需要数万到数十万。
  • 对于深度学习所处理的“难题”,则需要数百万到数千万。

同样,这只是更多临时的估算,但如果需要,它是一个起点。所以,开始吧!

8. 获取更多数据(无论如何!?)

大数据经常与机器学习一起讨论,但您可能不需要大数据来拟合您的预测模型。

有些问题需要大数据,您拥有的所有数据。例如,简单的统计机器翻译

如果您正在进行传统的预测建模,那么训练集大小很可能会达到收益递减点,您应该研究您的问题和您选择的模型,以确定该点在哪里。

请记住,机器学习是一个归纳过程。模型只能捕捉它所看到的内容。如果您的训练数据不包含边缘案例,那么模型很可能不支持它们。

不要拖延;开始吧

现在,停止准备建模您的问题,而是开始建模。

不要让训练集大小的问题阻止您开始进行预测建模。

在许多情况下,我认为这个问题是拖延的原因。

获取您所能获得的所有数据,使用您所拥有的数据,然后看看模型在您的问题上的效果如何。

从中学习,然后采取行动,通过进一步分析来更好地理解您所拥有的,通过增强来扩展您所拥有的数据,或从您的领域收集更多数据。

进一步阅读

如果您想深入了解此主题,本节提供了更多资源。

在 Quora、StackOverflow 和 CrossValidated 等问答网站上,关于这个问题有很多讨论。以下是一些精选的例子,可能会有所帮助。

我认为关于这个问题有一些很棒的统计研究;以下是一些我能找到的。

其他相关文章。

如果您知道更多,请在下面的评论中告诉我。

总结

在这篇文章中,您发现了一系列思考和推理回答常见问题的方法:

我需要多少训练数据用于机器学习?

这些方法有帮助吗?
在下面的评论中告诉我。

你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
当然,除了您具体需要多少数据的问题。

机器学习需要多少训练数据?的73条回复

  1. kareem hesham 2017年7月24日 上午6:09 #

    根据我的一点经验,处理语音识别,特别是独立说话人系统,可能需要大量数据,因为它很复杂,而且像 SVM 和隐马尔可夫模型这样的技术需要更多的样本,而且您还有一个很大的特征尺度。
    数据还有一个重要方面:特征提取方法以及它的描述性、独特性和鲁棒性如何。这样您就可以对您想要的样本数量以及哪些特征能充分代表数据有一个直观的认识。

    • Jason Brownlee 2017年7月24日 上午6:57 #

      非常棒,谢谢分享,Kareem。

    • Mahmoud Galal 2019年12月23日 下午7:08 #

      你好 Kareem,
      关于你说的 SVM 需要更多样本。我认为你不应该把 SVM 看作是处理大数据问题的最佳模型,因为它的 Big O 复杂度是 n^2,所以训练你的模型需要很长时间。根据我的经验,你不应该用 SVM 处理巨大的数据集。如果我说错了,请纠正我。

  2. Gerrit Govaerts 2017年7月24日 下午5:50 #

    我更喜欢从经典的(线性回归理论的)“自由度”概念来思考。我猜,你计算一个下界,基于你的网络中的连接数量,需要基于你的观测值来计算一个最优的“估计量”。

  3. Jie 2017年7月27日 下午12:17 #

    好文!

    你说“在实践中,我通过学习曲线(如下文)、在小数据集上使用重采样方法(例如 k 折交叉验证和 bootstrap)以及为最终结果添加置信区间来回答这个问题。”

    您能否分享一些使用 Python/R 或其他语言的示例,再次感谢这篇文章。

    • Jason Brownlee 2017年7月28日 上午8:27 #

      谢谢!

      是的,我在博客上有一些关于置信区间的文章,试试搜索一下。

  4. Sulthana 2017年7月28日 上午11:26 #

    对于无监督学习,我们是应该按顺序还是随机地提取视频帧?

  5. WJS 2017年9月21日 下午5:40 #

    感谢您这篇好文章。

  6. Ken 2018年1月4日 下午7:43 #

    我有一些问题。

    1. 神经网络中更复杂的架构是否需要更多的样本数据?

    2. 如果我们只有少量样本数据,使用不太复杂的神经网络架构是否有助于使其更好?

  7. Brian Tremaine 2018年7月14日 上午3:29 #

    我目前正在处理一个相关的问题。这是一个类不平衡的二元分类器(通过/失败)。我正在尝试对半导体器件的固有故障进行建模。有 8 个关键参数,我有 5000 个器件的数据,其中只有大约 15 个故障。我不能确定仅 15 个故障是否足以训练一个具有 8 个参数的模型。在这种情况下,我不知道如何处理数据增强。

    如果有人有任何建议,请发布 😉

  8. Mixkino 2018年8月11日 上午10:33 #

    所以,与其给出“正确”答案,不如给一个估计值,一个实用的经验法则?一种方法是采用实证方法,如下所示。首先,自动生成大量的逻辑回归问题。对于每个生成的问题,研究训练数据量与训练模型性能之间的关系。通过观察一系列问题之间的这种关系,可以归纳出一个简单的规则。

  9. Jenny 2018年11月7日 下午2:00 #

    嗨,Jason

    我目前正在处理一个多分类问题,其中包含大约 90 个样本大小和 6 个不平衡组(例如,A-20,B-1,C-3……)。我将样本分成训练和测试组,并尝试了决策树等一些分类器。我有以下两个问题:

    1.对于这种小样本量问题,使用这些分类器有意义吗?
    2.您对建模这个问题有什么建议吗?

    谢谢

  10. Anonymous 2018年12月5日 下午10:26 #

    如何获得样本总数?训练样本和测试样本?

    • Jason Brownlee 2018年12月6日 上午5:55 #

      也许可以尝试几种不同的比例拆分,并评估由此产生的模型稳定性,以查看数据集大小是否具有代表性。

  11. omar 2018年12月19日 上午8:47 #

    你好,

    我有一个时间序列数据集,使用 SVM,当我的训练数据集是 30 天时,我的错误比训练数据集增加到 60 天时低。

    错误的评估是在测试数据集上进行的。

    你能回答我吗?为什么当训练数据集从 30 天增加到 60 天时。

    此致,

    • Jason Brownlee 2018年12月19日 下午2:28 #

      这取决于您的数据和您选择的模型。

      也许可以找到一个最适合您特定数据集的配置。

  12. Ahmed 2019年1月13日 下午8:42 #

    嗨,Jason,

    我有一个包含 25k 观测值和 24 个属性的数据集。
    所有属性都是字符串:有些属性是
    名字、姓氏、电子邮件

    我需要找到数据中的规则:例如
    电子邮件何时具有空值?
    以及
    我需要找到电子邮件的构建规则。
    例如
    第一个 name.lastname@domain.com

    有什么帮助吗?
    对于第一个问题,我将使用:关联规则。
    对于第二个问题,聚类?

    谢谢

    • Jason Brownlee 2019年1月14日 上午5:24 #

      听起来是个难题。

      也许可以将其分解为每个子问题,然后逐一解决。

  13. john 2019年3月28日 下午8:42 #

    感谢分享机器学习信息。

  14. Subin An 2019年5月13日 下午3:48 #

    感谢分享有用的文章!!

    如果您不介意,我可以翻译这篇文章并分享吗?

  15. Vishvesh 2019年6月20日 上午2:08 #

    感谢您的文章!

    我有一个问题

    我有 4 年的每日数据。我该如何决定是要以每日数据格式训练我的 RNN 模型,还是将其重采样为每月数据然后训练我的模型?另外,与每日数据相比,将其重采样为每月数据有何区别?

    • Jason Brownlee 2019年6月20日 上午8:34 #

      我建议测试一套框架和模型,看看哪种最适合您特定的数据集。

  16. ilyes 2019年8月12日 上午12:56 #

    你好,感谢您的帖子。抱歉写得长,我真的很感激您能给我一些关于我方法的想法!

    我最近一直在处理一些时间序列多分类问题,样本很少。我有 11 个类别,每个类别 8 个样本,26 个特征(手工制作),并且我无法进行数据增强。除了迁移学习和自编码器,我还尝试了一些机器学习技术:

    – 首先,对于每个二元分类,我循环遍历不同的特征集选择:取最好的 10 个(领域专长)、PCA 等。

    – 我训练了所有 55 个可能的二元分类器,每个模型都从 10 个模型网格中选择,基于最佳准确率:SVC、随机森林、adaboost 等。

    – 对于每个二元分类,以及每个模型,我使用 Leave 2 out CV 在 10 个样本上进行了网格搜索。选择最佳参数后,我使用 Leave 2 out CV 在整个数据集上重新训练模型,并报告获得的平均准确率。

    – 选择好某个二元分类的最佳管道后,我再进行下一个分类,以此类推,直到完成 55 个组合。

    – 每个二元分类的分数都不错(从 75% 到 100%)。
    – 最后,我将所有选定的管道并排放置,预测结果是预测次数最多的类别。

    • Jason Brownlee 2019年8月12日 上午6:39 #

      干得好!

      我建议使用在您的数据集上表现最好的方法。没人能告诉你那是什么,你必须通过实验来发现。

      数据量如此之少,也许 LOOCV 是一个好主意,并且使用带有正则化的模型来避免过拟合。

      • ilyes 2019年8月12日 下午10:33 #

        谢谢回复 Jason!
        这在技术上是 LOOCV,因为我处理的是患者数据。我的意思是,数据中的每个受试者(患者)都有一个积极样本和一个阴性样本。所以我正在训练 7 个受试者,测试 1 个受试者。

  17. Will 2019年12月11日 上午7:17 #

    你好,
    感谢这篇伟大的文章!
    我正在处理一个小型而复杂的数据集。
    大约 14 名患者接受了精神健康手术。
    我有非常复杂的术前临床和神经影像数据。患者被分为结果好或结果差。
    我正在寻找该结果的潜在预测因子。我知道我的数据远少于最佳水平,但我希望能识别出一些预测因子。您有什么方法建议吗?
    谢谢!

  18. George K 2020年1月20日 下午5:35 #

    你好 Jason,
    感谢这篇有用的文章。

    我是一名机器学习初学者。
    我的数据样本仅包含 175 个观测值。
    我有大约 35 个特征,但使用 xgboost 的特征重要性,我选择了具有最高重要性的特征,因此最终得到了 13 个特征。

    输出是多类别的,最多可以有 5 种不同的值。
    每个类别的观测数量如下:
    类别 1:16 个观测值
    类别 2:56 个观测值
    类别 3:44 个观测值
    类别 4:49 个观测值
    类别 5:10 个观测值

    我可以在这么小的样本上应用 XGBoost 吗?我是否应该进一步减少特征数量?

    • Jason Brownlee 2020年1月21日 上午7:09 #

      也许可以尝试一套算法,找出最适合的。

  19. Ali Davari 2020年2月15日 上午3:38 #

    感谢这篇有用的文章。我正在训练一个卷积自编码器,使用一个巨大的 3D 图像数据库。训练一个 epoch 需要大约 10 天!我能否仅在部分数据上训练自编码器,然后将其用于所有数据进行编码?我将使用编码后的图像进行分类。

  20. Francisco Hamlin 2020年4月10日 下午11:39 #

    嗨,Jason,

    这篇文章太棒了!我之所以来到这里,是因为我想要制作的程序的训练数据收集起来会很繁琐,而且我不确定投入大量时间到这个项目是否值得。
    我是一名二年级物理系学生,我对编程并不陌生(也不是专家),但我从未编写过任何机器学习代码。
    我过去 8 年来的主要爱好是速拧(即尽可能快地解决魔方)。人们使用算法(一系列转动)来解决魔方,这些算法可以移动感兴趣的特定部分,同时保持魔方其余部分不变,例如循环三个角。在速拧中,算法的速度优化很重要,而且大多数时候这意味着牺牲移动次数来换取更好的执行速度(例如,某个组合的最佳解决方案是 10 步,但还有另一种可能的解决方案,需要 14 步,但执行速度要快得多)。
    * 问题
    如果您想为新情况找到一个算法,您可以使用 CubeExplorer,它会吐出它找到的所有解决方案的长列表。然后,您必须逐一检查每个算法,看看哪些算法易于执行,然后从中选出您可以执行得最快的算法。
    * 我的解决方案
    我的项目是创建一个人工智能,能够区分好算法和坏算法。想法是,您输入 CubeExplorer 生成的列表,AI 会根据它认为每个算法执行的速度对列表进行排序。

    话虽如此,训练数据将是算法,以及一个表示我执行每个算法的速度(例如时间)的数字。由于只有人类才能判断一个算法的好坏,因此通过代码生成训练数据是不可能的。我需要练习每个训练示例大约两到三分钟,然后才能 reasonably fast 地执行它。这意味着即使要“生成”一个只有约 1000 个示例的训练集,也需要超过 50 个小时!
    更有效的方法是寻求世界各地速拧玩家的帮助(这是一个非常互联的社区)(最好是那些能稳定在 10 秒内解决问题的人,我自己的平均水平约为 9 秒)。我能收集到的训练数据量将取决于我要求他们分析的示例数量以及我设法说服的人数。我也可能冒着“程序的好坏取决于训练数据”的风险。

    我想知道您对这个项目的看法。您认为可行吗?如有必要,我可以提供更多细节。我想在全力以赴并最终遇到障碍之前获得专家意见。

    谢谢!😀

    • Jason Brownlee 2020年4月11日 上午6:21 #

      谢谢。

      不知道,也许可以尝试原型化以了解更多信息。

  21. Illiden 2020年5月13日 下午8:22 #

    您好,感谢您的精彩内容。

    我有一个数值表格数据集,包含 10 到 15 个实验样本,我打算用它们来拟合回归模型。我考虑过使用 SMOTE 等增强方法来生成更多数据。我有几个问题:
    1- 这里合理的过采样比例是多少?如果我将 10 个样本变成 30 个,是否可以?还是应该更多或更少?
    2- 除了 SMOTE,我还能使用哪些其他技术来生成合成数据,考虑到我的数据量?

  22. Gregory 2020年7月3日 上午3:04 #

    你好,

    这篇文章写得很好。
    我浏览了评论,但没有找到与我的主题非常接近的内容。

    那么,假设您在电信行业从事客户流失模型。
    整个客户群约为 1000 万,您需要就分析所需的数据量做出决定。
    如您所见,真实人口非常庞大,因此没有小样本问题,反之亦然。
    一种解决方案是基于模型的性能来决定,如果性能不可接受,则尝试增加它。
    这是可以的,因为建模过程是一个反复的过程,有来回的调整。
    在开始建模部分之前,真正的问题是如何决定一个好的初始随机样本量。
    您如何确定适当的大小以实现更复杂或“结构良好”的解决方案?

    • Jason Brownlee 2020年7月3日 上午6:24 #

      好问题。

      对您的统计数据或模型进行敏感性分析,以查看样本量如何影响估计值和/或模型性能。

  23. Ding 2020年8月4日 下午11:40 #

    嗨,您提到的观点非常有帮助。谢谢。此外,我有一个问题。我正在尝试用不同大小的训练集训练一个 ANN 模型进行回归,以检查大小对模型性能的影响。我的大小是 100、200、500、1000、2000 和 4000。当模型从 100 训练到 1000 时,性能越来越好,但突然在使用 2000 和 4000 大小时变得非常糟糕。我无法理解,您有什么想法吗?谢谢。

    • Jason Brownlee 2020年8月5日 上午6:16 #

      也许可以检查您的测试框架是否稳健,并且结果是否可靠——例如,重复交叉验证。

  24. Simon Woodward 2020年8月7日 上午6:41 #

    很好的文章,谢谢!我想知道在数据收集之前估计需要多少数据的情况。我与实验科学家一起工作,这在实验设计中会出现。我认为您没有提到这一点,但一种方法是根据专家意见构建一个或多个合成数据集,然后使用这些数据集来探索不同样本量下的可能模型性能?这种方法以前用过吗?谢谢。

  25. Avinash 2021年2月13日 上午12:24 #

    在机器学习中,什么问题更严重:数据过多还是数据过少?

    • Jason Brownlee 2021年2月13日 上午6:07 #

      取决于问题和模型。

      • Avinash 2021年2月14日 上午5:09 #

        谢谢。请您详细举例说明?

  26. Tanrada 2021年5月11日 下午11:36 #

    嗨,Jason,

    感谢您这篇精彩的文章,我有一个关于方法 6)数据集大小与模型技能的问题。我绘制了验证学习曲线(基于您的另一篇文章),这让我想知道模型准确性的变化是否也受到除了训练集增大之外,验证集更大的影响。

    随着我增大训练集,模型准确性变得更加稳定(变化更少),但这也可以是因为我的验证集更大。

    我该如何解决这个问题?我是否应该在所有训练集大小上都固定我的验证集大小?

    • Jason Brownlee 2021年5月12日 上午6:14 #

      好问题,50/50 的划分是个不错的开始。

  27. Tanrada 2021年6月2日 下午7:54 #

    如果我使用 10 折交叉验证来训练我的模型,将数据 50 训练、50 验证(本质上,与我最终训练模型的方式不同)进行拆分是否会是一个问题?因为这意味着我将无法获得与 10 折相同的训练数据量。

    另外,对于方法 6),我当时在想,也许通过观察准确率在最后 3 个点上的稳定,就可以认为数据足够了,因为即使在第 1 个点上验证集更小,但准确率与第 3 个点相同。因此,验证集大小本身并不重要,对吗?再次感谢您,Jason!

    • Jason Brownlee 2021年6月3日 上午5:34 #

      验证集应该从 CV 的训练折叠中抽取。

      尽管如此,请使用对您的项目/目标可靠的任何测试框架。

  28. mamad 2021年6月24日 上午12:01 #

    你好
    我有 144 个样本(每个有 18 个特征),对于每个样本,我考虑了多输出,如 [100, 25],SVM 训练得非常好,但无法预测新数据。请帮帮我 🙁 我应该更改我的算法吗?

    • Jason Brownlee 2021年6月24日 上午6:03 #

      我建议评估一套不同的数据准备、模型和模型配置,以找出最适合您特定数据集的方法。

  29. Leonardo 2021年8月21日 上午4:29 #

    当您处理一个多分类问题,并且有超过 10,000 个特征(全部是二元的,全部来自 one-hot 编码)时,您有什么建议?
    我有大约 140,000 个类别,每个类别经过过采样后有 300 个观测值。
    您认为我应该增加每个类别的样本数量吗?

    • Adrian Tam
      Adrian Tam 2021年8月21日 上午5:25 #

      当然,您需要大大增加样本量!这样想吧,如果我有 10K 个不同的特征和每个类 300 个观测值。那么 300/10K = 3%,所以我预计大多数特征在一个类中没有变化。您将无法知道该特征是否对该类很重要,更不用说特征之间的相关性了。

      对于如此大量的特征,也许您应该首先考虑降维?

      • Leonardo 2021年8月21日 下午12:48 #

        是的,我认为别无选择。不幸的是,特征来自 one-hot 编码(全部),所以我不知道降维能有多大帮助。我一定会尝试,并且我会重新采样,以便 n_sample > n_features。
        谢谢大家!

        • Adrian Tam
          Adrian Tam 2021年8月23日 上午4:43 #

          谢谢。

  30. Radagast 2023年9月11日 下午7:53 #

    我问这个问题是因为我有一个数据量非常有限的问题(语言——我不能凭空创造新词),我想知道我实际上可以考虑哪种机器学习算法/模型。例如,我知道我可以考虑感知器,但我知道问题太复杂了。我能考虑 LSTM 吗?(暂不考虑迁移学习)

  31. poojapf 2023年11月25日 下午10:04 #

    非常感谢您这篇深度文章。

    • James Carmichael 2023年11月26日 上午9:35 #

      非常欢迎您 poojapf!我们感谢您的支持!

发表回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。