轉載,原文地址:http://blog.csdn.net/xidianzhimeng/article/details/20856047
Sparsity 是當今機器學習領域中的一個重要話題。John Lafferty 和 Larry Wasserman 在 2006 年的一篇評論中提到:
Some current challenges … are high dimensional data, sparsity, semi-supervised learning, the relation between computation and risk, and structured prediction.John Lafferty and Larry Wasserman. Challenges in statistical machine learning. Statistica Sinica. Volume 16, Number 2, pp. 307-323, 2006.
Sparsity 的最重要的客戶
大概要屬 high dimensional data 了吧。現在的機器學習問題中,具有非常高維度的數據隨處可見。例如,在文檔或圖片分類中常用的 bag of words 模型里,如果詞典的大小是一百萬,那么每個文檔將由一百萬維的向量來表示。高維度帶來的的一個問題就是計算量:在一百萬維的空間中,即使計算向量的內積這樣的基本操作也會是非常費力的。不過,如果向量是稀疏的的話(事實上在 bag of words 模型中文檔向量通常都是非常稀疏的),例如兩個向量分別只有 L1 和 L2 個非零元素,那么計算內積可以只使用 min(L1,L2)次乘法完成。因此稀疏性對於解決高維度數據的計算量問題是非常有效的。
當然高維度帶來的問題不止是在計算量上。例如在許多生物相關的問題中,數據的維度非常高,但是由於收集數據需要昂貴的實驗,因此可用的訓練數據卻相當少,這樣的問題通常稱為small n, large p problem
——我們一般用 n 表示數據點的個數,用 p 表示變量的個數,即數據維度。當 p≫n 的時候,不做任何其他假設或者限制的話,學習問題基本上是沒法進行的。因為如果用上所有變量的話,p 越大,通常會導致模型越復雜,但是反過來 n 有很小,於是就會出現很嚴重的 overfitting 問題。例如,最簡單的線性回歸模型:
使用 square loss 來進行學習的話,就變成最小化如下的問題
這里 X=(x1,…,xn)T∈Rn×p 是數據矩陣,而 y=(y1,…,yn)T 是由標簽組成的列向量。該問題具有解析解
然而,如果 p>n 的話,矩陣 XTX 將會不是滿秩的,而這個解也沒法算出來。或
者更確切地說,將會有無窮多個解。也就是說,我們的數據不足以確定一個解,如果我們從所有可行解里隨機選一個的話,很可能並不是真正好的解,總而言之,我們 overfitting 了。
解決 overfitting 最常用的辦法就是 regularization ,例如著名的 ridge regression 就是添加一個 ℓ2 regularizer :
直觀地來看,添加這個 regularizer 會使得模型的解偏向於 norm 較小的 w 。從凸優化的角度來說,最小化上面這個 J(w) 等價於如下問題:
其中 C 是和 λ 一一對應的是個常數。也就是說,我們通過限制 w 的 norm 的大小實現了對模型空間的限制,從而在一定程度上(取決於 λ 的大小)避免了 overfitting 。不過 ridge regression 並不具有產生稀疏解的能力,得到的系數 w 仍然需要數據中的所有特征才能計算預測結果,從計算量上來說並沒有得到改觀。
不過,特別是在像生物或者醫學等通常需要和人交互的領域,稀疏的解除了計算量上的好處之外,更重要的是更具有可解釋性
。比如說,一個病如果依賴於 5 個變量的話,將會更易於醫生理解、描述和總結規律,但是如果依賴於 5000 個變量的話,基本上就超出人肉可處理的范圍了。
在這里引入稀疏性的方法是用 ℓ1 regularization 代替 ℓ2 regularization,得到如下的目標函數
該問題通常被稱為 LASSO (least absolute shrinkage and selection operator) 。LASSO 仍然是一個 convex optimization 問題,不過不再具有解解析解。它的優良性質是能產生稀疏性,導致 w中許多項變成零。
可是,為什么它能產生稀疏性呢?這也是一直讓我挺感興趣的一個問題,事實上在之前申請學校的時候一次電話面試中我也被問到了這個問題。我當時的回答是背后的理論我並不是很清楚,但是我知道一個直觀上的理解。下面我們就先來看一下這個直觀上的理解。
首先,很 ridge regression 類似,上面形式的 LASSO 問題也等價於如下形式:
者更確切地說,將會有無窮多個解。也就是說,我們的數據不足以確定一個解,如果我們從所有可行解里隨機選一個的話,很可能並不是真正好的解,總而言之,我們 overfitting 了。
解決 overfitting 最常用的辦法就是 regularization ,例如著名的 ridge regression 就是添加一個 ℓ2 regularizer :
直觀地來看,添加這個 regularizer 會使得模型的解偏向於 norm 較小的 w 。從凸優化的角度來說,最小化上面這個 J(w) 等價於如下問題:
其中 C 是和 λ 一一對應的是個常數。也就是說,我們通過限制 w 的 norm 的大小實現了對模型空間的限制,從而在一定程度上(取決於 λ 的大小)避免了 overfitting 。不過 ridge regression 並不具有產生稀疏解的能力,得到的系數 w 仍然需要數據中的所有特征才能計算預測結果,從計算量上來說並沒有得到改觀。
不過,特別是在像生物或者醫學等通常需要和人交互的領域,稀疏的解除了計算量上的好處之外,更重要的是更具有可解釋性
。比如說,一個病如果依賴於 5 個變量的話,將會更易於醫生理解、描述和總結規律,但是如果依賴於 5000 個變量的話,基本上就超出人肉可處理的范圍了。
在這里引入稀疏性的方法是用 ℓ1 regularization 代替 ℓ2 regularization,得到如下的目標函數
該問題通常被稱為 LASSO (least absolute shrinkage and selection operator) 。LASSO 仍然是一個 convex optimization 問題,不過不再具有解解析解。它的優良性質是能產生稀疏性,導致 w中許多項變成零。
可是,為什么它能產生稀疏性呢?這也是一直讓我挺感興趣的一個問題,事實上在之前申請學校的時候一次電話面試中我也被問到了這個問題。我當時的回答是背后的理論我並不是很清楚,但是我知道一個直觀上的理解。下面我們就先來看一下這個直觀上的理解。
首先,很 ridge regression 類似,上面形式的 LASSO 問題也等價於如下形式:
也就是說,我們將模型空間限制在 w 的一個 ℓ1-ball 中。為了便於可視化,我們考慮兩維的情況,在 (w1,w2) 平面上可以畫出目標函數的等高線,而約束條件則成為平面上半徑為 C 的一個 norm ball 。等高線與 norm ball 首次相交的地方就是最優解。如圖 (fig: 1) 所示:
-
ℓ1-ball meets quadratic function. ℓ1-ball has corners. It’s very likely that the meet-point is at one of the corners.
-
ℓ2-ball meets quadratic function. ℓ2-ball has no corner. It is very unlikely that the meet-point is on any of axes."
可以看到,ℓ1-ball 與 ℓ2-ball 的不同就在於他在和每個坐標軸相交的地方都有角
出現,而目標函數的測地線除非位置擺得非常好,大部分時候都會在角的地方相交。注意到在角的位置為產生稀疏性,例如圖中的相交點就有 w1=0 ,而更高維的時候(想象一下三維的 ℓ1-ball 是什么樣的?)除了角點以外,還有很多邊的輪廓也是既有很大的概率成為第一次相交的地方,又會產生稀疏性。
相比之下,ℓ2-ball 就沒有這樣的性質,因為沒有角,所以第一次相交的地方出現在具有稀疏性的位置的概率就變得非常小了。這就從直觀上來解釋了為什么 ℓ1 regularization 能產生稀疏性,而 ℓ2 regularization 不行的原因了。
不過,如果只限於 intuitive 的解釋的話,就不那么好玩了,但是背后完整的理論又不是那么容易能夠搞清楚的,既然這次的標題是 Basics ,我們就先來看一個簡單的特殊情況好了。
接下來我們考慮 orthonormal design 的情況:(1/n)XTX=I 。然后看看 LASSO 的解具體是什么樣子。注意 orthonormal design 實際上是要求特征之間相互正交。這可以通過對數據進行 PCA 以及模長 normalize 來實現。
注意到 LASSO 的目標函數 (eq: 2) 是 convex 的,根據 KKT 條件,在最優解的地方要求 gradient∇JL(w)=0 。不過這里有一點小問題: ℓ1-norm 不是光滑的,不存在 gradient ,所以我們需要用一點 subgradient 的東西。
定義 subgradient; subdifferential
對於在 p 維歐氏空間中的凸開子集 U 上定義的實值函數 f:U→R ,一個向量 p 維向量 v 稱為 f 在一點 x0∈U 處的 subgradient ,如果對於任意 x∈U ,滿足
由在點 x0 處的所有 subgradient 所組成的集合稱為 x0 處的 subdifferential ,記為 ∂f(x0) 。
注意 subgradient 和 subdifferential 只是對凸函數定義的。例如一維的情況, f(x)=|x| ,在 x=0 處的 subdifferential 就是 [−1,+1] 這個區間(集合)。注意在 f 的 gradient 存在的點,subdifferential 將是由 gradient 構成的一個單點集合。這樣就將 gradient 的概念加以推廣了。這個推廣有一個很好的性質。
證明很簡單,將 0∈∂f(x0) 帶入定義 (def: 1) 中的那個式子立即就可以得到。有了這個工具之后,就可以對 LASSO 的最優解進行分析了。在此之前,我們先看一下原始的 least square 問題的最優解 (eq: 1) 現在變成了什么樣子,由於 orthonormal design ,我們有
然后我們再來看 LASSO ,假設 wˉ=(wˉ1,…,wˉp)T 是 JL(w) 的全局最優值點。考慮第 j個變量 wˉj ,有兩種情況。
gradient 存在,此時 wˉj≠0
由於 gradient 在最小值點必須要等於零,我們有
亦即
根據 orthonormal design 性質以及 least square 問題在 orthonormal design 時的解 (eq: 3) 化簡得到
從這個式子也可以明顯看出 wˉj 和 wˆj 是同號的,於是 sign(wˉj) 等於 sign(wˆj) ,所以上面的式子變為
再用一次 sign(wˆj)=sign(wˉj) ,兩邊同時乘以 sign(wˉj) ,可以得到
於是剛才的式子可以進一步寫為
這里 (x)+=max{x,0} 表示 x 的正部。
gradient 不存在,此時 wˉj=0
根據 subgradient 在最小值點處的性質的性質,此時比有
亦即存在 e0∈[−1,1] 使得
於是
又因為 wˉj=0 ,所以這個時候式子也可以統一為 (eq: 4) 的形式。 如此一來,在 orthonormal design 的情況下,LASSO 的最優解就可以寫為 (eq: 4) ,可以用圖 (fig: 2) 形象地表達出來。
圖上畫了原始的 least square 解,LASSO 的解以及 ridge regression 的解,用上面同樣的方法(不過由於 ridge regularizer 是 smooth 的,所以過程卻簡單得多)可以得知 ridge regression 的解是如下形式
可以 ridge regression 只是做了一個全局縮放,而 LASSO 則是做了一個 soft thresholding :將絕對值小於 λ/2 的那些系數直接變成零了,這也就更加令人信服地解釋了 LASSO 為何能夠產生稀疏解了。
l2正則可以防止參數估計的過擬合,但是選擇合適lambda比較困難,需要交叉驗證。如果有個特征與輸出結果不相關,則L2會給一個特別小的值,但是不會為0.
l1正則會產生稀疏解,即不相關的的特征對應的權重為0,就相當於降低了維度。但是l1的求解復雜度要高於l2,並且l1更為流行