谈谈交叉验证法(个人小结)

一.交叉验证的定义

  交叉验证,指的是把初始的数据集进行分组,一部分做为训练集来训练模型,另一部分做为测试集来评价模型。对于K折交叉验证的话,先将数据集D随机划分成k个大小相同的互斥子集,对于每个子集,尽可能保持数据分布的一致性;然后,每次用k - 1个子集的并集作为训练集,剩下的那个子集作为测试集,这样就获得了K组训练/测试集,从而可以进行K次训练和测试,此时给你一些模型性能的指标(如,准确率),最终的返回的是K个测试结果的均值,即整体的性能度量。

二.为什么要使用交叉验证法?

  1. 交叉验证用于评估模型的预测性能,尤其是训练好的模型在新数据上的表现,可以在一定程度上减小过拟合。
  2. 还可以从有限的数据中获取尽可能多的有效信息,即尽可能多的利用数据集的信息。
  3. 个人理解,从以上可以看出,交叉验证可以看做是综合了普通的性能度量和泛化能力的综合指标。

三.交叉验证法的作用

  1.可用于模型调参

  最典型的应用就是sklearn.grid_search库中的GridSearchCV类,不过此处它使用的是GridSearch算法来进行超参数的组合,并用交叉验证来评估超参数的组合的性能。最终选择交叉验证效果最好的那组超参数作为最终的参数。

不过这里有几点需要注意一下:

(1)交叉验证在此处仅仅是起一个性能评估的作用,实际的调参算法还是GridSearch。

(2)GridSearch算法(即"网格搜索")和穷举法类似,相当于遍历一遍所有可能的组合,最后返回最优的那个组合。“网格搜索”的方法很直观但是看起来有些原始。事实上有许多高级的算法,比如可以使用一些近似算法或启发式的搜索来降低复杂度。但是我们倾向于使用“网格搜索”这一简单的方法。

  2.可用于评估模型

  根据交叉验证法的特性,K折交叉验证法在训练的过程中可以采用不同的模型,所以根据最后测试集结果的平均值就可以粗略的判断模型的好坏。

扫描二维码关注公众号,回复: 86085 查看本文章

  3.可用于特征的选择

  其基本的原理,也是基于多种特组合,选择交叉验证效果最好的那一组作为最终的特征集。

关于交叉验证在调参、评估模型和特征选择中具体的实现,可以参考:https://blog.csdn.net/jasonding1354/article/details/50562513

================================================================总结===========================================================================

交叉验证的核心在于它能够充分利用数据集中的信息,它可以看做是一个同时能够评估泛化能力的性能度量,它的最主要作用是在于它提供了一个评价指标。在它的所有应用中,也是这一点的具体的表现。

  

猜你喜欢

转载自www.cnblogs.com/wangkundentisy/p/8968316.html