廣義線性模型的流式學習

廣義線性模型的流式學習


1. 廣義線性模型的組成

在這篇博客中,我們將介紹機器學習中最常用的一大類模型:廣義線性模型。廣義線性模型包含線性模型、邏輯斯特迴歸、嶺迴歸、Lasso等。這幾種模型在spark中均有實現,然而,還未有基於spark streaming的流式算法。

2. 本文符號

假設我們有n個數據,分別爲,每個數據的維度爲k,在廣義線性模型中,我們將這n個數據集中到一個矩陣中,其中A的每一行爲一個數據。每個數據對應的標籤爲,注意每個標籤是一個(0,1)的數,我們把這n個數集合到一個向量中。另外,我們假設廣義線性模型中需要學習的參數爲x,由於是線性模型,因此x的維度也是n。

3. 線性模型

在線性模型中,我們假設,其中是一個服從高斯分佈的誤差項。根據最大似然概率準則,我們需要通過優化以下問題來得到x

這也是一個線性最小二乘問題。由於這是一個L2的優化問題,因此可以通過梯度下降來求解。上述目標優化問題關於參數$x$的梯度爲

梯度下降的更新步驟爲

4. 邏輯斯特迴歸

邏輯斯特迴歸我們已經在之前的博客上詳細介紹,請戳

5. 嶺迴歸

嶺迴歸也是一種線性模型,它的模型爲

其中n是數據的個數,是正則項的權重,L是一個矩陣,通常取爲單位陣I。之所以在第一項前面乘以1/n,是爲了保證不需要隨着數據量而改變。嶺迴歸對x加入了一個正則項,要求其能量儘量小。對嶺迴歸的目標優化函數求梯度,就可以使用梯度下降法來求解。其梯度爲

6. Lasso模型

Lasso是一個L1正則化的問題,相對於一般的L2正則化問題,Lasso可以得到稀疏的解,在機器學習中能得到比L2正則化更好的結果。Lasso問題的形式是:

在機器學習中,$x$是我們要學習的模型參數,前一項是對訓練數據的擬合,後一項是對模型參數的正則化(regularization)。

Lasso問題是一個凸問題,可以求得全局最優解。但是在x=0時是不可導的,所以它沒有梯度,只有次梯度,因此不能直接使用梯度下降法來最優化。

Huber Function

爲了解決上述問題,我們可以使用Huber Function對在x=0處進行平滑,也就是用如下的Huber Function來代替.

畫出Huber Function 可以看到

Huber Function

可以看到其在處是平滑的,並且它可以看做是函數的近似。

現在Lasso問題可以近似爲:

要用梯度下降法解決上述問題,需要對求導,Huber Function是一個分段函數,它的導數爲


其中sign(x)函數是對x取符號運算。現在我們可以得到近似後的Lasso問題的目標優化函數的梯度爲

將上述的廣義線性模型使用我們在之前的博客中提到的方法進行流式學習,即可得到這些廣義線性模型基於spark streaming的流行機器學習。

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