分類演算法--並行羅吉斯迴歸演算法_資料採礦

來源:互聯網
上載者:User

羅吉斯迴歸(Logistic Regression,簡稱LR)是機器學習中十分常用的一種分類演算法,在互連網領域得到了廣泛的應用,無論是在廣告系統中進行CTR預估,推薦系統中的預估轉換率,反垃圾系統中的識別垃圾內容……都可以看到它的身影。LR以其簡單的原理和應用的普適性受到了廣大應用者的青睞。實際情況中,由於受到單機處理能力和效率的限制,在利用大規模樣本資料進行訓練的時候往往需要將求解LR問題的過程進行並行化,本文從並行化的角度討論LR的實現。

1. LR的基本原理和求解方法

LR模型中,通過特徵權重向量對特徵向量的不同維度上的取值進行加權,並用邏輯函數將其壓縮到0~1的範圍,作為該樣本為正樣本的機率。邏輯函數為,曲線如圖1。


圖1 邏輯函數曲線

給定M個訓練樣本,其中Xj={xji|i=1,2,…N} 為N維的實數向量(特徵向量,本文中所有向量不作說明都為列向量);yj取值為+1或-1,為分類標籤,+1表示樣本為正樣本,-1表示樣本為負樣本。在LR模型中,第j個樣本為正樣本的機率是:

其中W是N維的特徵權重向量,也就是LR問題中要求解的模型參數。

求解LR問題,就是尋找一個合適的特徵權重向量W,使得對於訓練集裡面的正樣本,值盡量大;對於訓練集裡面的負樣本,這個值盡量小(或

盡量大)。用聯合機率來表示:

對上式求log並取負號,則等價於:

                                                公式(1)

公式(1)就是LR求解的目標函數。

尋找合適的W令目標函數f(W)最小,是一個無約束最佳化問題,解決這個問題的通用做法是隨機給定一個初始的W0,通過迭代,在每次迭代中計算目標函數的下降方向並更新W,直到目標函數穩定在最小的點。如圖2所示。


圖2 求解最佳化目標函數的基本步驟

不同的最佳化演算法的區別就在於目標函數下降方向Dt的計算。下降方向是通過對目標函數在當前的W下求一階倒數(梯度,Gradient)和求二階導數(海森矩陣,Hessian Matrix)得到。常見的演算法有梯度下降法、牛頓法、擬牛頓法。

(1) 梯度下降法(Gradient Descent)

梯度下降法直接採用目標函數在當前W的梯度的反方向作為下降方向:

其中為目標函數的梯度,計算方法為:

公式(2)

(2) 牛頓法(Newton Methods)

牛頓法是在當前W下,利用二次泰勒展開近似目標函數,然後利用該近似函數來求解目標函數的下降方向:。其中Bt為目標函數f(W)在Wt處的海森矩陣。這個搜尋方向也稱作牛頓方向。

(3) 擬牛頓法(Quasi-Newton Methods):

擬牛頓法只要求每一步迭代中計算目標函數的梯度,通過擬合的方式找到一個近似的海森矩陣用於計算牛頓方向。最早的擬牛頓法是DFP(1959年由W. C. Davidon提出,並由R. Fletcher和M. J. D. Powell進行完善)。DFP繼承了牛頓法收斂速度快的優點,並且避免了牛頓法中每次迭代都需要重新計算海森矩陣的問題,只需要利用梯度更新上一次迭代得到的海森矩陣,但缺點是每次迭代中都需要計算海森矩陣的逆,才能得到牛頓方向。

BFGS是由C. G. Broyden, R. Fletcher, D. Goldfarb和D. F. Shanno各自獨立發明的一種方法,只需要增量計算海森矩陣的逆Ht=Bt-1,避免了每次迭代中的矩陣求逆運算。BFGS中牛頓方向表示為:

L-BFGS(Limited-memory BFGS)則是解決了BFGS中每次迭代後都需要儲存N*N階海森逆矩陣的問題,只需要儲存每次迭代的兩組向量和一組標量即可:

在L-BFGS的第t次迭代中,只需要兩步迴圈既可以增量計算牛頓方向:

2. 並行LR的實現

由羅吉斯迴歸問題的求解方法中可以看出,無論是梯度下降法、牛頓法、擬牛頓法,計算梯度都是其最基本的步驟,並且L-BFGS通過兩步迴圈計算牛頓方向的方法,避免了計算海森矩陣。因此羅吉斯迴歸的並行化最主要的就是對目標函數梯度計算的並行化。從公式(2)中可以看出,目標函數的梯度向量計算中只需要進行向量間的點乘和相加,可以很容易將每個迭代過程拆分成相互獨立的計算步驟,由不同的節點進行獨立計算,然後歸併計算結果。

