【Python机器学习】模型评估与改进——交叉验证的优点
模型评估与改进——交叉验证的优点、缺点
·
使用交叉验证而不是将数据单次划分为训练集和测试集,这种做法具有下列优点:
1、train_test_split对数据进行随机划分;假如在随机划分数据时我们“很幸运”,所有难以分类的样例都在训练集中,这种情况下,测试集将仅包含“容易分类的”样例,并且测试集精度会高得不切实际,如果使用价差验证,每个样例都刚好会在测试集中出现一次:每个样例位于一个折中,而每个折都在测试集中出现一次,因此,模型需要对数据集中的所有样本的泛化能力都很好,才能让所有的交叉验证得分都很高;
2、对数据进行多次划分,还可以提供我们的模型对训练集选择的敏感信息。对于iris数据集,我们观察到精度在90%-100%之间,是一个不小的范围,它告诉我们将模型应用于新数据集时在最坏情况和最好情况下的可能表现;
3、与数据的单次划分相比,我们对数据的使用更加高效,在使用train_test_split时,我们通常将75%的数据用于训练,25%的数据用于评估。在使用5折交叉验证时,在每次迭代中我们可以使用80%的数据来拟合模型;在使用10折交叉验证时,在每次迭代中我们可以使用90%的数据来拟合模型,更多的数据通常可以得到更为精确的模型。
交叉验证的主要缺点是增加了计算模型,因为我们要训练k个模型而不是单个模型,所以交叉验证的速度要比数据的单次划分大约慢了k倍。
需要记住的是,交叉验证不是一种构建可应用于新数据的模型的方法。交叉验证不会返回一个模型,在调用cross_val_score时,内部会构建多个模型,但交叉验证的目的只是评估给定算法在特定数据集上训练后的泛化性能好坏。
更多推荐
所有评论(0)