棒打出頭鳥:L1 與 L2 正規化防止模型中的係數過大

by 好豪
Published: Updated:

即使你訓練出了一個機器學習模型看似精準度很高,它有可能只在訓練集上表現很好,到了模型沒看過的測試集資料表現卻不怎麼樣,這就是典型的過度擬合,也是資料科學家們永遠在頭痛的問題。

這篇文章將分享 L1 與 L2 這兩個正規化方法,我將會介紹它們的功能、為什麼正規化能防止過度擬合、以及 L1 與 L2 的使用場景有什麼區別。

L1 與 L2 正規化不只是訓練機器學習模型必備的技巧,也是 資料科學家面試 超常出現的考題,我相信這篇文章對你的實戰與未來面試都會有幫助。

正規化是為了防止過度擬合

正規化(Regularization,也稱為正則化)指的是解決機器學習模型過度擬合(Overfitting)的各種技巧,用來防止模型只在訓練集上表現良好、卻在沒看過的資料(測試集)預測準度不佳。

正規化的方法最常見的有兩大類。第一類是減少模型複雜度,深度學習常見的 Dropout 是一個典型的例子,它能讓類神經網路在訓練過程中隱藏部分神經元、讓模型「少根筋」,使得每個神經元能更平均地被訓練到。

第二類是避免模型中的係數過大,稍後介紹的 L1 與 L2 正是屬於這一類。例如,你發現 早上喝的牛奶 cc 數 * 0.01 + 昨晚唸書小時數 * 30 = 今天英文小考成績 這個簡單模型可以良好預測班上考試成績,0.0130 就是我們從資料得到的係數,但這兩個係數大小顯然有巨大差異,昨晚唸書小時數 這項特徵的影響力明顯大得多。

如果像上方範例一樣,我們的模型包含兩個或兩個以上的自變數,而訓練後發現只有其中一個參數超大、而其他參數超小的情形,雖然有可能確實代表 特徵重要性 存在差異,但更多時候是來自模型對於特定的訓練集資料過度擬合,這時就需要 L1 與 L2 這類正則化方法來避免部分模型參數過大,使這些過大的參數「霸凌」其他參數。

透過正規化來「棒打出頭鳥」、避免部分參數過大,有兩大好處:

  • 加強 Generalizability:提升模型對於沒看過的新資料的預測準度
  • 降低 Variance:參數過大有可能來自過度擬合訓練集,訓練集資料只要稍有變化,模型參數也可能因此有巨大變化

總的來說,正規化像是在幫你「看守」機器學習模型,避免模型如脫韁野馬般為了在訓練集達到最佳表現而變得太過複雜、或者讓係數無上限地變大。接下來介紹的 L1 與 L2 就是避免係數過大的正規化方法,幫助模型在測試集或是實際上線預測有更佳準確度。

L1 與 L2 正規化

L1 正規化

L1 正規化,在迴歸模型也被稱為 Lasso Regression,會在模型中加入一個係數絕對值的懲罰項,當係數過大時、模型會被「懲罰」,因此模型自然就會在訓練過程避免部分係數過大。

