交叉验证
交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。在此基础上可以得到多组不同的训练集和测试集,某次训练集中的某样本在下次可能成为测试集中的样本,即所谓“交叉”。
那么什么时候才需要交叉验证呢?交叉验证用在数据不是很充足的时候。
如果数据样本量小于一万条,我们就会采用交叉验证来训练优化选择模型。如果样本大于一万条的话,我们一般随机的把数据分成三份,一份为训练集(Training Set),一份为验证集(Validation Set),最后一份为测试集(Test Set)。用训练集来训练模型,用验证集来评估模型预测的好坏和选择模型及其对应的参数。把最终得到的模型再用于测试集,最终决定使用哪个模型以及对应参数。
===
K 折交叉验证
在这种 K 折交叉验证技术中,整个数据集被划分为 K 个相等大小的部分。每个分区称为一个“折叠”。因此,因为我们有 K 个部分,所以我们称之为 K 折叠。
一折用作验证集,其余 K-1 折用作训练集。该技术重复 K 次,直到每个折叠用作验证集,其余折叠用作训练集。模型的最终精度是通过取 k-models 验证数据的平均精度来计算的。
交叉验证法评估结果的稳定性和保真性在很大程度上取决于k取值。通常使用10折交叉验证,当然这也取决于训练数据的样本数量。
优点
整个数据集既用作训练集又用作验证集:
缺点
不用于不平衡的数据集:正如在 HoldOut 交叉验证的情况下所讨论的,在 K-Fold 验证的情况下也可能发生训练集的所有样本都没有样本形式类“1”,并且只有 类“0”。验证集将有一个类“1”的样本。
不适合时间序列数据:对于时间序列数据,样本的顺序很重要。但是在 K 折交叉验证中,样本是按随机顺序选择的。