如何解決過擬合 與欠擬合
阿新 • • 發佈:2018-12-18
下面這張經典的圖展示了欠擬合(第一個)與過擬合(第三個)。
欠擬合 |
模型在訓練集上學習的不夠好,經驗誤差大,稱為欠擬合。模型訓練完成後,用訓練資料進行測試,如果錯誤率高,我們就很容易發現模型還是欠擬合的。
解決辦法:
過擬合 |
當模型對訓練集學習得太好的時候(學習資料集通性的時候,也學習了資料集上的特性,導致模型在新資料集上表現差,也就是泛化能力差),此時表現為經驗誤差很小,但泛化誤差很大,這種情況稱為過擬合。
解決辦法:
正則化方法包括L0正則、L1正則和L2正則。
L0範數是指向量中非0的元素的個數。L1範數是指向量中各個元素絕對值之和,也叫“稀疏規則運算元”(Lasso regularization)。兩者都可以實現稀疏性。
L2範數是指向量各元素的平方和然後求平方根。可以使得W的每個元素都很小,都接近於0,但與L1範數不同,它不會讓它等於0,而是接近於0。L2正則項起到使得引數w變小加劇的效果。
剪枝是決策樹中一種控制過擬合的方法,預剪枝通過在訓練過程中控制樹深、葉子節點數、葉子節點中樣本的個數等來控制樹的複雜度。後剪枝則是在訓練好樹模型之後,採用交叉驗證的方式進行剪枝以找到最優的樹模型。
主要是用在神經網路中的,在神經網路的訓練過程中我們會初始化一組較小的權值引數,此時模型的擬合能力較弱,通過迭代訓練來提高模型的擬合能力,隨著迭代次數的增大,部分的權值也會不斷的增大。如果我們提前終止迭代可以有效的控制權值引數的大小,從而降低模型的複雜度。
上面的幾種方法都是操作在一個模型上 ,通過改變模型的複雜度來控制過擬合。另一種可行的方法是結合多種模型來控制過擬合。
是機器學習中的整合方法,多個模型的組合可以弱化每個模型中的異常點的影響,保留模型之間的通性,弱化單個模型的特性。
是深度學習中最常用的控制過擬合的方法,主要用在全連線層處。在一定的概率上(通常設定為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>
下面這張經典的圖展示了欠擬合(第一個)與過擬合(第三個)。