嶺迴歸、lasso

參考:https://blog.csdn.net/Byron309/article/details/77716127     ----    https://blog.csdn.net/xbinworld/article/details/44276389

參考:https://blog.csdn.net/bitcarmanlee/article/details/51589143

1、首先介紹線性迴歸模型(多元)原理,模型可以表示爲:

損失函數可以表示爲:

 

這裏的 1/2m 主要還是出於方便計算的考慮,在求解最小二乘的時並不考慮在內;

最小二乘法可得到最優解:

監督學習有2大基本策略,經驗風險最小化和結構風險最小化;

經驗風險最小化策略爲求解最優化問題,線性迴歸中的求解損失函數最小化問題即經驗風險最小化,經驗風險最小化定義:

求解最優化問題可以轉化爲:

結構化風險最小化是爲了防止過擬合現象提出的策略;結構風險最小化等價於正則化,在經驗風險上加上表示模型複雜度的正則化項,定義如下:

 

這裏討論的嶺迴歸和Lasso,也就是結構風險最小化的思想,在線性迴歸的基礎上,加上模型複雜度的約束。

 

其中幾種範數(norm)的定義如下:

嶺迴歸的損失函數表示:

觀察這條式子很容易的可以聯想到正則化項爲L2範數,也即L2範數+損失函數其實也可以稱爲嶺迴歸;

最小二乘求解參數:

Lasso的損失函數表示:

 

由於Lasso損失函數的導數在0點不可導,因此不能直接利用梯度下降求解;引入subgradient的概念,考慮簡單函數,即x只有1維的情況下,即簡單函數表示:

首先定義|x|在0點的梯度,即subgradient,

 

函數在某一點的導數可以看成函數在這一點上的切線。那麼在原點,可以在實線下方找到無數條切線,形成曲線族;我們把這些切線斜率的範圍定義爲這點的subgradient;也即|x|在0點的導數是在-1到1範圍內的任意值;

所以可以得到h(x)的導數:

在x=0的時候,按照上面的subgradient可以得到,x=0時斜率的區間在x>0和x<0之間;當-b<2a<b時,在x=0時,f'(x)能取到值0;也就是f(x)到達極值點,這也可以解釋lasso下的解會稀疏的原因:在b的取值在一定範圍內時,只要x爲0,f'(x)就恆爲0; (這句話本人不是特別理解)(先存疑),

有關subgradient的解釋:https://blog.csdn.net/lansatiankongxxc/article/details/46386341

 

當x拓展到多維向量時,導數方向的變化範圍更大,問題更爲複雜;常見解決方法如下:

1、貪心算法;每次先找到與目標最相關的feature,固定其他係數,優化這個feature的係數,具體求導也用到subgradient;代表算法有LARS,feature-sign search等;

2、逐一優化;每次固定其他的維度,選擇一個維度進行優化;因爲只有一個方向有變化,所以轉化爲簡單的subgradient問題,反覆迭代所有維度,達到收斂;代表算法有coordinate descent,block coordinate descent等;

Lasso和ridge的幾何意義如下圖:

紅色橢圓和藍色的區域的切點就是目標函數的最優解;可以看到,如果是圓,很容易切到圓周的任意一點,但是很難切到座標軸上。則在該緯度上取值不爲0,因此沒有係數;如果是菱形或多邊形,則很容易切到座標軸上,使部分維度特徵權重爲0,因此很容易產生稀疏的結果;

轉載自:http://www.cnblogs.com/xiaochouk/p/9351487.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章