K折交叉验证有多少折?

时间:2018-07-21 10:31:50

标签: data-science cross-validation

使用K折叠交叉验证,我通常会发现使用了5折和10折。 1995年paper推荐10倍简历。但是,该结论是基于使用当时模型的小型数据集。

我只是想知道,目前使用5折和10折的做法是否仍然符合惯例?还是有其他充分的理由使用5或10折而不是说6、8、12等?

2 个答案:

答案 0 :(得分:0)

这只是传统。这些只是人们喜欢的好数字,可以平均分配许多东西。算出的数字不错,例如每次10%和20%。如果使用8,则每个占12.5%。这个数字不好吗?

对于您的数据集来说,另一个数字可能会更好,但是找出这一点是不值得的麻烦。如果您尝试使用7倍交叉验证进行发布,那么人们会给您带来有趣的外观并变得可疑。遵守标准。

答案 1 :(得分:0)

当模型的性能显示出基于Train-Test拆分的显着差异时,

K折交叉验证会很有用。

使用5或10既不是规范,也没有规则。您可以使用尽可能多的Folds(K = 2、3、4来进行智能猜测)。

K折叠交叉验证用于解决培训数据有限的问题。

我在书中遇到了一个示例(下面共享Francois Chollet的书示例),其中K = 4,所以这取决于您的要求。

enter code here

`k = 4
 num_validation_samples = len(data) // k
 np.random.shuffle(data)
 validation_scores = []
 for fold in range(k):
    validation_data = data[num_validation_samples * fold:
    num_validation_samples * (fold + 1)]
    training_data = data[:num_validation_samples * fold] +
    data[num_validation_samples * (fold + 1):
    model = get_model()
    model.train(training_data)
    validation_score = model.evaluate(validation_data)
    validation_scores.append(validation_score)
    validation_score = np.average(validation_scores)
model = get_model()
model.train(data)
test_score = model.evaluate(test_data)`

Three-fold validation Pictorial Description