深度学习详解:基于李宏毅老师“机器学习”课程
上QQ阅读APP看书,第一时间看更新

2.4 交叉验证

一种能够比较合理地选择模型的方法是把训练数据分成两部分:训练集(training set)验证集(validation set).比如将90%的数据作为训练集,而将剩余10%的数据作为验证集.在训练集上训练出来的模型会使用验证集来评估它们的效果.

这里会有一个问题:如果随机分验证集,可能会分得不好,分到很奇怪的验证集,导致结果很差.如果担心出现这种情况,可以采用折交叉验证(-fold cross validation)的方法,如图2.11 所示. 折交叉验证就是先把训练集切成等份.在这个例子中,训练集被切成3等份,切完以后,将其中一份当作验证集,另外两份当作训练集,这件事情要重复做3次:将第1份和第2份当作训练集,第3份当作验证集;将第1份和第3份当作训练集,第2份当作验证集;将第一份当作验证集,第2份和第3份当作训练集.

图2.11 折交叉验证

假设我们有3个模型. 我们不知道哪一个是好的,因此不妨把这3个模型在这3个数据集上通通跑一次. 把这3个模型在这3种情况下的结果都平均起来;把每一个模型在这3种情况下的结果也都平均起来,再看看谁的结果最好.假设3折交叉验证得出来的结果是模型 1最好,那么就把模型 1 用在全部的训练集上,并把训练出来的模型再用在全部的测试集上.接下来我们要面对的任务是预测2月26日的观看次数,结果如图2.12 所示,3层网络的结果最好.

图2.12 3层网络的结果最好