AIC, BIC 和 L1,L2 等正則化有什麼區別?

機器學習小白,學習了AIC, BIC 還有l1, lasso 等regularization 的知識。

問題是AIC,BIC和l1,l2的應用場景是不是相同或者有重疊的地方?

如果不是的話有什麼不同?

查了很多沒有滿意的結果,望各大神解答,謝謝了。


謝邀。

題主自己答的挺好了,但是有些小問題。L2不能控制feature的「個數」,但是能防止模型overfit到某個feature上;相反L1是控制feature「個數」的,並且鼓勵模型在少量幾個feature上有較大的權重。想在L0/L1/L2正則項的問題上加深認知,推薦看一下Convex Optimization的相關章節。不需要任何基礎知識,有圖有真相,形象直觀通俗易懂。

另外AIC/BIC其實也是可以和參數一起優化的,只是優化這些標準通常涉及到改變模型參數的個數,所以通常的做法是訓練一堆模型,然後找AIC/BIC不再顯著降低點/最低點的。一種協同優化的方法是當AIC/BIC正則項導數認為參數個數過分多的時候,通過只使用前(n-1)個參數(或者更少)的方法減少實際參數個數;反之如果正則項導數不如損失函數顯著,則可以考慮增加實際參數個數。

它們的共性是都是regularization,目的是幫助找到最適合未知數據的模型(假設數據與經驗數據同分布且分布可知)。


大家對 L1和 L2 說的很贊,他們就是不同的正則化方式,主要用於參數學習。我再補充一點:AIC/BIC 雖然也是一種正則化,但他們多用於結構選擇。比如貝葉斯網結構學習時,單純用似然會導致極其稠密的網路,使用這兩種信息準則替代似然,會得到比較滿意的解。


先自己嘗試回答自己的問題,拋磚引玉。

l1, l2 是在模型訓練的過程中通過正則項來控制feature 個數,達到防止模型過擬合的問題。

AIC,BIC是在已經訓練出來的模型中選擇更好的那個模型時候的判斷準則。

他們的共性是都是為了找到更好的模型。

區別是l1,l2在模型訓練的過程中通過加約束來達到生成更好的模型的目的。

而AIC,BIC是在已經訓練好的不同模型裡面篩選出相對最好的那個模型。

不知理解對不對?望知乎大牛們解答。


提問搞錯了, 只有 L1, L2是用於懲罰參數的正則化(Regularization). 另AIC, BIC是用來從多個模型作比較的(Model Selection), 跟優化時怎懲罰參數毫無關聯, 完全不是一回事.

從數學角度探討其性質, 比實驗觀察除錯法清楚多了

L1跟L2都是Lp勒貝格空間(Lebesgue spaces)的特例, p可以是任意實數. 觀察其等值平面, 就可以知道為啥L1會是稀疏的, 而L2不是

若是有用過拉格朗日乘數法(Lagrange Multiplier)去求解有條件限制的優化問題, 就知道上圖中L1的最優點(optimum) 容易落在頂點或邊上, 從而使其他參數降為0即成所謂的稀疏(sparse).

除非優化過程中的點到達某一個平面時, 優化函數的梯度正好是其平面的法向量, 才有可能停在平面上, 但大多時候沒這麼巧的事

L2跟其他Lp的性質也能依此類推

AIC(BIC)是出於信息論(Information theory)的信息準則, 則跟上述的東西完全扯不上邊, 要注意的是這些量都是兩個模型以上去作比較, 求兩個模型的差值才有意義, 單一模型量的大小不能代表什麼.

對信息論有概念的話, 看其公式就可以直接知道, 兩個模型AIC(BIC)的差其實就是在求出, 多幾個參數能多出多大的信息量, 這種比較.


瀉藥,不是大牛,但比較了解l0, l1,和l2這類regularizer在優化時候的比較。

我部分同意 @齊鵬和題主你自己的回答,但我想再展開講一下:

(1)l0就是最最直觀的sparsity regularizer,看看l0 norm的定義,就是數數據里有多少個非零。如果l0 norm小,自然數據就更sparse。l1 norm並不是那麼直觀地約束數據的sparsity,但是如果你看看lasso之類的tutorial,有很多證明發現他其實在除了在非常極端情況下都等效於sparsity regularizer。之所以想用l1來替代l0,就是因為l1 penalty的regularizer是convex,這個在優化問題上有很好的優化保證。但是l1 norm依然是不可導的,所以才會使用lasso之類的方法來解決,參見我以前的回答:

梯度下降為什麼不適合求解稀疏問題? - Bihan Wen 的回答

嚴格意義下,l0 norm其實都不是真正的norm,是pseudo-norm。所以當做優化的時候,會帶來很多麻煩。這裡的sparsity,其實和你們談的feature的「個數」限制是一個意思,但注意feature本身的維度並沒有減少,而只是zero變多了而已。

我不同意樓上匿名回答的「L0,原則上稀疏性比L1好"。首先,這裡的」好「到底是怎麼定義的,我不清楚。原則上l1和l0都是sparsity regularizer,而要稀疏性更好(更多0,更少非零),之需要把他們的weight調大就是了。並沒有其中一個比另一個好的說法。l1雖然使得這一項regularizer變得convex了,但並不是總是在計算上優於l0。我自己在研究中就大量使用l0 regularizer,因為對於transform domain下的l0 regularizer,sparse coding就是一個simple threaholding,相當cheap。

(2)至於為什麼需要sparsity,這個問題可以參考我以前的回答:

(a)為什麼sparse representation比起其它成分分析方法(DFT,Wavelet)能得到更好的效果? - Bihan Wen 的回答

(b)稀疏表達的意義在於?為什麼稀疏表達得到廣泛的應用? - Bihan Wen 的回答

(3)l2 regularizer不是sparsity的約束,應該是total variation regularizer。這類約束的目的,往往是希望信號的「能量」是compact的,並不要求信號的basis是少量的。所以l2和l1,l0有本質上的區別。

(4)這些regularizer並沒有哪個好那個壞的區別。他們的使用,需要給予你對數據本身的prior。舉個栗子,比如sparsity為什麼被廣泛應用在圖像處理之中,是因為人們知道所謂自然圖像,基本上都是可以被稀疏化的。換句話說,如果你知道你要表達的數據在你學習的模型下,是能量compact的,那你就該用l2。總而言之,使用哪種regularizer沒有統一的答案。


不同看定義就知道了。要說相同呢,都是為了防止過擬合。畢竟擬合是一個相對容易判斷的東西,但是過擬合就複雜了:本來是要追求擬合得好,然後還同時要求不要擬合得好,這其實是自相矛盾。

這種自相矛盾的地方,正式機器學習研究的主要領域。

正則也好,模型選擇也好,都是怕過擬合,只是看待問題的視角、具體目標不同,所以實現的功能和效果也不太一樣。具體如何不一樣,其本身定義已經描述得很清楚了。


l1,l2是帶有tuning parameter的regularization或shrinkage estimator,aic和bic是選擇最佳tuning parameter的其中兩個方法。


這些東西各有各的用法,看你的需求咯。

AIC不是一個好的模型選擇方法,因為它有傾向選擇更多不相關的參數,從而導致模型不consistent。AIC所使用的統計量是risk的unbiased estimator,所以在選好模型之後可以用它來估計loss。。但如果用它選模型就不太好了。具體來說,你想要的是min E[X],而不是E[min X]。根據fatou"s lemma後面一個會小 (a.k.a "too optimistic")。

如果你想要的是模型的consistency那麼或許BIC是個不錯的條件。但是BIC的consistency是在asymptotic意義下的 (因為這貨的推導用了Laplace method),所以實際中效果如何還是沒法保證。

