1. 程式人生 > >關於機器學習中LASSO回歸的相關補充

關於機器學習中LASSO回歸的相關補充

lasso回歸 軟閾收縮算子 fist算法

在之前的相關文章中筆者給出了一般回歸的補充,即嶺回歸和LASSO回歸,它們都是為了解決在回歸過程中的過擬合問題,其具體解決方案就分別是在目標函數後增加2範數和1範數以限定參數的表現,對於嶺回歸而言,由於2使用範數的原因,這個目標函數仍是可導的,但對於LASSO回歸而言,就沒有那麽幸運了,因為1範數是不可導的,故沒法直接求解這個目標函數。

而這個1範數求解的問題,在前面的文章中提到應使用FISTFast Iterative Shrinkage Thresholding,即快速收縮閾值,又可簡寫為FISTA,這是針對另外一種求解方法而言的,因為其被稱為叠代收縮方法,簡稱ISTA)方法,但並沒有具體解釋其原因(即為什麽需要進行)和算法本身的運作過程,現在本文中給出。因為

FIST方法也在字典學習及稀疏表示中被使用。

本文將比較具體的給出這個FIST方法的由來和算法流程,以對其為什需要如此操作和稀疏性進行解釋。

軟閾收縮算子

在之前討論如何求解LASSO回歸的時候,最終筆者給出了一個所謂軟閾收縮算子(或稱作軟閾收縮算法)的東西,通過這個來求解目標函數的一個變型。這裏需要討論一個問題:為什麽需要使用這個東西來求解含有絕對值的目標函數?

因為如果讀者還記得之前的原始目標函數應為:

技術分享

先不論公式2和公式3範數平方中常數部分的內容有所不同(因為這個和求導問題沒什麽關系),關鍵是我們所求參數向量w在公式2中還有樣本矩陣X與其相乘,正是由於這個原因造成我們無法對公式2直接求解,其直接原因是我們實在無法確定其符號(也有的文章解釋為對向量進行了旋轉,我想這個也可以解釋的通吧),即導數的相關方向,而軟閾收縮算子恰能解決這個問題,所以通過一些變換(主要是使用類似泰勒公式的展開方法以及利用拉普拉斯連續等)將公式2變換成公式3,然後再求解,所以整體求解過程被分成了兩步走,而第二步就是上面提到的叠代收縮閾值(ISTA)。

在解釋具體原因之前,再把這個經過變形的目標函數列出:

技術分享

其實上式和公式3僅在左半部分相差一個1/2,這個只不是過是為了在求導後消除系數而已。

現我們對公式3進行一般意義上的求導(在某一維度,如第i維),可得:

技術分享

其中sign(x)是符號函數,若x為正數,則返回1,否則返回-1;如wi > 0,則令上式等於0,可得

技術分享

而其它情況則均為0

這個簡單的推導就說明了軟閾這個含義(可以理解技術分享其實就是這個所謂的閾值),實際上筆者理解的這個方法恰恰就是將求導在絕對值這個超越函數上的推廣,這個導函數的圖形正是中間部分為零(在區間[-技術分享]上;讀者可以畫出上述函數的圖形,就能明白,當然這是在某一維度下進行的),而兩頭才為非零值(一次分段的函數)。這種函數圖形上的表現也解釋了為什麽LASSO回歸的系數會較為稀疏,究其根本原因就是其導函數的取值有較多機會為零,而嶺回歸的導函數就是一個基本的一次函數,故其和坐標軸的交點有且僅有一個交點,所以值稀疏的機會不大,這也從另一個方面解釋了稀疏性,而一般文檔都是從圖形的表現上來說明的。

快速叠代收縮閾值算法

在之前論述LASSO回歸的相關解法的文章中,實際上給出的求解內容就是基於遞歸收縮閾值算法(Iterative ShrinkageThresholding)的,而本節給出一個更為快速的解法,即快速叠代收縮閾值算法,既然是被稱為快速,當然其相關復雜度要低一些。

算法會引入一個輔助變量,在每次叠代中都會先計算這個輔助變量a,然後再利用這個變量計算系數w,之後再利用本次得到的系數計算輔助變量,具體過程如下:

技術分享

end while

輸出:系數w








關於機器學習中LASSO回歸的相關補充