《Python机器学习基础教程》各种交叉验证方法

《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函数来实现交叉验证的。

②总结交叉验证精度的一种常用方法是计算平均值。

③使用交叉验证可以消除偶然性得分,使得对模型的评估更具准确性。

④交叉验证的主要缺点是增加了计算成本。

⑤交叉验证不会返回一个模型,其目的只是评估给定算法在特定数据集上训练后的泛化能力。

⑥打乱划分交叉验证中允许在每次迭代中仅使用部分数据。

 

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值