【问题标题】:Cross validation and Improvement交叉验证和改进
【发布时间】:2020-03-08 11:57:56
【问题描述】:

我想知道交叉验证过程如何改进模型。我对这个领域完全陌生,并且热衷于学习。 我了解交叉验证的原理,但不了解它如何改进模型。假设模型分为 4 折,如果我在第 3 次第 1 次第 4 次训练我的模型并在最后一次进行测试,模型会很好地训练。但是当我通过在最后 3 个第四个训练模型并在第一个测试上重复这一步时,大部分训练数据已经被模型“审查”了吗?模型不会随着已经看到的数据而改进,对吧?它是使用不同训练数据集制作的模型的“平均值”吗?

提前感谢您的宝贵时间!

【问题讨论】:

    标签: machine-learning data-science cross-validation


    【解决方案1】:

    交叉验证实际上并没有改进模型,但可以帮助您准确地对其性能进行评分。

    假设在训练开始时,您将数据分成 80% 的训练集和 20% 的测试集。然后您在上述 80% 上进行训练并在 20% 上进行测试并获得性能指标。

    问题是,在开始分离数据时,您希望是随机的,或者是任意的,因此,您获得的模型性能在某种程度上依赖于您使用的伪随机数生成器或你的判断。

    因此,您可以将数据分成例如 5 个随机相等的集合。然后你拿第 1 组,把它放在一边,在第 2-5 组训练,在第 1 组测试并记录性能指标。然后你把第 2 组放在一边,在第 1、3-5 组上训练一个新的(未训练的)模型,在第 2 组上进行测试,记录指标等等。

    5 组后,您将获得 5 个性能指标。如果您取它们的平均值(最合适的类型),这将更好地表示您的模型性能,因为您正在“平均”数据拆分的随机效应。

    我认为这个blog 用 Python 中的一些代码很好地解释了这一点。

    【讨论】:

    • 哦,好的,非常感谢,这很清楚!因此,为了使用交叉验证,我需要在每次评估时初始化一个新模型,或者它取决于实现?
    • 是的,您需要在每次运行 k 之前初始化一个新模型。细节取决于实现,如果需要,您可以将每个模型连同其分数一起保存,或者您可以每次都覆盖它,这取决于您最终想要得到什么。
    【解决方案2】:

    通过 4 折交叉验证,您可以有效地训练 4 个不同的模型。模型之间没有依赖关系,并且一个模型不会在另一个模型之上进行训练。

    稍后会发生什么取决于实施。通常,您可以访问所有经过训练的模型,然后由您自己处理。

    【讨论】:

    • 谢谢!那你怎么解释改进?以及如何访问以前的模型?
    • @CômeSchaeffer 我向您解释了 k 折交叉验证背后的一般原则。您现在指的是一些您甚至没有提到的特定实现。对您的问题最通用的答案是:模型之间没有任何改进,这只是运气。多次随机播放,汇总结果,看看结果如何。此外,交叉验证中没有“以前的模型”。他们可以并行训练。如何访问它们?再次取决于实施。你还没有分享你的代码,甚至是你使用的语言。
    • 因为我说的是交叉验证的一般知识而不是特定情况......
    • @CômeSchaeffer 您问“我如何访问以前的模型?”这是询问特定实现的细节,而不是一般性。
    猜你喜欢
    • 2020-08-29
    • 2017-04-10
    • 2014-04-02
    • 2019-04-28
    • 2021-08-05
    • 2018-08-27
    • 2015-06-11
    • 2020-07-13
    • 2019-09-06
    相关资源
    最近更新 更多