机器学习为什么需要交叉验证?怎么使用k-fold cross validation

介绍这个非常重要的概念,希望在训练算法时能帮助各位。

概念和思维解读

叉验证的目的:在实际训练中,模型通常对训练数据好,但是对训练数据之外的数据拟合程度差。用于评价模型的泛化能力,从而进行模型选择。

交叉验证的基本思想:把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对模型进行训练,再利用验证集来测试模型的泛化误差。另外,现实中数据总是有限的,为了对数据形成重用,从而提出k-折叠交叉验证。

对于个分类或回归问题,假设可选的模型为。k-折叠交叉验证就是将训练集的1/k作为测试集,每个模型训练k次,测试k次,错误率为k次的平均,最终选择平均率最小的模型Mi。

1、 将全部训练集S分成k个不相交的子集,假设S中的训练样例个数为m,那么每一个子集有m/k个训练样例,相应的子集称作{}。

2、 每次从模型集合M中拿出来一个,然后在训练子集中选择出k-1个

{}(也就是每次只留下一个),使用这k-1个子集训练后,得到假设函数。最后使用剩下的一份作测试,得到经验错误。

3、 由于我们每次留下一个(j从1到k),因此会得到k个经验错误,那么对于一个,它的经验错误是这k个经验错误的平均。

4、 选出平均经验错误率最小的,然后使用全部的S再做一次训练,得到最后的。

代码使用案例

一、选择正确的Model基础验证法

二、选择正确的Model交叉验证法(Cross-validation)

cv= 5

三、准确率和平均方差

一般来说会用于判断分类(Classification)模型的好坏。

结果如图,从图中可以得知,选择12~18的k值最好。高过18之后,准确率开始下降则是出现过拟合了。

一般来说会用于判断回归(Regression)模型的好坏。

结果如下图,当K取13~20时,平方误差最小,模型最好。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180611G009MI00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券