很感謝網上的優質部落格,正是因為有了這些知識的分享,才讓學習的成本越來越低。
我們假定有
lasso回歸訓練出來的係數是稀疏的,可用於做特徵篩選。但是怎麼訓練呢,因為絕對值函式在
處是不可導的,所以直接採用梯度下降法是行不通的,需要利用別的演算法。
梯度是乙個函式增長最快的方向,但是當函式在某點不可導時梯度就沒法計算了,梯度不存在是因為在該點的左導數不等於右導數。根據泰勒展開有:
函式 在某點
的次梯度
,滿足:
梯度是函式增長最快的方向,按照泰勒一階展開,
是指沿著梯度方向行走
;但是次梯度不能保證是增長最快的方向,甚至有可能是降低的方向,故形成了乙個不等式。要注意,如果在該點是可導的,則次梯度就是梯度。
採用次梯度法的更新形式為:
和梯度下降法很類似,但是由於負次梯度不一定是下降方向,故我們在迭代更新的過程中要不斷記錄最優的引數:
經過上面的分析,我們知道某一點的次梯度不止乙個。例如考慮單變數函式(此時梯度就是導數,次梯度也稱為次導數)中的絕對值函式
,它在
處是不可導的,那麼有:
可以推出次梯度的範圍。推廣一下,單變數函式中,其實次梯度的範圍是左導數與右導數之間
(假設左導數小於右導數),其中:
從幾何上看,導數是該點的切線,在不可導的點處的左導數是一條切線,右導數是另一條切線,兩條切線之間可以構成無數條切線,兩個切線的斜率構成的範圍就是次梯度。(參考鏈結10)
更嚴謹的,為什麼按照次梯度下降就能保證收斂?參考鏈結10裡面有詳細證明次梯度下降法的收斂性,證明了在步長合適的情況下,次梯度下降法總是會收斂的。維基百科(參考鏈結6)有給出幾個常用的步長。
故對於lasso回歸,採用次梯度下降法是可解的,且由於在真實計算過程中,遇到0點是比較少的,且大部分情況下都是接近0的數,此時只能判斷該點是否小於某個很小的數來決定是否當成0。
在sklearn中,lasso回歸使用的就是座標下降法,如下圖
座標下降法每次針對乙個屬性進行更新,我們假設資料集有
個樣例,資料矩陣為
的矩陣
,那麼損失函式為:
我們希望得到最小化損失函式的引數,並做進一步推導:
為啥要把損失函式寫成這種形式,因為座標下降法每次針對的物件是乙個個維度,故我們將引數的維度給寫出來,以便下面的求偏導。
接著繼續推導,假設現在沿著第
個維度做優化,對其求偏導有:
推導成這樣的形式是因為這是對
的偏導。令偏導數為0得到極值,暫時先不考慮
的情況,那麼令偏導等於0就有(考慮
,因為
幾乎不可能同時為0):
找出能滿足方程的
即可找到極值點,這種情況只能分類討論,首先明確
:1. 當
時:2. 當
時:最後是當
時,無論
或者 均不可能成立,故考慮
,就這樣得出了乙個閉合解:
更詳細地,可以證明出
在各種情況下的閉合解均是最優值,參考鏈結4、5。
西瓜書中第253-254中採用近端梯度下降法(pgd)來求解lasso回歸,總的來說將待求解的問題簡化了:
但最後還是採用座標下降法來解決,更具體的閱讀參考鏈結4、5、12。
2. soft thresholding and hard thresholding
3. 4.
5. 6.
7. 次梯度(subgradient)
8. 函式的次梯度如何理解?
9. lasso(least absolute shrinkage and selection operator) 回歸中 如何用梯度下降法求解?
10.
11. pytlab醬:機器學習演算法實踐-嶺回歸和lasso
12. 怎樣理解近端梯度下降pgd?
13. 周志華《機器學習》
嶺回歸 lasso回歸
嶺回歸 ridge regression 和lasso least absolute shrinkage and selection operator 都是ols的改進,知乎上有關於三者異同的詳細討論 關於lasso 這裡記錄一下最近的學習心得。嶺回歸的含義 嶺回歸的權值計算公式中有單位方陣i,就像...
Lasso回歸實驗
資料集我們使用的是 sklearn包中自帶的波士頓房價資料集。乙個簡單的 lasso 回歸實驗還是那六個步驟 載入資料集 拆分資料集 建立模型 在訓練集學習得到模型 模型 模型評測 關於訓練集和測試集的劃分我們使用的是留出法。至於引數設定,我們設定隨機種子為10,學習率為0.1,迭代次數為10000...
R 嶺回歸 lasso回歸
1.嶺回歸 嶺回歸 ridge regression,tikhonov regularization 實際上算是最小二乘法 ols 的改良版。最小二乘法中使用的是無偏估計回歸,而嶺回歸使用的是 有偏估計回歸 通過損失部分資訊 減低精度得到的回歸係數,但是這樣跟符合實際情況。因為ols有四個基本假設 ...