请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于分割数据集的随机问题

老师,您好,训练子模型时,您又提到了随机取样时可能会出现“随机”的问题,我重新看了交叉验证,相对于“留一法”的分割方式,您是这样解释其它交叉验证中可能出现的“随机”问题:最佳的平均准确度对应的 k 个模型中,可能有部分模型刚好与其对应的验证数据集过拟合,导致准确度过高,进而使得此 k 个模型的平均准确度最高,如果验证数据集只是一个样本,不会出现过拟合现象。


一):对于最高平均准确率所对应的 k 个模型,在验证数据集上,其组合方式可能出现的情况,能这样理解吗?

  1. 部分模型不同程度过拟合  +  部分模型达到真正的最佳模型范围  +  部分模型不同程度欠拟合

  2. 部分模型不同程度过拟合  +   部分模型达到真正的最佳模型范围

  3. 所有模型都不同程度的过拟合


二)如果是第一种情况,k 个模型的准确率的平均值,是不是也比 k 个全部是真正的最佳模型的平均准确率高?

三)如果问题(二)成立,是不是可以说交叉验证的分割方式也不能完全避免“最佳模型”一定程度过拟合验证数据集?

正在回答

1回答

liuyubobobo 2018-08-16 12:55:39

如果你的黑体字是我的原话的话。那我的表述是错误的。过拟合是属于模型的一种属性,而交叉验证只是一种验证衡量模型好坏的方法而已。交叉验证无法阻止过拟合。阻止过拟合只能通过修改模型(彻底改变模型,或者调整模型参数)来完成。


准确的说,交叉验证能够更加准确地衡量出模型的好坏(相比只是单纯的trian_test_split)。因为交叉验证均匀地使用了所有的数据信息,既做训练数据,又做测试数据,所以尽量低地不再依赖随机划分的结果。其中的留一法(LOOCV),则完全不依赖随机这个概念(k=m)。但是由于留一法过于耗时,通常,根据你的数据量,k取3至10,得到的结果都是够用的的:)

2 回复 有任何疑惑可以回复我~
  • 提问者 何永灿 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-08-16 14:36:30
  • 提问者 何永灿 #2
    老师,您讲的没问题,是我理解的不准确,而且提问的也不明确;
    
    您在第 8 章讲,单纯的使用 “训练—验证—测试” 的方式会有两个问题:
    一是得到的“最佳模型”可能会不同程度过拟合了验证数据集;
    二是随机问题——只有一份验证数据集,一旦验证数据集中有极端的数据就可能导致模型相应的不准确,则该模型在测试数据集上体现的泛化能力不能满足实际要求,因此该算法会被认为不适合解决此问题。
    
    今天我回头看的是我的笔记,看完后以为交叉验证的方式可以同时避免上述的两个问题,但潜意识里感觉这种方式训练出的 k 个模型并不能避免对验证数据集产生不同程度的过拟合,并且试着去论证这 k 个模型到底有没有对验证数据集过拟合,因此才提出了上述的问题。
    回复 有任何疑惑可以回复我~ 2018-08-16 15:11:57
  • liuyubobobo 回复 提问者 何永灿 #3
    大赞!相信你现在理解了。“一旦验证数据集中有极端的数据就可能导致模型相应的不准确”,这句话的意思是,我们用train_test_split得到的评分高的模型,可能其实并不好:)也就是说,这个分数不真实。train_test_split 或者“交叉验证”,都只是辅助我们给出一个分数的方法而已(所以相应的模块叫model_selection,即模型选择。我们是依据这些数据划分方法得到的分数来进选择我们的最优模型)。我们要依据这个分数进行后续的行动和探索。相较train_test_split而言,“交叉验证”之后得到分数更可靠一些:)
    回复 有任何疑惑可以回复我~ 2018-08-16 15:22:08
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信