將M個樣本的標籤構成一個M維的標籤向量,M個N維特徵向量構成一個M*N的樣本矩陣,如圖3所示。其中特徵矩陣每一行為一個特徵向量(M行),列為特徵維度(N列)。


圖3 樣本標籤向量 & 特徵向量

如果將樣本矩陣按行劃分,將樣本特徵向量分布到不同的計算節點,由各計算節點完成自己所負責樣本的點乘與求和計算,然後將計算結果進行歸併,則實現了“按行並行的LR”。按行並行的LR解決了樣本數量的問題,但是實際情況中會存在針對高維特徵向量進行羅吉斯迴歸的情境(如廣告系統中的特徵維度高達上億),僅僅按行進行平行處理,無法滿足這類情境的需求,因此還需要按列將高維的特徵向量拆分成若干小的向量進行求解。

 (1) 資料分割

假設所有計算節點排列成m行n列(m*n個計算節點),按行將樣本進行劃分,每個計算節點分配M/m個樣本特徵向量和分類標籤;按列對特徵向量進行切分,每個節點上的特徵向量分配N/n維特徵。如圖4所示,同一樣本的特徵對應節點的行號相同,不同樣本相同維度特徵對應節點的列號相同。


圖4 並行LR中的資料分割

一個樣本的特徵向量被拆分到同一行不同列的節點中,即:

其中Xr,k表示第r行的第k個向量,X(r,c),k表示Xr,k在第c列節點上的分量。同樣的,用Wc表示特徵向量W在第c列節點上的分量,即:


(2) 並行計算

觀察目標函數的梯度計算公式(公式(2)),其依賴於兩個計算結果:特徵權重向量Wt和特徵向量Xj的點乘,標量和特徵向量Xj的相乘。可以將目標函數的梯度計算分成兩個並行化計算步驟和兩個結果歸併步驟:

① 各節點並行計算點乘,計算,其中k=1,2,…,M/m,表示第t次迭代中節點(r,c)上的第k個特徵向量與特徵權重分量的點乘,Wc,t為第t次迭代中特徵權重向量在第c列節點上的分量。

②對行號相同的節點歸併點乘結果:


計算得到的點乘結果需要返回到該行所有計算節點中,如圖5所示。
             
                                                           圖5 點乘結果歸併


③ 各節點獨立算標量與特徵向量相乘:

G(r,c),t可以理解為由第r行節點上部分樣本計算出的目標函數梯度向量在第c列節點上的分量。

④ 對列號相同的節點進行歸併:

Gc,t就是目標函數的梯度向量Gt在第c列節點上的分量,對其進行歸併得到目標函數的梯度向量:

這個過程如圖6所示。


圖6 梯度計算結果歸併

綜合上述步驟,並行LR的計算流程如圖7所示。比較圖1和圖7,並行LR實際上就是在求解損失函數最優解的過程中,針對尋找損失函數下降方向中的梯度方向計算作了並行化處理,而在利用梯度確定下降方向的過程中也可以採用並行化(如L-BFGS中的兩步迴圈法求牛頓方向)。


圖7 並行LR計算流程 3. 實驗及結果

利用MPI,分別基於梯度下降法(MPI_GD)和L-BFGS(MPI_L-BFGS)實現並行LR,以Liblinear為基準,比較三種方法的訓練效率。Liblinear是一個開源庫,其中包括了基於TRON的LR(Liblinear的開發人員Chih-Jen Lin於1999年建立了TRON方法,並且在論文中展示單機情況下TRON比L-BFGS效率更高)。由於Liblinear並沒有實現並行化(事實上是可以加以改造的),實驗在單機上進行,MPI_GD和MPI_L-BFGS均採用10個進程。

實驗資料是200萬條訓練樣本,特徵向量的維度為2000,正負樣本的比例為3:7。採用十折交叉法比較MPI_GD、MPI_L-BFGS以及Liblinear的分類效果。結果如圖8所示,三者幾乎沒有區別。


圖8 分類效果對比 將訓練資料由10萬逐漸增加到200萬,比較三種方法的訓練耗時,結果如圖9,MPI_GD由於收斂速度慢,儘管採用10個進程,單機上的表現依舊弱於Liblinear,基本上都需要30輪左右的迭代才能達到收斂;MPI_L-BFGS則只需要3~5輪迭代即可收斂(與Liblinear接近),雖然每輪迭代需要額外的開銷計算牛頓方向,其收斂速度也要遠遠快於MPI_GD,另外由於採用多進程平行處理,耗時也遠低於Liblinear。


圖9 訓練耗時對比

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.