`
somefuture
  • 浏览: 1089684 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

(转)机器学习:开发集和测试集

 
阅读更多

转子吴恩达deeplearningai

 

根据公司的核心市场情况,你将猫咪 app 的图像数据划分为“美国”、“中国”、“印度”和“其它地区”四个区域。在设立开发集和测试集时,可以尝试将美国和印度的数据归于开发集,而中国和其它地区的数据归于测试集。也就是说我们可以随机地将其中两个区域分配给开发集,另外的两个区域分配给测试集。这样做对吗?

 

 

当然不对!一旦定义了开发集和测试集,你的团队将专注于提高开发集的性能表现,这就要求开发集能够体现任务的核心:使算法在四个地区都表现优异,而不仅仅是其中的两个。

开发集和测试集的分布不同还将导致第二个问题:你的团队开发的系统可能在开发集上表现良好,但在测试集上却表现不佳。我目睹过这样的事情发生,这将让人十分沮丧并且浪费大量的时间,因此希望你不要重蹈覆辙。

举个例子,假设你的团队开发了一套能在开发集上运行性能良好,却在测试集上效果不佳的系统。如果开发集和测试集分布相同,那么你就会非常清楚地知道问题在哪:在开发集上过拟合了(overfit)。解决方案显然就是获得更多的开发集数据。

但是如果开发集和测试集来自不同的分布,解决方案就不那么明确了。此时可能存在以下一种或者多种情况:
1. 在开发集上过拟合了。
2. 测试集比开发集更难进行预测,尽管算法做得足够好了,却很难有进一步的改进空间。
3. 测试集不一定更难预测,但与开发集性质不同(分布不同)。因此在开发集上表现良好的算法不一定在测试集上也能够表现良好。如果是这种情况,大量改进开发集性能的工作将会是徒劳的。

构建机器学习应用已是一件难事,而开发集和测试集分布的不匹配又会引入额外的不确定性,即提高算法在开发集上的性能表现,是否也会提升其在测试集的性能表现?在这样的情况下很难弄去清楚哪些工作是有效的,哪些工作是在浪费时间,从而会影响到工作的优先级确定。

 

在处理第三方基准测试(benchmark)问题时,提供方可能已经指定了服从不同分布的开发集和测试集数据。与数据分布一致的情况相比,此时运气带来的性能影响将超过你所使用的技巧带来的影响。找到能够在某个分布上进行训练,并能够推广到另一个分布的学习算法,是一个重要的研究课题。但如果你想要在特定的机器学习应用上取得进展,而不是搞研究,我建议你尝试选择服从相同分布的开发集和测试集数据,这会让你的团队更有效率。

开发集的规模应该大到足以区分出你所尝试的不同算法间的性能差异。例如,如果分类器 A 的准确率为 90.0% ,而分类器 B 的准确率为 90.1% ,那么仅有 100 个样本的开发集将无法检测出这 0.1% 的差异。相比我所遇到的机器学习问题,一个样本容量为 100 的开发集的规模是非常小的。通常来说,开发集的规模应该在 1,000 到 10,000 个样本数据之间,而当开发集样本容量为 10,000 时,你将很有可能检测到 0.1% 的性能提升。

从理论上说,还可以检测算法的变化是否会在开发集上造成统计学意义上的显著差异。 然而在实践中,大多数团队并不会为此而烦恼(除非他们正在发表学术研究论文),而且我在检测过程中并没有发现多少有效的统计显著性检验。

像广告服务、网络搜索和产品推荐等较为成熟且关键的应用领域,我曾见过一些团队非常积极地去改进算法性能,哪怕仅有 0.01% 的提升,因为这将直接影响到公司的利润。在这种情况下,开发集规模可能远超过 10,000 个样本,从而有利于检测到那些不易察觉的效果提升。

那么测试集的大小又该如何确定呢?它的规模应该大到使你能够对整体系统的性能进行一个高度可信的评估。一种常见的启发式策略是将 30% 的数据用作测试集,这适用于数据量规模一般的情况(比如 100 至 10,000 个样本)。但是在大数据时代,我们所面临的机器学习问题的样本数量有时会超过 10 个亿,即使开发集和测试集中样本的绝对数量一直在增长,可总体上分配给开发集和测试集的数据比例正在不断降低。可以看出,我们并不需要远超过评估算法性能所需的开发集和测试集规模,即开发集和测试集的规模并不是越大越好。

1
0
分享到:
评论

相关推荐

    Python机器学习实践-测试驱动的开发方法 - 2018_python学习_python机器学习_python_machine

    在提供的"Python机器学习实践-测试驱动的开发方法 - 2018.pdf"文档中,可能会详细介绍如何将TDD应用于Python机器学习项目,包括具体步骤、最佳实践以及相关的工具和技术。通过深入阅读和实践这份文档,你将能够更好...

    数据科学领域资源汇总:数据集搜索平台+机器学习+公开数据集+为数据分析和机器学习项目提供免费数据资源.txt

    为了方便数据分析和机器学习项目的开发,已经有许多公开的数据集资源可以供大家免费使用。 在这些公开的数据集资源中,Kaggle、UCI机器学习存储库、Google 数据集搜索、AWS 公开数据集、数据集之家、数据堂、数据派...

    机器学习UCI测试数据集资源包

    接着,数据通常被分为训练集和测试集,训练集用于训练模型,而测试集用于评估模型的泛化能力。在机器学习中,常见的模型有线性回归、决策树、随机森林、支持向量机(SVM)和神经网络等。对于图像相关的任务,卷积...

    吴恩达机器学习资料

    吴恩达强调了训练集和测试集的重要性,并指出它们需要来自相同的分布,并给出了如何决定开发测试集的大小。 在评价指标方面,书中提出了建立一个单一的团队优化的评价指标,并就如何选择和优化这个指标进行了详尽的...

    机器学习数据集,房价预测数据集,含使用百度飞桨重写的房价预测模型

    3. 划分数据集:通常分为训练集、验证集和测试集,用于模型训练、参数调优和性能评估。 二、房价预测数据集 1. 特性:房价预测数据集可能包含多个地区的房屋信息,每条记录对应一个房屋的价格和一系列特征。 2. ...

    UCI机器学习数据集

    UCI机器学习数据集是数据挖掘和机器学习领域的一个重要资源库,由加利福尼亚大学欧文分校(University of California, Irvine)的机器学习研究组维护。这个数据集库包含了大量的多领域、多用途的数据集,用于研究...

    机器学习系统的质量要素与测试方法.pdf

    - 测试验证:利用验证集和测试集评估模型的性能,包括精度、召回率、F1分数等指标,检查模型的稳定性和鲁棒性。 - 部署应用:在实际环境中监控模型的表现,定期进行模型的更新和优化。 3. 机器学习系统的测试方法 ...

    Python机器学习实践:测试驱动的开发方法_机器学习_python_源码

    在机器学习领域,Python语言因其简洁明了的语法和丰富的库支持而被广泛采用。测试驱动的开发(Test-Driven ...在实际操作中,结合具体的机器学习任务和Python测试工具,我们可以构建出高效可靠的机器学习系统。

    深度学习/机器学习/数据集资源汇总.zip

    深度学习和机器学习是当前人工智能领域中的核心技术,而数据集则是它们得以发展的基石。这个名为“深度学习/机器学习/数据集资源汇总.zip”的压缩包文件,显然包含了丰富的深度学习和机器学习数据集资源,这对于研究...

    机器学习——从入门到精通.pdf

    本书还特别提供了在线资源,包括多个实际应用中的机器学习算法的源代码和数据集,例如用于人脸识别的神经网络、用于信贷分析的决策树学习以及用于分析文本文档的贝叶斯分类器等。这些资源可以帮助读者更好地理解算法...

    机器学习 服饰分类数据集

    总的来说,这个“机器学习 服饰分类数据集”为开发和优化服饰识别系统提供了宝贵的资源。通过深度学习技术,尤其是ResNet-50模型,结合高质量的训练数据,可以构建出性能卓越的服饰分类器,不仅在学术研究中有着广泛...

    乳腺癌数据集可用于机器学习

    乳腺癌数据集是机器学习领域一个经典且广泛使用的案例研究,尤其在医学诊断系统的开发中。这个数据集包含了大量患者的临床特征,用于训练和评估预测乳腺癌的模型。以下是关于这个数据集及其在机器学习中应用的一些...

    Python-基于TensorFlowPyTorch的50多种机器学习模型和测试

    标题提到的"Python-基于TensorFlowPyTorch的50多种机器学习模型和测试"项目,显然包含了广泛的机器学习模型,这些模型可能涵盖了分类、回归、聚类、自然语言处理(NLP)等多种任务。 TensorFlow是由Google开发的开源...

    坦克大战数据集:为游戏开发和机器学习而生

    坦克大战数据集是一个专为游戏开发和机器学习设计的综合性数据资源,它的出现为研究者和开发者提供了一个独特的实验平台。这个数据集包含了游戏过程中的关键信息,包括地图数据、坦克状态、子弹轨迹、游戏事件以及...

    机器学习实战手写识别训练集

    "机器学习实战手写识别训练集"是用于开发和测试这类算法的数据集,通常用于教授初学者如何构建一个简单的手写数字识别系统。这个压缩包包含了用于训练的数字图像数据,我们可以使用Python作为编程语言来处理和分析...

    机器学习(分类模型):软件开发的效果和效率数据集

    有一个数据集,它比较了行为驱动开发(BDD)和测试的质量指标。这里提到的“行为驱动开发(BDD)”是一种软件开发方法,它强调以用户行为为中心来设计和验证软件。而“测试”可能是指软件测试,即通过各种测试手段来...

    机器学习手写数字识别0-9所有训练数据集和测试数据集打包下载

    2. **数据集的结构**:压缩包中的`trainingDigits`和`testDigits`代表了训练集和测试集。训练集用于训练模型,让模型学习如何识别不同数字;测试集则用来评估模型的泛化能力,即在未见过的数据上的表现。 3. **训练...

    50个最佳机器学习公共数据集.doc

    【数据集】是机器学习和人工智能领域的重要资源,它们提供了训练和测试模型所需的真实世界数据。以下是一些从描述和部分内容中提取的关键知识点: 1. **Kaggle**:Kaggle 是一个知名的竞赛平台,提供了多种数据集,...

    使用ClickHouse的机器学习——Machine Learning with ClickHouse.pdf

    对于机器学习,需要加载大量的数据集,以便进行模型训练和测试。 2. 数据预处理:在机器学习中,数据预处理是一个非常重要的步骤。ClickHouse提供了多种数据预处理函数,例如数据清洗、数据转换、数据聚合等,可以...

Global site tag (gtag.js) - Google Analytics