交叉验证(Cross Validation)
在机器学习中,通常不能将全部数据用于模型训练,否则将没有数据集可以用来评估模型。
The Validation Set Approach
-
定义
将数据集划分成训练集(Training Set)和测试集(Test Set)两部分。
-
缺点
这种方法的缺点是依赖于训练集和测试集的划分方法,并且只用了部分数据进行模型的训练。
LOOCV(Leave One Out Cross Validation)
-
定义
假设数据集中有N个数据,取其中1个数据作为测试集,将剩下的N-1个数据作为训练集,这样重复N次就得到N个模型以及N个误差值,最终使用这N个误差值的平均值评估该模型。
-
优点
该方法不受训练集和测试集划分方法的影响,因为每个数据都单独做过测试集;同时该方法用了N-1个数据训练模型,也几乎用到了所有的数据,保证了模型的Bias更小。
-
缺点
该方法的缺点是计算量过大,是The Validation Set Approach耗时的N-1倍。
K折交叉验证(K-fold Cross Validation)
-
定义
该方法是LOOCV的折中,即将数据集分成K份。
-
如何选取K的值
K的选取是一个Bias和Variance的trade-off。一般选择K=5或10。
K越大,每次训练时训练集的数据量就越大,则Bias越小;但每次训练时的训练集之间的相关性越大(考虑最极端的情况K=N,也就是LOOCV,每次训练使用的数据几乎是一样的),这种大相关性会导致最终的误差具有更大的Variance。
Github(github.com):@chouxianyu
Github Pages(github.io):@臭咸鱼
知乎(zhihu.com):@臭咸鱼
博客园(cnblogs.com):@臭咸鱼
B站(bilibili.com):@绝版臭咸鱼
微信公众号:@臭咸鱼的快乐生活
转载请注明出处,欢迎讨论和交流!