对数据集训练时,只对训练集进行训练还是都训练?

吴晓普


如果要想对自己的数据集进行测试,那就需要对其进行训练集,验证集和测试集的划分。

我们训练机器学习模型,目的是使用已有数据来预测未知的数据,通常我们称模型对未知数据的预测能力称为泛化能力。为了评估一个模型的泛化能力,通常我们会将数据分成训练集和测试集,训练集用来训练模型,测试集用来评估模型的泛化能力。

这里有几点需要注意:

通常将数据集的80%作为训练集,20%作为测试集;

通常需要在开始构建模型之前把数据集进行划分,防止数据窥探偏误,也就是说我们避免了解太多关于测试集中的样本特点,防止我们认为的挑选有助于测试集数据的模型,这样的结果会过于乐观,但是实际上并没有预期的那样优秀;

通常我们在构建模型的时候需要将数据进行处理,包括一些数据的清洗,数据的特征缩放(标准化或者归一化),此时我们只需要在训练集上进行这些操作,然后将其在训练集上得到的参数应用到测试集中,也就是说,在工作流程中,你不能使用在测试数据集上计算的得到的任何结果。比如:我们得到的属性中可能有缺失值,因为在这些操作之前,我们已经把数据集分成了训练集和测试集,通常的做法是通过计算属性值的中位数来填充缺失值,注意此时计算属性值的中位数是通过训练集上的数据进行计算的,当我们得到一个模型的时候,如果想要测试模型的测试误差来近似泛化误差的时候,可能此时的测试集也会有一些缺失值,此时对应属性的缺失值是通过训练集计算的中位数来进行填充的。


分享到:


相關文章: