上一篇 ※※※※※※※※ 【回到目錄】 ※※※※※※※※ 下一篇html
咱們首先來解釋一下什麼叫欠擬合和過擬合。算法
左邊的圖:該模型是一個線性模型,不能很好地擬合出訓練集,有較大的誤差,這就是欠擬合;ps:固然,對於數據集較爲簡單的狀況,咱們也能夠採起取對數等預處理方式,從而使得線性模型能較好的擬合出數據,但不太經常使用。微信
中間的圖:增長了一個特徵𝜃以後,該模型能夠較好的擬合出訓練集;機器學習
右邊的模型:增長過多的特徵𝜃,雖然模型很是好的擬合了,可是因爲過於強調去擬合訓練集的數據,丟失了算法的本質:預測新數據。當咱們拿該模型去預測其餘的測試集數據時,效果會較差,存在高方差問題,這就是過擬合。函數
除了迴歸問題,分類問題中也存在這樣的狀況:(從左到右依次爲欠擬合、擬合恰當、過擬合)學習
過擬合問題出現的根本緣由是特徵維度過多,模型假設過於複雜,參數過多,訓練數據過少,噪聲過多,致使擬合的函數完美的預測訓練集,但對新數據的測試集預測結果差。 過分的擬合了訓練數據,而沒有考慮到泛化能力。測試
所以,解決過擬合問題的方式有:優化
一、下降特徵維度:丟棄一些不能幫助咱們正確預測的特徵。能夠是手工選擇保留哪些特徵,或者使用一些模型選擇的算法來幫忙(例如 PCA);spa
二、正則化: 保留全部的特徵,可是減小這些特徵的大小(白話說叫讓多餘的特徵沒有存在感)。設計
三、增長訓練數據:使用較大的訓練數據也能夠減小過擬合問題,可是通常收集數據集比較麻煩。
在上面的迴歸問題中,出現過擬合問題的模型爲:ℎ𝜃(𝑥) = 𝜃0 + 𝜃1𝑥1 + 𝜃2𝑥22 + 𝜃3𝑥33 + 𝜃4𝑥44 。從前面的三個例子中咱們知道,正是由於高階項致使了過擬合的產生,若是咱們能使這些高階項的係數(如𝜃3、𝜃4)變爲0的話,那麼就能夠較好的擬合了。
所以,必定程度上減少這些參數 𝜃 的值,就是正則化的基本方法。所以咱們將全部的特徵帶入懲罰過程,並讓代價函數的最優化程序來決定懲罰的程度。
修改後的代價函數:
其中,𝜆 稱爲正則化係數。注意:j 是從1開始的,咱們不對 𝜃0 進行懲罰。
增長正則化項可使 𝜃 減少的緣由在於:優化過程當中,爲了使代價函數儘量的小,在𝜆 的值較大的狀況下,全部的 𝜃 都得在必定程度上減少。
正則化後的模型與原模型對好比下:
若是 𝜆 取得過大,那麼全部的參數都最小化了,使得模型變成了 ℎ𝜃(𝑥) = 𝜃0 ,變成了欠擬合。因此對於正則化,咱們須要選取一個合理的 𝜆 。
對於線性迴歸問題,咱們以前介紹過兩種學習算法:梯度降低和正規方程。接下來介紹將正則化加入到兩種學習算法中的細節。
一、梯度降低
由於未對𝜃0 進行正則化,所以梯度降低算法被分開處理(𝜃0 爲一部分,其餘的𝜃爲一部分):
整理第二個式子:
對於未增長正則化項的式子:
能夠看出:正則化線性迴歸的梯度降低,其變化主要在於:每次在原有的更新規則基礎上令 𝜃 值減小了一個額外的值。
二、正規方程
咱們一樣也能夠利用正規方程來求解正則化線性迴歸模型:
公式中矩陣的維度爲:(n+1,n+1)。
在第七章中,咱們學習了多種優化算法:基礎的爲梯度降低,以及一些高級優化算法(見7.6)。
在這些高級優化算法中,你須要作的是設計好代價函數 J(𝜃) ,而後調用高級優化算法去最小化 J(𝜃) 。
與線性迴歸同樣,咱們也須要修改代價函數,即在代價函數中添加正則化項:
一、梯度降低
這看起來和線性迴歸的梯度降低過程同樣,然而咱們須要注意的是:在邏輯迴歸中,h𝜃(x) = g(𝜃TX),與線性迴歸徹底不一樣。
二、高級優化算法
咱們依舊能夠用 fminuc 函數等高級優化算法來求解代價函數最小化的參數,值得注意的是參數𝜃0的更新規則與其餘狀況不一樣。
以上,就是吳恩達機器學習課程第八章的主要內容。