我正在训练多层感知器。我有两个问题,第一个是K形折叠如何防止过度拟合,因为火车测试分离也做同样的事情,作为训练部分并验证模型,与K形折叠相同,而不仅仅是多个折叠。但是有可能在train_test_split中过度拟合,然后K折叠如何阻止它,因为在我的感知模型中,K fold也可能过度拟合到您认为的K折叠的火车部分? 第二个问题是,我从K折中得到95%以上的准确度,先生告诉我,方差太大,在这里怎么可能,因为K折解决了这种过拟合问题?
答案 0 :(得分:1)
K-Fold交叉验证不会单独减少过度拟合,但使用它通常可以使您对模型有更好的了解,最终可以帮助您避免或减少过度拟合。
使用简单的训练/验证拆分,如果拆分的方式不能表示真实的数据分布,则该模型可能会表现良好。 K-Fold交叉验证通过使用特定的块作为验证集,其余的块作为训练集,将数据分成k
个块并进行训练k
次。因此,该模型在某些训练次数上可能表现不错,但在其他训练次数上则相对较差。这样可以更好地表明模型的实际效果。
如果获得相对较高的训练准确性,但验证准确性大大降低,则表明过拟合(高方差和低偏差)。目标是将方差和偏差都保持在较低的水平,这可能是以稍微降低训练精度为代价的,因为这将表明学习的模型已很好地推广到了看不见的实例。您可以在bias vs variance tradeoff上阅读更多内容。
如this answer中所述,选择折数也可能会影响洞察力。根据数据的大小,与验证数据相比,正在使用的训练褶皱可能太大。
答案 1 :(得分:-1)
K折可以帮助过度拟合,因为相比于一次,您实际上将数据拆分为各种不同的火车测试拆分。通过在多个不同的集合(而不是一个集合)上运行训练测试拆分,您可以更好地了解模型在数据集和看不见的数据上的实际效果。它并不能完全阻止它,最终都将归结为您的数据(如果您经过训练,测试和验证的数据不能真正代表未来的得分,您仍然可以得出过拟合模型)。