[深度概念]·K-Fold 交叉验证 (Cross-Validation)的理解与应用 规则化和模型选择(Regularization and model selection)

K-Fold 交叉验证 (Cross-Validation)的理解与应用

个人网站html

1.K-Fold 交叉验证概念

在机器学习建模过程当中,通行的作法一般是将数据分为训练集和测试集。测试集是与训练独立的数据,彻底不参与训练,用于最终模型的评估。在训练过程当中,常常会出现过拟合的问题,就是模型能够很好的匹配训练数据,却不能很好在预测训练集外的数据。若是此时就使用测试数据来调整模型参数,就至关于在训练时已知部分测试数据的信息,会影响最终评估结果的准确性。一般的作法是在训练数据再中分出一部分作为验证(Validation)数据,用来评估模型的训练效果。算法

验证数据取自训练数据,但不参与训练,这样能够相对客观的评估模型对于训练集以外数据的匹配程度。模型在验证数据中的评估经常使用的是交叉验证,又称循环验证。它将原始数据分红K组(K-Fold),将每一个子集数据分别作一次验证集,其他的K-1组子集数据做为训练集,这样会获得K个模型。这K个模型分别在验证集中评估结果,最后的偏差MSE(Mean Squared Error)加和平均就获得交叉验证偏差。交叉验证有效利用了有限的数据,而且评估结果可以尽量接近模型在测试集上的表现,能够作为模型优化的指标使用。网络

2.举例说明

下面举一个具体的例子来讲明K-Fold的过程,好比以下的数据app

[0.1, 0.2, 0.3, 0.4, 0.5, 0.6]

 

分为K=3组后机器学习

Fold1: [0.5, 0.2]
Fold2: [0.1, 0.3]
Fold3: [0.4, 0.6]

 

交叉验证的时会使用以下三个模型,分别进行训练和测试,每一个测试集偏差MSE加和平均就获得了交叉验证的总评分函数

Model1: Trained on Fold1 + Fold2, Tested on Fold3
Model2: Trained on Fold2 + Fold3, Tested on Fold1
Model3: Trained on Fold1 + Fold3, Tested on Fold2

 

3.应用讲解

 

一、 将所有训练集S分红k个不相交的子集,假设S中的训练样例个数为m,那么每个子集有m/k个训练样例,相应的子集称做{clip_image024}。post

二、 每次从模型集合M中拿出来一个clip_image010[3],而后在训练子集中选择出k-1个性能

{clip_image026}(也就是每次只留下一个clip_image028),使用这k-1个子集训练clip_image010[4]后,获得假设函数clip_image030。最后使用剩下的一份clip_image028[1]做测试,获得经验错误clip_image032学习

三、 因为咱们每次留下一个clip_image028[2](j从1到k),所以会获得k个经验错误,那么对于一个clip_image010[5],它的经验错误是这k个经验错误的平均。测试

四、 选出平均经验错误率最小的clip_image010[6],而后使用所有的S再作一次训练,获得最后的clip_image012[4]

 

核心内容:

经过上述1,2,3步进行模型性能的测试,取平均值做为某个模型的性能指标

根据性能指标来挑选出最优模型,再进行上述第4步从新进行训练,得到最终模型

疑问解答:

1.为何不直接拆分训练集与数据集,来验证模型性能,反而采用屡次划分的形式,岂不是太麻烦了?

咱们为了防止在训练过程当中,出现过拟合的问题,通行的作法一般是将数据分为训练集和测试集。测试集是与训练独立的数据,彻底不参与训练,用于最终模型的评估。这样的直接划分会致使一个问题就是测试集不会参与训练,这样在小的数据集上会浪费掉这部分数据,没法使模型达到最优(数据决定了程性能上限,模型与算法会逼近这个上限)。可是咱们又不能划分测试集,由于须要验证网络泛化性能。采用K-Fold 屡次划分的形式就能够利用所有数据集。最后采用平均的方法合理表示模型性能。

2.为何还要进行全部数据集从新训练,是否太浪费时间?

咱们经过K-Fold 屡次划分的形式进行训练是为了获取某个模型的性能指标,单一K-Fold训练的模型没法表示整体性能,可是咱们能够经过K-Fold训练的训练记录下来较为优异的超参数,而后再以最优模型最优参数进行从新训练,将会取得更优结果。

3.什么时候使用K-Fold

个人见解,数据总量较小时,其余方法没法继续提高性能,能够尝试K-Fold。其余状况就不太建议了,例如数据量很大,就不必更多训练数据,同时训练成本也要扩大K倍(主要指的训练时间)。

4.参考

1.K-Fold 交叉验证 (Cross-Validation)

2.规则化和模型选择(Regularization and model selection)

相关文章
相关标签/搜索