l_0 regularization對應的是RIC,這個選擇方法考慮的並不是模型本身的正確與否,而是minimize risk。不過在大多數情況下我們想要的就是minimize risk,比如說你得到一個模型,你並不關心這個模型本身是否正確,而關心用這個模型做預測是否準確。所以在回歸/機器學習裡面,我認為RIC是比AIC,BIC更合適的條件。

當然了,有利也必有弊。首先,l_0 regularization不太好優化,因為它既不凸也不連續。不過好的是,這個問題並不是在所有情況下都無解。舉個例子,在回歸裡面,如果你的design matrix是orthogonal的,那麼l_0 regularization對應的就是hard thresholding, 這個就非常簡單了 (FYI, l_1 regularization在這個設定下面對應的是soft thresholding)。

l_0 regularization一個更隱蔽的缺點是它的最優性是在minimax的意義下的,在日常應用中很可能會有更多的條件/假設。所以現在大家也在搞其他的方法,比如Candes最近搞的knockoff filter去估計irrelevant feature啥的。

最後說一下l_1 regularization。這個一般是l_0的替代品,因為畢竟大家用它的目的是為了得到稀疏解。l_1的好處是在優化方面有保證,壞處嘛。。就是它並不能很好的替代l_0。如果你的features有很強的相關性,那麼l_1給你的不僅是錯的模型,而且risk也會很大。同樣的,這玩意的最優性(如果有的話)也是在minimax意義下的,所以大家也在搞其他的方法 (比如Candes最近又弄出來的sorted l1 penalty).


AIC準則指導思想是認為一個擬合模型的好壞從兩個方面去考察,一個方面是衡量擬合程度的似然函數值,似然函數值越大,說明模型擬合的效果越好;另一方面是 模型中未知參數個數越多,說明自變數越多,模型變化越靈活,準確度就越高,似然函數值就越大。但是我們不能單純地以擬合精度來衡量擬合模型的好壞,因為這樣勢必導致未知參數個數越多越好(類似於線性回歸中多元判別係數R平方的基本原理)模型中包含的變數越多,包含和不包含該自變數的-2ln(L)值之間的差別越大。它是擬合精度和參數未知個數的加權函數。SC是和AIC的一個區別是將未知參數的懲罰係數由2變成ln(n)。

在所有通過檢驗的模型中使得AIC和SC最小的模型為相對最優模型 之所以相對最優是因為不可能比較所有模型。

AIC adjusts for the number of predictor variables. SC adjusts for the number of predictor variables and the number of observations. SC uses a bigger penalty for extra variables and therefore favors more parsimonious models.


認同樓上幾位的回答。

模型加上l1可以有特徵選擇的效果,即鼓勵稀疏特徵;加l2可以約束參數取值的搜索空間來減小過擬合,但不像l1有稀疏的作用。

aic,bic應該是用於模型選擇,你建立了多個不同的模型(lr,nb,svm,或者多個lr但採用了不同的l2等等),總得挑一個泛化能力最好的去用,依稀記得曾幾何時,計算機能力很弱,大夥不能想現在一樣跑kfold cross validation來做模型選擇,從而採用了aic,bic這樣的公式來估計一下個個模型的泛化能力。


我不是大牛,但是我覺得你說的是對的。aic,bic和交叉驗證都是在多個模型中選優的方法。關於L0、L1和L2正則項的不同應用場景,還希望有大牛來給出解答。


推薦閱讀:

相關和預測是一回事嗎?X 變數和 Y 變數的相關顯著,能否說明 X 對於 Y 有一定的預測能力?
普通FPGA工程師怎樣向人工智慧靠攏?
有哪些職業容易被人工智慧替代,又有哪些行業不易被人工智慧替代?
大數據平台(分散式系統,如hadoop)和數據挖掘從業者人生髮展前途比較?小弟現在研一,不知道專註哪一個?

TAG:數據挖掘 | 機器學習 | 貝葉斯理論 | PRML |