想遠離欠擬合OR過擬合?正則化最有效!
全文共1691字,預計學習時長3分鐘
本文將介紹如何為機器學習演算法增加正則化來提高演算法的準確性。我們會梳理線性回歸中的正則化案例進行討論,來看看不同數量的正則化是如何影響準確性的。
欠擬合和過擬合
當涉及機器學習演算法時,往往會面臨過擬合和欠擬合的問題。欠擬合演算法意味著對演算法簡化過多,以至於很難映射到數據上;過擬合則意味著演算法過於複雜,它完美地適應了訓練數據,但是很難普及。
欠擬合和過擬合的例子如下所示。欠擬合演算法用黑線顯示,過擬合演算法用藍線顯示。
要解決演算法欠擬合的問題,你通常可以添加更多其他功能,或者使你的功能更高,以更好地匹配數據。
另一方面,為了防止過度擬合,可以減少功能的數量或使用正則化。刪除功能可能很困難,因為要清楚地知道刪除哪些功能並不簡單。另一方面,調整演算法可以輕鬆地將正則化應用於問題中。
正則化
正則化的核心是減小演算法中某些θ參數的大小。將其視為阻尼器,可以抑制演算法中不太有用的功能,從而減少過度擬合數據的可能性。當數據集中有許多稍微有用的功能時,正則化最有效。稍微有用的意思是它們與輸出變數的相關性較低。
為了理解正則化如何運作,我們將正則化應用於下面的線性回歸中。如果你對細節不感興趣,可以跳轉到案例部分,了解它對實際演算法的影響。
為了將正則化應用於線性回歸,我們在成本和梯度函數中引入了一個附加項。
線性回歸的常規成本函數如下所示:
這是平方誤差均值的一半。
為了應用正則化,我們引入了一個由參數λ控制的新項:
類似地,因為梯度函數是成本函數的偏導數,所以這也改變了梯度函數。現在是具有正則化的梯度函數:
現在,由於梯度函數是用來訓練演算法到最佳可能θ值的方法,我們可以研究新的梯度函數來理解正則化的作用。
· 對於θ0來講,並沒有影響——漸變函數沒有偏移。
· 對於θj來講,這是針對每個特徵術語,我們引入了λ術語。這將有助於抑制數據集中不太有用的功能。
如你所見,新參數λ控制正則化的幅度。λ的最佳值因問題而異。一些機器學習庫將包括為問題和訓練集自動找到λ的最佳值的功能。
案例
為了測試正則化,可以用公式收集一些數據集:
y=sin(x)?x
在XY圖上繪製訓練數據如下所示:
訓練數據
我們現在將使用線性回歸來找到最能模擬函數的函數。從訓練數據中可以很明顯地看出來,直線不會很好地模仿函數。因此,我將不得不使用更高階的多項式。為此,我將給予線性回歸演算法的輸入功能從僅僅為[X]更改為以下一組功能:
這實質上意味著線性回歸將找到能夠適應訓練數據的15度多項式。 這應該為演算法留出足夠的空間來模擬正弦函數的變化,但也讓我們開放過度擬合解決方案的演算法。
首先,我們嘗試在不使用正則化的情況下訓練演算法並繪製結果函數。
不正則化 – λ = 0
沒有正則化,我們可以看到我們發現了能夠完美適應訓練數據的演算法,但是這類演算法不能很好地概括解決方案。對於任何沒有存在於訓練集中的數據而言,這會給我們完全錯誤的結果。
此時,我們可以嘗試從訓練集中手動刪除輸入要素以獲得更好的結果,或者我們可以使用正則化以使正則化演算法將不需要的要素影響最小化。在我們的例子中,我們嘗試應用正則化。
考慮到這一點,我們嘗試將λ設置為5並重新運行訓練。
運用正則化 – λ=5
將λ設置為5,我們可以看到所得函數在開過解決方案方面要好得多。對於0
運用正則化 – λ=13
將λ設置為13,我們發現算在概括問題的解決方案方面更加有效。但是,它在訓練集的上限方面表現仍不完美。雖然不完美,但模型仍然是沒有任何正則化的改進,這顯然只是一個例子,在現實生活中我們可能已經使用特徵消除和正則化的組合來獲得更好的結果。
這個例子展示了如何應用正則化改善機器學習模型。然而,找到最佳λ值可能是一個挑戰。擁有能夠可視化的一維或者二維數據使其更容易一些。如果沒有可視化數據的選項,建議使用可靠的測試數據集來計算演算法丟失或錯誤。從那裡你可以嘗試許多不同的λ值來找到具有最低誤差的λ值。如果選擇此方法,請記住測試數據集必須與訓練數據不同 ——這是你可以測試演算法的一般化並避免過度擬合模型的唯一方法。
留言 點贊 發個朋友圈
我們一起分享AI學習與發展的乾貨
※數據科學淘金熱:如何獲取那些頂尖工作?
※ACL 2018:華盛頓大學:學習使用協同判別器進行寫作
TAG:讀芯術 |