【发布时间】:2019-11-13 22:57:45
【问题描述】:
我在 k-fold 开始之前初始化了网络模型。
这是否意味着模型在第一次折叠时进行训练,而这个具有训练权重的模型被用于第二次折叠,依此类推?如果最后一个折叠不好,整个模型不好怎么办?
【问题讨论】:
标签: python model neural-network training-data
我在 k-fold 开始之前初始化了网络模型。
这是否意味着模型在第一次折叠时进行训练,而这个具有训练权重的模型被用于第二次折叠,依此类推?如果最后一个折叠不好,整个模型不好怎么办?
【问题讨论】:
标签: python model neural-network training-data
这取决于你所说的“初始化网络”是什么意思,你应该展示一些sn-p代码让人们理解你的问题。
原则上,k 折交叉验证是一种用于更好地估计模型性能的技术。 这个概念很简单,没有k-fold,您只需将数据集拆分为训练/测试,您使用测试集中未见过的样本来估计性能/错误,但通常数据并不完美,它有点脏,所以可能会发生“ bad" 样本最终会出现在测试集中,当您使用它们来估计模型的性能时,您会得到一个不代表真实值的值。
为了减少错误/性能估计中的错误,您将数据集分成 k 个均匀分布的折叠,然后训练 k 次新模型(因此每次都从头开始初始化权重),每次都在其中一个上进行测试k 个不同的“折叠”并在数据集的剩余样本上对其进行训练。
通过这样做,您将对模型的错误/性能有 k 个不同的估计值。
如果您想使用单个值作为衡量标准,只需对结果进行平均即可。 当然你可以用结果做任何你喜欢的事情,你可以选择最好的模型,你可以平均k个模型的权重,你可以平均“前n个”模型的权重等等。
所以,回答你的问题,不,你没有保持你的体重。 在您正在训练的 k 个模型上,其中一个可能是“坏的”,但您使用 k-fold 只是为了验证您的模型,而不是为了更好地训练它! 验证后,您可以决定要做什么。 您正在寻找衡量模型“好”程度的方法,通过这样做,您可以更加确定您的结果接近实际值。
如果您想使用数据集来减少其他类型的错误(如过拟合或其他错误),您应该检查集成方法。
希望对你有帮助
【讨论】: