机器学习笔记——模型选择与正则化
生活随笔
收集整理的這篇文章主要介紹了
机器学习笔记——模型选择与正则化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
機器學習筆記——模型選擇與正則化
- 一、模型選擇
- 1.方差與偏差
- 2.過擬合與欠擬合
- 3.模型選擇的平衡
- 4.欠、過擬合解決方法
- 二、正則化
- 1.正則化線性回歸
- 2.正則化對數回歸
- 3.訓練集規模對誤差的影響
- 4.模型性能評估
- 三.范數與正則化
- 1.總體描述
- 2.L0與L1范數
- 3.L2范數
- 4.核范數
一、模型選擇
1.方差與偏差
- 我們設定h(x)h(x)h(x)為近似值,y(x)y(x)y(x)為真實值。我們有如下式子:
- 近似值的bias我們設定為所有樣本近似值與真實值之間差值的期望。近似值的var我們設定為所有樣本近似值與近似值的期望之間差距的期望的平方(有點繞…,其實去掉平方的標準差更好理解)。
- 我們可以看到bias與近似值h(x)h(x)h(x)、真實值y(x)y(x)y(x)相關。而variance只與近似值h(x)h(x)h(x)相關。
2.過擬合與欠擬合
-
當特征過多或者變量階數過高導致的模型很復雜時,很容易出現過擬合的情況。
-
我對過擬合的理解如下:越復雜的模型其學習模仿能力越強,而模型學習模仿的對象只能是訓練集。但訓練集只是用來近似模擬真實數據分布,并不能代表一般性,甚至不好的訓練集與真實分布相差很遠。因此復雜的模型只是模仿訓練集很像,如果訓練集的代表性不強的話得到的模型就會與真實分布相差甚遠,也就是出現了過擬合的現象。
-
線性回歸中出現的過擬合現象:
-
邏輯回歸中出現的過擬合現象:
-
對上面三張圖進一步分析,其實一大群藍色圓圈中的紅叉很可能是數據收集有誤,并不一定代表反例,而過擬合情況就把這兩個異常點過于看重導致分類邊界不具備一般性。
-
其實過擬合是不可以避免的,因為剛開始我們是不知道該選擇多復雜的模型的。針對小數據集我們一開始就故意過擬合,然后再去診斷修正。即便是很大的數據集一開始也是要從小數據集開始。過擬合代表著充分利用了訓練集數據,把訓練集數據中每一細枝末節都學習到了。
3.模型選擇的平衡
- 過擬合現象發生時,我們會發現訓練誤差會非常小,那么如果我們有多個模型得到了多組訓練誤差,訓練誤差的大小比較能作為我們模型選擇的依據嗎?
- 顯然是不可以的。我們將訓練集隨機分成兩部分,訓練集(training set)用于最優化參數,驗證集(validation set)用于模型選擇。
- 如下圖所示我們將初始訓練集分為了兩部分。藍色代表訓練集,綠色代表驗證集。需要注意的是劃分的時候訓練集與驗證集需要保證同分布,可以使用分層采樣的方法。
- 分析以下兩張圖,一張是4階多項式模型,一張是30階多項式模型。可以看出30階多項式模型更加完美的貼合于訓練集(藍色數據點),在圖的左半部分明顯波動離譜與驗證集之間存在較大誤差也就是發生了過擬合現象。
- 以下展示的是訓練誤差與驗證誤差隨著多項式階數變化的曲線圖:
- 可以看出:只要學習率η\etaη選擇的適當(即可以快速正確收斂)訓練誤差總會越來越小的。但驗證誤差可能會先降低后升高。上圖僅僅代表的是變化趨勢,實際獲得的圖不會這么平滑簡單。
- 訓練誤差小對我們來說沒有用處。而驗證誤差則可以代表一部分該模型適應新數據的能力,因此我們要選擇的是驗證誤差最小的模型。
- 模型越復雜其bias越低但variance越高。而最終我們想要的泛化誤差由三部分組成:bias、variance、noise。在noise不可調控的情況下我們想要使得bias與variance的總和最小,因此需要尋得二者之間的平衡(trade-off)。
4.欠、過擬合解決方法
- 針對欠擬合我們需要做的就是提高模型的復雜程度。具體包含兩個方面:1.增加更多的特征維度,但這條對于一般問題來說增加數據比較難以實現。2.提高多項式的階數。
- 針對過擬合并不是說模型一定不合適,而是相對于我們掌握貧乏的數據來說模型過于復雜。最好的解決方法就是收集并增加數據,不會影響bias,不用修改模型就可以解決問題,因為數據集越大訓練集的特征就會越接近于真實。
- 除此之外就是降低模型的復雜度。可以通過減少部分特征或者正則化來實現。正則化在小幅度增加bias的前提下大幅度降低variance,也會降低總體的泛化誤差。
- 總結來說機器學習數據為王。我們機器學習的目的其實就是利用有限的數據通過學習一定模型盡可能地去模擬逼近真實規律。所以我們掌握地數據大概率就是最大可能,因此更多使用正則化地方法處理過擬合。
二、正則化
1.正則化線性回歸
- 一個越復雜的模型通過學習過程計算出的參數θ\thetaθ可能會很大,尤其是高階的θ\thetaθ。參數過大會使xxx對于hθ(x)h_\theta(x)hθ?(x)影響很大,因此我們要通過減小θ\thetaθ來平滑曲線。
- 如上圖所示,加入了正則化地線性回歸,優化的目標函數由損失函數L(θ)L(\theta)L(θ)變為了J(θ)J(\theta)J(θ)。
- R(θ)R(\theta)R(θ)為對參數進行的運算,我們這里接觸到的計算方法是二范數的平方:R(θ)=∣∣θ∣∣22R(\theta)={||\theta||}^2_2R(θ)=∣∣θ∣∣22?其實正則化項不只有這一種形式,還可為一范數:R(θ)=∣∣θ∣∣1R(\theta)={||\theta||}_1R(θ)=∣∣θ∣∣1?,這就是我們熟知的可用于特征選擇的LASSO算法。還可以為R(θ)=λ1∣∣θ∣∣22+λ2∣∣θ∣∣1R(\theta)=\lambda_1{||\theta||}^2_2+\lambda_2||\theta||_1R(θ)=λ1?∣∣θ∣∣22?+λ2?∣∣θ∣∣1?,這就是彈性網算法。
- 對于正則化參數λ\lambdaλ,取值范圍是[0,+∞)[0,+\infty)[0,+∞)。該值越大,所有參數的值越小,模型越簡單,曲線越平滑。當λ=+∞\lambda=+\inftyλ=+∞時,會使所有的參數值趨向于0。
- 需要注意的是仔細觀察Σ\SigmaΣ求和從1開始,也就是說正則化的過程θ0\theta_0θ0?并不參與。因為其對于xxx沒有影響。
- 具體到梯度下降過程中獲得下述式子。我們可以看作先把參數θj\theta_jθj?衰減一定比例然后再進行梯度下降。這就是我們了解的權重衰減。機器學習包中有這個函數,傳入的參數就是正則化參數λ\lambdaλ。
- 正則化參數λ\lambdaλ決定了參數值的大小與過擬合的矯正程度,那么我們應該如何選擇正則化參數呢?分析如下圖像可得(圖像的縱坐標要使用L(θ)L(\theta)L(θ)計算而不是J(θ)J(\theta)J(θ)):λ\lambdaλ的值越大過擬合程度越低,欠擬合程度越高,也就是說訓練誤差會不斷增大。而驗證誤差在λ?\lambda^*λ?處會出現拐點,我們想要找的便是這個拐點。
- 針對線性回歸的另一種解法正規方程,我們也有正則化后的公式表達:
2.正則化對數回歸
- 我們可以分析得到,對數回歸的正則化原理上與線性回歸相同,只不過他們擁有不同的損失函數而已。線性回歸使用的是平方損失函數,而對數回歸使用的是交叉熵損失函數。J(θ)J(\theta)J(θ)的結構、梯度下降的方法都如出一轍。
- 我們同樣可以得到如下的函數圖像:
- 那么問題來了,我們是否可以使用其他的Lval(θ)L_{val}(\theta)Lval?(θ),也就是驗證集validation上的損失評價函數。當然是可以的,我們完全可以在這里使用0-1損失等其他評估方式,因為在驗證集上只進行模型選擇評估,而當時我們選擇訓練集使用交叉熵損失的原因主要是方便梯度下降優化。
3.訓練集規模對誤差的影響
- 一般情況下,當訓練集的規模增大的時候,訓練誤差也會跟著增大后趨于穩定,驗證誤差會隨之減小后趨于穩定。形象的理解是:學生做的題越多,做題時出現的錯題就會越多,但是考試時出現的錯題就會變少。因此合適的模型,增大訓練集的規模可以減小驗證誤差,解決過擬合。
- 但對于上圖來說,即使在訓練集數據很少的情況下,我們也能看出所選擇直線模型非常不適合該數據集的分布,也就是出現了欠擬合的情況。即便增加訓練集的規模,也不會對模型的訓練產生好的影響。
- 綜上出現過擬合現象時,增大訓練集規模可以收獲很好的效果。而當出現欠擬合現象時,增大訓練集規模并不會有好的收益。
4.模型性能評估
- 對于我們掌握的帶標注的數據,訓練集我們用來優化參數,驗證集我們用來選擇模型,但在訓練集與驗證集上的誤差都不可以代表在新的測試數據上的性能。
- 因此我們將帶標注的數據分為三類,除了已知的訓練集與驗證集以外,我們再單獨分出一類測試集(Testing Set),不用于學習調參只用于模擬訓練出的模型處理新數據的能力。
- 但這三部分的劃分一直都是個難題。不同劃分比例,涉及到模型訓練的好壞、模型選擇的優劣、以及測試集能否很好代表處理新數據能力等等問題。我們常見的分類標準為6:2:2或者7:1.5:1.5。我們的原則是在驗證集與訓練集保證基本功能的基礎上,盡可能擴大訓練集。
- 有一條原則就是訓練集一定不可以參與到模型調參中。但驗證集可以偶爾參與。存在一種方法:訓練集訓練出多個模型,驗證集篩選出一個最優的模型,然后針對該模型用訓練集+驗證集再次參數優化。
- 除此之外我們還可以使用交叉驗證的方法。
三.范數與正則化
1.總體描述
- 正則化不僅可以解決過擬合的問題,還可以約束我們的模型的特性。這樣就可以將人對這個模型的先驗知識融入到模型的學習當中,強行地讓學習到的模型具有人想要的特性,例如稀疏、低秩、平滑等等。
- 正則化后的目標函數中,損失函數的選擇決定了這是一種什么模型。如果是Square loss,那就是最小二乘了;如果是Hinge Loss,那就是著名的SVM了;如果是exp-Loss,那就是牛逼的 Boosting了;如果是log-Loss,那就是Logistic Regression了。
- 規則化項可以是模型參數向量的范數,在論文中常見的都聚集在:零范數、一范數、二范數、跡范數、Frobenius范數和核范數等等。
2.L0與L1范數
- L0范數是指向量中非0的元素的個數。如果我們用L0范數來正則化一個參數矩陣W的話,就是希望W的大部分元素都是0,換句話說,讓參數W是稀疏的。
- L1范數是指向量中各個元素絕對值之和。L1范數又名“稀疏規則算子”,同樣可以使得參數W變稀疏。
- 既然L0范數與L1范數都可以讓參數變稀疏。那么到底什么是變稀疏?變稀疏又有什么樣的好處呢?
- 參數的稀疏化可以實現特征選擇。一般來說,xi的大部分特征都是和最終的輸出yi沒有關系或者不提供任何信息的,在最小化目標函數的時候考慮xi這些額外的特征,雖然可以獲得更小的訓練誤差,但在預測新的樣本時,這些沒用的信息反而會被考慮,從而干擾了對正確yi的預測。也就是說因為多考慮訓練了無用的特征導致訓練模型過擬合。
- 稀疏正則化化算子的引入就是為了完成特征自動選擇的光榮使命,它會學習地去掉這些沒有信息的特征,也就是把這些特征對應的權重置為0。
- 那既然L0與L1均可以實現參數稀疏化而特征選擇,那為什么在實際正則化時我們使用L1而不是L0呢?一是因為L0范數很難優化求解(NP難問題),二是L1范數是L0范數的最優凸近似,而且它比L0范數要容易優化求解
3.L2范數
- L2范數是指向量各元素的平方和然后求平方根。在回歸里面,有人把有它的回歸叫嶺回歸(Ridge Regression),有人也叫它權值衰減(weight decay)。
- L2范數的使用具體有兩大好處:在學習理論角度來說,L2范數可以防止過擬合,提升模型的泛化能力。在數值計算角度來說,L2范數有助于處理 condition number不好的情況下矩陣求逆很困難的問題。
- 在不加L2范數正則項時,我們可以通過正規方程發求得參數表達式如下。如果當我們的樣本X的數目比每個樣本的維度還要小的時候,矩陣XTX將會不是滿秩的,也就是XTX會變得不可逆,所以w*就沒辦法直接計算出來了。
- 但如果加上L2正則項,就變成了下面這種情況,就可以直接求逆了。
4.核范數
- 核范數||W||*是指矩陣奇異值的和,*核范數是用來約束Low-Rank(低秩)。rank(w)的凸近似就是核范數||W||**。那么什么是低秩呢?
- 從物理意義上講,矩陣的秩度量的就是矩陣的行列之間的相關性。如果矩陣的各行或列是線性無關的,矩陣就是滿秩的,也就是秩等于行數。如果矩陣表達的是結構性信息,例如圖像、用戶-推薦表等等,那么這個矩陣各行之間存在這一定的相關性,那這個矩陣一般就是低秩的。
- 如果X是一個m行n列的數值矩陣,rank(X)是X的秩,假如rank (X)遠小于m和n,則我們稱X是低秩矩陣。低秩矩陣每行或每列都可以用其他的行或列線性表出,可見它包含大量的冗余信息。利用這種冗余信息,可以對缺失數據進行恢復,也可以對數據進行特征提取。
總結
以上是生活随笔為你收集整理的机器学习笔记——模型选择与正则化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 论文阅读笔记:ProjectionNet
- 下一篇: ORB-SLAM2系列第三章—— 地图初