一、训练集和测试集
1. 概念
我们训练机器学习模型,目的是使用已有数据来预测未知的数据,通常我们称模型对未知数据的预测能力称为泛化能力。为了评估一个模型的泛化能力,通常我们会将数据分成训练集和测试集,训练集用来训练模型,测试集用来评估模型的泛化能力。
2. 使用sklearn划分训练集和测试集
from sklearn.model_selection import train_test_split
from sklearn import datasets
iris = datasets.load_iris()
# 30%用于测试集,70%用于训练集
X_train,X_test,y_train,y_test= train_test_split(iris.data,iris.target,test_size=0.3,random_state=0)
二、超参数和验证集
1. 超参数
大多数的机器学习算法都有超参数,这些参数用来控制算法的行为。通常超参数的值不是通过学习算法本身学习出来的。例如对于多项式模型的阶就是超参数,例如当阶为1时的多项式模型为:
当阶为2时的多项式模型为:
当我们选定了超参数(多项式模型的阶)后,再使用学习算法求的模型的参数w.
那么,我们怎么选择超参数?用怎么评估超参数选择的好坏?
2. 验证集与测试集
首先的想法就是,使用测试集来评估超参数选择的优劣。但是当我们通过测试集选择了最优的超参数,我们就无法再使用测试集来评估模型的泛化能力了。因此,我们应该从数据集中再划分出一部分用来选择超参数,这部分数据集称为验证集。
三、训练集、验证集和测试集
训练集:用来训练模型;
验证集:用来选择超参数;
测试集:评估模型的泛化能力;