机器学习初学者,感谢各位的包涵。疑问如下:
首先,吴恩达机器学习课程中,第六周应用机器学习的建议——模型选择和交叉验证一节中讲到(如图一),将六成数据作为训练集,两成数据交叉验证集,两成数据测试集。然后分四步:
第一:用训练集训练出多个模型得到各自参数;
第二:将这若干个模型分别在此用交叉验证集计算各自交叉验证误差;
第三:选取交叉验证误差最小的模型;
第四:用第三步选出的模型,对测试集计算泛化误差。
↑↑↑图一↑↑↑
以上大体是吴恩达课程中该部分对交叉验证的概述。
然而,我在搜索引擎及书籍中看到一种观点如下,如图二《白话机器学习算法》,这本书的意思大概为:
将全部数据集本身切分,然后分别依次互相做交叉验证集。
↑↑↑图二↑↑↑
两处对交叉验证名词的解读有明显不同。
故有此疑问,机器学习中的交叉验证到底是指什么呢?吴恩达机器学习课程和一些书籍中的该名词指的是同一种事物吗?
1
lsvih 2020-07-13 01:17:44 +08:00 2
如果我没记错的话前面那个叫 holdout cross validation,后面是标准的 k-fold cross validation
|
2
conge 2020-07-13 04:25:24 +08:00 via Android
数据集够大,可以用吴的方法,预留数据做 CV 。数据集不够大,不能预留的,用第二种方法。
|
3
cqcn1991 2020-07-13 06:37:37 +08:00 via Android
两个都叫 validation
Cross validation 指的是不用全部数据来做训练, 拿一部分做验证. |
4
cqcn1991 2020-07-13 06:37:54 +08:00 via Android
以避免 over fittinh 的问题
|
5
futou 2020-07-13 08:48:15 +08:00
第二种情况主要针对传统机器学习,样本集很小,再独立出验证和测试集不再具有代表性。
打完看了一眼,正文中说的很清楚:“然而,如果原始数据集很小....” 另外我个人认为 cross validation 默认就是 k-fold cross validation,第一种一般验证集只叫做 validation |
7
shm7 2020-08-28 17:33:04 +08:00
你不但没搞明白什么是 交叉验证,你恐怕连什么是验证 /开发集,什么是测试集都没搞清。
我还是建议看看知乎“2020 秋招算法岗诸神黄昏”,有可能救你一命。 |
9
bigbigbigbug 2020-10-12 18:05:51 +08:00
交叉验证,我的理解是对数据取不同部分做训练和测试。比如啊,做时间序列预测,123456 月份预测 7 月份挺准的,234567 预测 1 准吗,就多试几下
|