||
(一)正则化
正则化:https://www.jianshu.com/p/69b962945b2a
如上图中的第二个坐标,随着模型参数的增加,训练集的误差会慢慢减少。从第一个坐标和最后一个坐标可以直观感受到这种效果。因为模型参数少的时候,模型不能很好地拟合训练集的数据,所以偏差就比较大。当模型参数足够多时,模型拟合的效果就非常好了。
但是,当我们用验证集来验证时,却会有这样的情况:
两个高质量博客:回答为什么欠拟合高偏差,过拟合高方差?同时特别点出需要注意的问题。同时说明过拟合与欠拟合及相应的对策!
②总结:Bias(偏差),Error(误差),Variance(方差)及CV(交叉验证)
对于欠拟合的情况,我们很容易理解,模型本来拟合的就不好,验证集的误差大也是自然。但是,对于过拟合来说,训练集的效果是非常好的,但是验证集上的效果却并不好,这是因为随着参数越多,模型就越不通用,而是针对了某一种特定的情况,比较有偏见,所以当用验证集验证时,误差会很大。因为验证集中的有些数据可能很符合过拟合的那条曲线,也有可能很不符合,所以数据方差就大了。也就是,方差大的时候我们可以认为是因为过拟合了。相反,模型参数少的时候,模型比较粗糙,偏离正确的拟合比较远,所以是偏差大。
案例:
模型中加入正则的意义
注意:可行解变少时,模型变简单,避免过拟合!超参lambda越下,复杂模型就越被保留,可行解变多,模型复杂度就相对高!
方差和偏差的形象说明:
通常来说过拟合的解决方法包括:
减少特征的个数
使用正则化,减少参数的权重
增加数据量
(二)作为与模型选择的典型方法正则化一样,交叉验证也一种常用的模型选择方法。
特别注意:
1.交叉验证,这是仅使用训练集衡量模型性能的一个方便技术,不用建模最后才使用测试集;
2.Cross-validation 是为了有效的估测 generalization error(泛化误差) 所设计的实验方法,而generalization error=bias+variance。
(上左图:将原始数据分成K组(一般是均分),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型,用这K个模型最终的验证集的分类准确率的平均数作为此K-CV下分类器的性能指标.K一般大于等于2,实际操作时一般从3开始取,只有在原始数据集合数据量小的时候才会尝试取2. 而K-CV 的实验共需要建立 k 个models,并计算 k 次 test sets 的平均辨识率。在实作上,k 要够大才能使各回合中的 训练样本数够多,一般而言 k=10 (作为一个经验参数)算是相当足够了。)
(上右图:每次的training_set 红色, validation_set白色 ,也就是说k=5的情况了)
注意:交叉验证使用的仅仅是训练集!!根本没测试集什么事!说白了,就是你需要用下交叉验证去试下你的算法是否精度够好,够稳定!你不能说你在某个数据集上表现好就可以,你做的模型是要放在整个数据集上来看的!毕竟泛化能力才是机器学习解决的核心。
(1)简单交叉验证
数据被分为训练集(70%)和测试集(30%),完成模型的训练和测试。
(2)K折交叉验证(一般K=5,10,15,20等)
应用最多。将数据随机切分成K个互不相交、大小相同的子集,然后利用K-1个子集训练模型,余下的子集测试模型;将这个过程对可能的K种选择重复进行;最后选出K词测评中平均测试精度最小的模型。
下例中,先经训练数据训练模型,然后通过验证数据检验模型在不同参数θ的精度,θ=0.1和θ=1分别得到由验证集获取的a1,a2,a3,a4的精度和b1,b2,b3,b4精度,分别平均比较大小,从而确定θ的取值。
(3)留一法(Leave one out)--K折交叉验证的特例
下例中假设有12个样本,验证集只选1个样本,K=N。此处K=12.
参考:https://www.bilibili.com/video/BV164411b7dx?p=62
点滴分享,福泽你我!Add oil!
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-27 10:10
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社