初学者对机器学习课程中“交叉验证”名词的疑问

2020-07-13 00:44:39 +08:00
 silencht

机器学习初学者,感谢各位的包涵。疑问如下:

首先,吴恩达机器学习课程中,第六周应用机器学习的建议——模型选择和交叉验证一节中讲到(如图一),将六成数据作为训练集,两成数据交叉验证集,两成数据测试集。然后分四步:

第一:用训练集训练出多个模型得到各自参数;

第二:将这若干个模型分别在此用交叉验证集计算各自交叉验证误差;

第三:选取交叉验证误差最小的模型;

第四:用第三步选出的模型,对测试集计算泛化误差。

↑↑↑图一↑↑↑

以上大体是吴恩达课程中该部分对交叉验证的概述。

然而,我在搜索引擎及书籍中看到一种观点如下,如图二《白话机器学习算法》,这本书的意思大概为:

将全部数据集本身切分,然后分别依次互相做交叉验证集。

↑↑↑图二↑↑↑

两处对交叉验证名词的解读有明显不同

故有此疑问,机器学习中的交叉验证到底是指什么呢?吴恩达机器学习课程和一些书籍中的该名词指的是同一种事物吗?

2448 次点击
所在节点    机器学习
9 条回复
lsvih
2020-07-13 01:17:44 +08:00
如果我没记错的话前面那个叫 holdout cross validation,后面是标准的 k-fold cross validation
conge
2020-07-13 04:25:24 +08:00
数据集够大,可以用吴的方法,预留数据做 CV 。数据集不够大,不能预留的,用第二种方法。
cqcn1991
2020-07-13 06:37:37 +08:00
两个都叫 validation
Cross validation 指的是不用全部数据来做训练, 拿一部分做验证.
cqcn1991
2020-07-13 06:37:54 +08:00
以避免 over fittinh 的问题
futou
2020-07-13 08:48:15 +08:00
第二种情况主要针对传统机器学习,样本集很小,再独立出验证和测试集不再具有代表性。
打完看了一眼,正文中说的很清楚:“然而,如果原始数据集很小....”
另外我个人认为 cross validation 默认就是 k-fold cross validation,第一种一般验证集只叫做 validation
jingous
2020-07-13 09:13:55 +08:00
@futou +1
shm7
2020-08-28 17:33:04 +08:00
你不但没搞明白什么是 交叉验证,你恐怕连什么是验证 /开发集,什么是测试集都没搞清。

我还是建议看看知乎“2020 秋招算法岗诸神黄昏”,有可能救你一命。
silencht
2020-08-30 02:27:50 +08:00
@shm7 我认为一楼以及后续几位的回复基本解决了我的疑惑。但听您这么说,确实有点儿不知所措了。T ^ T
bigbigbigbug
2020-10-12 18:05:51 +08:00
交叉验证,我的理解是对数据取不同部分做训练和测试。比如啊,做时间序列预测,123456 月份预测 7 月份挺准的,234567 预测 1 准吗,就多试几下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/689422

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX