如何解决过拟合 与欠拟合

转载自 谷海燕 https://blog.csdn.net/zhuanzhe117/article/details/82595958

下面这张经典的图展示了欠拟合(第一个)与过拟合(第三个)。
这里写图片描述

欠拟合

模型在训练集上学习的不够好,经验误差大,称为欠拟合。模型训练完成后,用训练数据进行测试,如果错误率高,我们就很容易发现模型还是欠拟合的。

解决办法:

  • 增加训练次数。
  • 添加其他特征项,例如,组合特征、泛化特征、相关性特征。
  • 添加多项式特征,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强。
  • 减少正则化参数,正则化的目的是防止过拟合。
  • 过拟合

    当模型对训练集学习得太好的时候(学习数据集通性的时候,也学习了数据集上的特性,导致模型在新数据集上表现差,也就是泛化能力差),此时表现为经验误差很小,但泛化误差很大,这种情况称为过拟合。

    解决办法:

  • 正则化
    正则化方法包括L0正则、L1正则和L2正则。
    L0范数是指向量中非0的元素的个数。L1范数是指向量中各个元素绝对值之和,也叫“稀疏规则算子”(Lasso regularization)。两者都可以实现稀疏性。
    L2范数是指向量各元素的平方和然后求平方根。可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0。L2正则项起到使得参数w变小加剧的效果。
  • 剪枝
    剪枝是决策树中一种控制过拟合的方法,预剪枝通过在训练过程中控制树深、叶子节点数、叶子节点中样本的个数等来控制树的复杂度。后剪枝则是在训练好树模型之后,采用交叉验证的方式进行剪枝以找到最优的树模型。
  • 提前终止迭代
    主要是用在神经网络中的,在神经网络的训练过程中我们会初始化一组较小的权值参数,此时模型的拟合能力较弱,通过迭代训练来提高模型的拟合能力,随着迭代次数的增大,部分的权值也会不断的增大。如果我们提前终止迭代可以有效的控制权值参数的大小,从而降低模型的复杂度。
  • 上面的几种方法都是操作在一个模型上 ,通过改变模型的复杂度来控制过拟合。另一种可行的方法是结合多种模型来控制过拟合。

  • Bagging和Boosting
    是机器学习中的集成方法,多个模型的组合可以弱化每个模型中的异常点的影响,保留模型之间的通性,弱化单个模型的特性。
  • Dropout
    是深度学习中最常用的控制过拟合的方法,主要用在全连接层处。在一定的概率上(通常设置为0.5,原因是此时随机生成的网络结构最多)隐式的去除网络中的神经元,但会导致网络的训练速度慢2、3倍,而且数据小的时候,Dropout的效果并不会太好。因此只会在大型网络上使用。
  • 				<script>
    					(function(){
    						function setArticleH(btnReadmore,posi){
    							var winH = $(window).height();
    							var articleBox = $("div.article_content");
    							var artH = articleBox.height();
    							if(artH > winH*posi){
    								articleBox.css({
    									'height':winH*posi+'px',
    									'overflow':'hidden'
    								})
    								btnReadmore.click(function(){
    									if(typeof window.localStorage === "object" && typeof window.csdn.anonymousUserLimit === "object"){
    										if(!window.csdn.anonymousUserLimit.judgment()){
    											window.csdn.anonymousUserLimit.Jumplogin();
    											return false;
    										}else if(!currentUserName){
    											window.csdn.anonymousUserLimit.updata();
    										}
    									}
    									
    									articleBox.removeAttr("style");
    									$(this).parent().remove();
    								})
    							}else{
    								btnReadmore.parent().remove();
    							}
    						}
    						var btnReadmore = $("#btn-readmore");
    						if(btnReadmore.length>0){
    							if(currentUserName){
    								setArticleH(btnReadmore,3);
    							}else{
    								setArticleH(btnReadmore,1.2);
    							}
    						}
    					})()
    				</script>
    				</article>
    
    转载自 谷海燕 https://blog.csdn.net/zhuanzhe117/article/details/82595958

    下面这张经典的图展示了欠拟合(第一个)与过拟合(第三个)。
    这里写图片描述

    猜你喜欢

    转载自blog.csdn.net/csiao_Bing/article/details/84892141