赞
踩
《Python机器学习基础教程》笔记
交叉验证时一种评估泛化性能的统计学方法,它比单次划分训练集和测试集的方法更加稳定、全面。最常用的交叉验证是k折交叉验证,在此思想上改进的交叉验证方法还有分层交叉验证、打乱划分交叉验证、分组交叉验证、嵌套交叉验证。接下来逐一介绍。
1.k折交叉验证
原理:将数据划分为大致相等的k折(部分),轮流将某一折作为测试集,其它折作为训练集来训练模型和评估精度。示意图如下:
2.分层交叉验证
原理:分折时,使每个折中类别之间的比例与整个数据集中的比例相同。示意图如下:
注意Class label行。
3.打乱划分交叉验证
原理:将数据打乱来代替分层。每次划分为训练集取样train_size个点,为测试集取样test_size个不相交的点,将这一划分方法重复n_iter次。示意图如下:
注意,每次划分的训练集和测试集不相交,但是不同次的划分可能重复选取部分数据作为测试集。
4.分组交叉验证
原理:对于每次划分,每个分组都是都是整体出现在训练集或测试集中。
注意和分层交叉验证的区别,另外,可能对该种交叉验证的应用有些迷惑,这里举个例子:
例如想构建一个从人脸中识别情感的系统,数据集中的每个人都进行了多次拍摄,分别展示了不同的情感。我们的目标是构建一个分类器,能够正确识别未包含在数据集中的人的情感。对于分类器而言,检测训练集中出现过的人脸情感比全新的人脸要容易得多,因此,为了准确评估模型对新的人脸的泛化能力,我们必须保证训练集和测试集中包含不同的人的图像,这里就可以用到分组交叉验证,同一个人的所有脸部照片分为一组,整体出现在训练集或测试集里。
5.嵌套交叉验证
原理:外层for循环将原始数据使用交叉验证进行多次划分,内层for循环在划分好的训练集中再使用交叉验证进行多次划分,主要用于网格搜索里面。
重要知识点:
①Scikit-Learn是利用model_selection模块中的cross_val_score函数来实现交叉验证的。
②总结交叉验证精度的一种常用方法是计算平均值。
③使用交叉验证可以消除偶然性得分,使得对模型的评估更具准确性。
④交叉验证的主要缺点是增加了计算成本。
⑤交叉验证不会返回一个模型,其目的只是评估给定算法在特定数据集上训练后的泛化能力。
⑥打乱划分交叉验证中允许在每次迭代中仅使用部分数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。