1.模型选择与评估

1.1 模型参数、超参数

了解什么是模型参数,什么是超参数是很必要的,不同类型的参数需要在不同的阶段进行调节(参数——训练集;超参数——验证集)

模型参数:模型内部的配置变量,可以通过数据估计(学习)模型参数的值
超参数:模型的外部配置变量,需要手动设置,好的超参数可以进一步提高模型的性能

模型参数的特点:
1.进行模型预测时需要模型参数;
2.可定义模型功能;
3.可使用数据估计/学习得到;
4.一般不用手动设置
5.作为学习模型的一部分保留
比如:神经网络中的权重,线性回归中的系数

超参数的特点:
1.常应用于估计模型参数的过程中,在开始学习之前就要设置好;训练过程不影响超参数
2.通常要手动设置
3.通常不能从数据中估计(学习)得到,一般需要通过经验设定
4.定义关于模型的更高层次的概念,如复杂性或学习能力
比如:学习率,K邻域中的K

1.2 训练集,测试集,验证集

很显然我们想要一个这样的模型:在未知数据上表现好(也就是通过训练,学会了举一反三,泛化误差小)。而实际上我们数据有限,不能直接得到泛化误差,于是我们用测试集误差来近似泛化误差(相当于高考),我们当然也需要训练集(相当于平时的作业),而为了评估模型优劣,选择最佳模型,需要验证集(月考,模拟考),我们不能让三者出现交叉数据,以免评估结果失真(作弊)
给定数据集D,我们要将其划分为:
1.训练集:用于训练模型,调节模型参数;
2.验证集:选择模型最终模型A,即确定学习算法,参数(模型参数、超参数)
3.测试集:测试模型A

而在确定最终模型时(确定超参数之后),要将训练集+验证集作为最终训练集,以获取最佳模型参数。
也就是说验证集是为了确定模型最佳超参数,而最终将训练集+验证集作为训练是为了获取最佳模型参数(实际上不同的数据对应着不同的模型参数以及超参数,数据集的划分不同,那么参数、超参数就会不同)

由验证集挑选得到的模型,与最终模型(训练集+验证集得到)的超参数(如学习率)相同,而模型参数(树的划分、叶节点)不同

实际上人们会把原始数据分为训练集和测试集,而在训练集中又分为训练集+验证集,以保证数据集没有交叉,否则会导致模型失真。

1.3 留出法、交叉验证法、自助法

1.3.1留出法

sklearn.model_selection.train_test_split
将数据集简单切分为训练集(之后会再切分为训练集+验证集),测试集

缺点
1.样本标签不平衡时(如正样本多、负样本少),易造成训练集,测试集分布不同,影响训练、测试

改进:为保证训练集,测试集分布相似——分层抽样(stratify)
x_train,x_test,y_train,y_test=train_test_split(X,Y,stratify=Y,shuffle=True,random_state=1)

2.单次切分数据集偶然性太大,不同切分造成模型训练、评估结果大不相同

改进:为提高评估有效性——多次划分取平均

1.3.2交叉验证法(cross validation)

分为K折交叉验证、分层K折交叉验证、多次K折交叉验证等,网上资源很多。
其中一个特例:留一法:K=样本数,此时不受划分方式影响,被认为评估结果较客观,但是计算开销大

1.3.3.自助法

实质为多次有放回抽样:

对m个样本进行有放回m次抽样,得到m个样本的训练集(部分样本可能会多次被抽到),
未抽到的作为测试集

特点:改变了数据集的分布,引入了偏差

总结:当数据集非常大时,采用留出法;数据集较大时采用交叉验证法(留一法适用于数据集很小的情况);数据集非常小时,采用自助法

参考
1.西瓜书
2.统计学习方法
3.如何正确使用机器学习中的训练集、验证集和测试集?