整站优化温州怎么做?/网上国网app
通常用验证集测试模型的效果。对数据集D,如何划分为训练集和测试集呢?有以下几种方法:
文章目录
- 1. 留出法
- 2. 交叉验证法
- 3. 自助法
1. 留出法
直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集train,另一个作为验证集valildation
留出法注意事项:
- 训练集和验证集的划分要尽量保持数据分布的一致性。即分层采样,如训练集正负样本的比例为2:1,验证集也要保持2:1。若训练集和验证集中样本类别比例差别很大,则误差估计将由于训练集和验证集数据分布的差异而产生偏差
- 训练集和验证集的样本比例确定后,仍存在多种划分方式对初始数据集D进行分割。不同的划分方式会使模型评估的结果有所差别。因此,用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。
- 如果对训练集D进行划分时训练集过少,会降低模型精度,因此一般将样本的2/3~4/5作为训练集。
2. 交叉验证法
现将数据集D划分为k个大小相似的互斥子集,每个子集DiD_iDi都尽可能保持数据分布的一致性。然后用k-1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可以获得k组训练/验证集,从而可进行k次训练和测试,最终返回这k个测试结果的均值。通常把交叉验证称为“k折交叉验证”。
注意事项:与留出法相似,数据集划分为k个子集存在多种划分方式,为减少因样本划分不用引入的差别,k折交叉验证通常要随机使用不同的划分重复p次,例如常见的10次10折交叉验证
k折交叉验证的特例:留一法:嘉定数据集D含有m个样本,令k=m,这样训练集就只比初始数据少一个样本,而且只有一种划分方式。留一法结果比较准确,但是数据集比较大时需要消耗更多的内存、时间等。
3. 自助法
我们希望评估的是用D训练出来的样本,但留出法和交叉验证中,由于保留了一部分样本用于测试,因此实际评估的模型所使用的的训练集比D小,这必然会引入一些因训练样本规模不同而导致的估计偏差。留一法受训练样本规模变化的影响较小,但计算复杂度太高。
自助法是上述比较好的解决方案。它以自助采样法为基础。
假设数据集D有m个样本,每次从D中随机选择一个样本,放入新的数据集D′D^{'}D′(D′D^{'}D′初始化为空),如何有放回随机抽样m次,这样D′D^{'}D′中也含有m个样本。但是有放回抽样中,有的样本可能被抽到很多次,有的可能一次都没抽到,样本在m次中始终没抽到的概率是(1−1m)m(1-\frac{1}{m})^{m}(1−m1)m,取极限结果为1e\frac{1}{e}e1,约等于0.368。也就是说D中有36.8%的样本没有被抽到。于是可用D′D^{'}D′作为训练集,36.8%的未抽到样本作为验证集。这样方法称为“包外估计(out-of-bag estimate)”
自主采样法改变了初始数据集的分布,这会引入估计偏差。