image
(來源:Chioka Blog

對於預測影響力小的參數,其係數會趨近於零,是 L1 正規化的一大特色。L1 正規化就像是篩子,只會篩選並留下其中幾個重要參數,而其他相對不重要的給予係數零、彷彿是被模型給剔除掉。

讓部分特徵的係數會趨近於零,使得 L1 特別適合用在特徵選擇與提升模型解釋性。L1 只會篩出特定幾個參數的係數不等於零,這本身就是一種特徵選擇(係數等於零代表沒被選上);同時,係數可以直觀地分為「等於零」以及「不等於零」的兩類,資料科學家解讀模型時可以很容易地解釋誰是重要特徵。

L1 的「篩子」特色也存在缺點:當存在某幾個特徵彼此高度(線性)相關時,L1 只會留下某幾個特徵,其他特徵雖然確實對預測有幫助,仍被(錯誤地)給予係數等於零。

L2 正規化

L2 正規化,在迴歸模型也被稱為 Ridge Regression,會在模型中加入一個係數平方值的懲罰項,與 L1 主要目標相似:「懲罰」模型內過大的係數。

image
(來源:Chioka Blog

比起 L1 像是篩子,L2 正規化則更像是韁繩,避免係數像野馬一樣衝得太遠,經過 L2 正規化的係數都會較為接近零、但不會等於零,每個參數都有其一席之地、每個特徵都會穩定、平衡地為預測提供資訊,L2 就只是不讓各個特徵的影響力過大。

Elastic Net: L1 與 L2 全都要

L1 與 L2 不是互斥的,你可以把兩種正規化都加入你的模型,這種做法稱為 Elastic Net,它在模型中同時加入 L1 的係數絕對值與 L2 的係數平方值懲罰項,綜合了 L1 與 L2 兩者的優勢、也降低了彼此的劣勢,為你的模型訓練提供更高的彈性:你可以自己決定要如何平衡 L1 的特徵選擇以及 L2 的係數穩定性。

這項優勢也會讓你的訓練過程變得麻煩一些些,Elastic Net 多了一個超參數 alpha,用來決定 L1 與 L2 之間的平衡,你需要調整這項超參數來決定這兩種懲罰項該怎麼權衡。

image
(圖片來源:Pianalytix

選擇你的武器:L1 與 L2 比較

不論是數據分析工作還是面試,我已經遇到無數次「L1 與 L2 二選一」的問題,儘管 L1 與 L2 正規化選哪一個對於特定使用場景最好,是個沒有標準答案的問題,這兩種正規化選擇時該考量什麼重要因素以及使用慣例,依然是每個資料科學家都應該要刻在腦海裡的。

以下,筆者好豪列出幾項我自己認為非知道不可的 L1 與 L2 選擇慣例:

更加穩健(Robust)的模型:L1

機器學習裡的穩健性Robustness,又稱魯棒性)指的是模型是否會受到資料集巨大變化的影響,尤其是離群值(outlier)。L2 使用係數的平方值作為懲罰項,要是訓練資料裡出現離群值、其影響力也是平方等級的成長,使得模型受到離群值影響巨大。因此,相較之下,使用係數絕對值作為懲罰項的 L1 受到離群值影響較小,L1 會產生更穩健的模型。

更加穩定(Stable)的模型:L2

穩定性Stability)指的是模型會不會因為訓練資料有微小變化而影響輸出,我們當然會期待模型不會因為增減一兩筆資料、或是資料分布稍有改變,就產生截然不同的結果。

L1 有較差的穩定性。L1 傾向把某些特徵的係數趨近於零,要是訓練資料的改變,恰好讓原本係數零的特徵換成了其他特徵,模型的輸出還有我們對它的解讀都會大大改變。

對於穩健性,也可以用求解的數量來理解:

L1 的曼哈頓距離也被稱為計程車距離。若你想從某個地點到達另個地點,L2 的歐氏距離是一直線抵達,彷彿能搭直升機直接飛過去,這就只會有唯一一種路線,模型求解同理,只會有這唯一一種解。然而,當你不能飛、就像計程車司機只能被限制在街道規劃上,計程車到達終點的最短路徑,則可能有許多種路線,模型加入 L1 求解時同理,也會有許多種解。

image
歐氏距離(L2)只有一種解
曼哈頓距離(L1)可能有多種解
紅、藍、黃:曼哈頓距離
綠:歐氏距離
(圖片來源:維基百科

若是追求穩定模型,通常會選擇 L2 正規化。

特徵選擇:L1

L1 正規化產生的模型具有稀疏性(sparsity),L1 傾向讓較不重要的特徵係數值等於零,相較之下,L2 雖會讓係數值逼近零、但不會等於零。因此,就如同前面小節的比喻,L1 像是篩子,只篩出部分特徵係數不等於零,其他係數等於零、從模型中被剔除,這就是自然而然的特徵選擇。

也因此,L1 對各個特徵重要性的看法「非黑即白」,只分成重要(係數不等於零)與不重要(係數等於零),對我們研究者來講,當然是好解釋的多。

若是需要內建特徵選擇、以及(相對)好解釋的模型,我們會選擇用 L1 正規化。

解決共線性:L2

共線性(colinearity)指的是多個自變數彼此有線性關係。例如,我們想預測房價,坪數與房間數量肯定都是重要的自變數,而這兩個自變數同時也互相有線性關係—(一般來說)房間數量越多、坪數會越大。

共線性會對迴歸模型造成多種影響,最常被提起的問題是係數的解讀:存在共線性時,我們不能簡單地結論「係數小的自變數代表對於模型影響力小」。

L1 正規化因為其稀疏性,當存在共線性時,會讓模型係數的解讀更加不可靠。延續剛剛的例子,加了 L1 的房價預測迴歸模型可能會讓「坪數」的係數不等於零、而讓「房間數量」係數等於零,但實際上,「房間數量」依然是個重要的變數,只是因為共線性而被 L1 造成係數為零。

L2 正規化不會讓部分變數有過大係數,即使自變數彼此之間有共線性,也不會讓係數歸零、會保留所有係數都不等於零,各個特徵都能平衡地對模型產生貢獻。L2 更適合解決共線性問題。

節省運算資源:L2

機器學習的訓練過程涉及對成本函數(cost function)求導數(derivatives),而 L1 用到的絕對值函數不是 平滑函數,需要額外的運算步驟、計算較為複雜。

(其實我認為這在計算資源豐富的現在,是相對不重要的問題)

image
(圖片來源:VIAS

表格比較

image
(製圖:好豪)

結語

L1 與 L2 不是只出現在課本的理論問題,只要你用 Python 玩資料科學,一定有機會見到它們,例如 Scikit-Learn 裡面的 LogisticRegression,或者 XGBoostalpha(L1)與 lambda(L2)。透過這篇文章,相信你再也不會搞混這些 Python 套件中出現的 L1 與 L2 功能!

筆者好豪最後幫你總結,請你至少把以下這些 L1 與 L2 對應的最重要關鍵字背起來,如果在 機器學習面試 被問到,務必要講得出來:

  • L1:絕對值、稀疏性、特徵選擇、可解釋性
  • L2:平方值、穩定性、解決共線性

你正在準備機器學習與資料科學面試嗎?如果你需要學習更多像是 L1 與 L2 正規化這種面試必考題,《機器學習工程師面試全破解》這本書值得好好閱讀,書中蒐集了 124 題重要的面試題與解答,直接練習面試題比慢慢啃統計學課本更有效率!這本書之前也對我準備 外商面試 很有幫助。

machine-learning-124-interview-questions


最後,歡迎熱愛資料科學的你追蹤 好豪的 Facebook 粉絲專頁,我會繼續寫更多面試與資料科學工作經驗等等心得文章。也請點選下方按鈕,將本文分享給正在往資料科學家職涯邁進的朋友!

推薦閱讀