詳解並行邏輯回歸

2021-01-08 CSDN技術社區

編者按:回歸其實就是對已知公式的未知參數進行估計,Logistic regression是線性回歸的一種,是機器學習中十分常用的一種分類算法,在網際網路領域得到了廣泛的應用。本文來自騰訊馮揚的博客:並行邏輯回歸 ,主要從並行化的角度討論LR的實現。

CSDN推薦:歡迎免費訂閱《Hadoop與大數據周刊》獲取更多Hadoop技術文獻、大數據技術分析、企業實戰經驗,生態圈發展趨勢。

以下為原文:

邏輯回歸(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 訓練耗時對比

相關焦點

  • 線性回歸分析詳解10(完結篇):線性回歸分析預測的十大步驟
    許栩原創專欄《從入門到高手:線性回歸分析詳解》第10章,這是本專欄的最後一章,是專欄的完結篇:用線性回歸分析做預測,多元線性回歸分析預測的十大步驟。線性回歸分析專格欄總目錄請見上圖,前9章,我分別講述了回歸分析及與回分析相關的概念,一元、多元線性回歸分析的公式與計算方法,以及多重共線性、回歸方程的精度、顯著性驗證和置信區間等進行回歸分析的重要步驟及其計算方法。至此,以回歸分析進行需求預測的各項知識點及各項準備工作全部完成,我們可以正式的以回歸分析進行需求預測。
  • 線性回歸分析詳解7:多元回歸方程的精度,R平方與調整後的R平方
    許栩原創專欄《從入門到高手:線性回歸分析詳解》第七章,回歸方程的精度,R平方與調整後的R平方。多元線性回歸分析,我們在求出多元線性回歸方程後,這個方程到底怎麼樣,能不能起到效果,需要對求出的回歸方程進行一系列評價和評估。這些評價和評估,首先要做的,是確認回歸方程的精度。本章,我將分如下三個小節講述回歸方程的精度,歡迎閱讀與探討。我的《線性回歸分析》專欄總目錄見下圖。
  • 【從入門到高手:回歸分析】多元回歸分析:如何求解多元回歸方程
    許栩原創專欄《從入門到高手:線性回歸分析詳解》第五章,多元線性回歸分析:如何求解多元回歸方程
  • 線性回歸分析詳解9:顯著性水平、置信度、置信區間及其計算方法
    許栩原創專欄《從入門到高手:線性回歸分析詳解》第9章,總體回歸、置信度、置信區間及其計算方法。多元回歸方程求解後,我們分別確認了回歸方程的精度和進行了回歸方程的顯著性驗證,接下來,需要計算置信區間。置信區間是回歸分析的一個重要概念,但是,將回歸分析應用到需求預測時,並不強求引入置信區間,也就是說,用回歸分析做需求預測時,可以不進行置信區間的計算,而直接進行後續的預測步驟。所以,從這一點來說,大家可以跳過本章,直接進入專欄的第10章,用線性回歸分析進行預測。
  • 線性回歸:簡單線性回歸詳解
    【導讀】本文是一篇專門介紹線性回歸的技術文章,討論了機器學習中線性回歸的技術細節。線性回歸核心思想是獲得最能夠擬合數據的直線。
  • 回歸分析spss步驟 - CSDN
    我們的教程中曾詳細講述了SPSS線性回歸分析,儘管線性回歸可以滿足絕大多數的數據分析,但是在現實情況中,並不能適用於所有的數據,當因變量和自變量之間的關係我們無法確定是否為線性或者其他非線性類型的模型關係時候,那麼我們就需要用到曲線回歸,來確定因變量和自變量之間到底最適合什麼樣的模型。
  • 什麼是回歸?什麼是回歸分析?回歸分析預測的分類方法有哪些?
    大家好,歡迎來到許栩原創專欄《從入門到高手:線性回歸分析詳解》,本篇是專欄的第三篇文章,回歸分析的歷史、概念和分類。本專欄第一章和第二章,我分別講解了學習回歸分析之前必須了解的兩個基礎概念:變量和相關性。本章,講解回歸分析的相關概念和的分類,主要包括以下四個內容。
  • 高斯過程回歸詳解
    本文介紹了高斯回歸的基本概念,並在 R 中利用高斯回歸實現對時間序列的預測。
  • 多元線性回歸分析:納入多元回歸自變量的確定及求解多元回歸方程
    許栩原創專欄《從入門到高手:線性回歸分析詳解》第五章,多元線性回歸分析:如何求解多元線性回歸方程。在前面的章節中我講到,實際需求預測場景中,通常,影響需求的因素不止一個,對需求影響的因素可能多種多樣,也就是說自變量多種多樣,很少能用單一的變量(也即一元線性回歸分析)來做好需求預測。這時,我們需要用到多元線性回歸分析。回歸分析在需求預測的應用,也主要是多元線性回歸分析。對需求預測而言,多元線性回歸更具有實用性和有效性。
  • 《傳奇盛世》稱號盛世雄霸者屬性詳解 盛世雄霸者獲取方法
    今天小編給大家帶來的就是其中的稱號——盛世雄霸者的屬性詳解,感興趣的玩家不妨來看一下。小編在這裡不光會介紹增加的屬性,還會羅列出通過時裝獲得的屬性總加成情況,咱們一起來看下吧。 《傳奇盛世》相關內容推薦: 《傳奇盛世》稱號傳奇英雄屬性詳解 傳奇英雄稱號獲取方法 《傳奇盛世》稱號侯爵屬性詳解 侯爵獲取方法 《傳奇盛世》稱號男爵屬性一覽 稱號獲取攻略詳解 《傳奇盛世》稱號子爵屬性詳解 子爵稱號獲取方法
  • 機器學習之詳解Logistic回歸
    )以及在Python中利用Scikit-Learn提供的函數進行基於Logistic回歸的數據挖掘的一般方法。而本文旨在從源頭上解釋一下Logistic回歸的原理到底是什麼。 英文單詞Regression翻譯成中文「回歸」,那什麼是回歸呢?事實上,在Logistic回歸出現以前,人們最先引入的是線性回歸。了解二者之間的來龍去脈將幫助你更深刻地認識Logistic回歸。
  • 用Excel求解回歸方程的3種方法:LINEST、散點圖和數據分析工具
    許栩原創專欄《從入門到高手:線性回歸分析詳解》第四章,一元線性回歸分析。實際場景中,對需求影響的因素很多,也就是說自變量很多,很少能用單一的變量,也即一元回歸分析來做好預測。回歸分析在預測裡的應用,主要是多元回歸。
  • spss 非線性回歸 - CSDN
    我們在做問卷分析時,由於因變量多為連續的線性變量,多半會採用線性回歸分析來研究變量之間的關係。此時,一般資料或者人口學變量中,就會含有很多分組或分類的變量,比如性別,學歷等等。 如果因變量在這些人口學變量上存在顯著的差異,那麼做回歸分析時候,就需要將這些存在顯著差異的人口學變量作為控制變量納入線性回歸分析。
  • 《命令與徵服:紅色警戒》超時空傳送器背景介紹及詳解
    這款遊戲也實在久遠,讓回歸的玩家一時想不起來了。本文作為分享貼,特意整理了與之相關的信息,以幫助大家快速重溫這款經典的遊戲。《命令與徵服:紅色警戒》超時空傳送器背景介紹及詳解阿爾伯特·愛因斯坦在1946年設計了超時空傳送器的第一個原型,在柏林附近建立的一個設施進行了一次重大控制試驗。
  • 線性回歸方程的顯著性驗證,總體驗證的F檢驗與個體驗證的t檢驗
    許栩原創專欄《從入門到高手:線性回歸分析詳解》第8章,顯著性驗證,總體驗證的F檢驗與個體驗證的t檢驗。上一章,我講述了回歸方程的精度,在回歸分析中,我們求出回歸方程後,除了確認回歸方程的精度外,我們要需要對回歸方程進行顯著性驗證,以確認回歸方程的有效性。本章,我同樣分如下三個小節對顯著性驗證進行講解,歡迎閱讀與探討。我的《線性回歸分析》專欄總目錄見下圖。1、什麼是顯著性驗證?
  • ...長郡雙語物理名師做客中考講堂,教你如何回歸課本,升華考試新技能
    回歸課本、緊扣教材,是近年來中高考命題的主旋律。對物理科目來說,如何從茫茫題海中回歸課本內容,並總結提煉出靈活運用知識的能力與技巧呢?在今晚8時的講堂中,黃浩老師將圍繞「考什麼、如何學、怎麼考」三部分內容,從分析試卷的知識點分布入手,詳解物理試題特點,帶領考生們回歸課本、緊扣教材,通過將課本內容與真題的一一對應,結合課程標準,具體講授、梳理各知識點,剖析其中的難點與熱點。對於今年的物理中考,黃浩老師也將對各題型的答題要求與技巧進行分享。
  • 多元回歸分析中消除多重共線性的3個實用方法
    許栩原創專欄《從入門到高手:線性回歸分析詳解》第六章,多重共線性:消除多重共線性的3個簡單並實用的方法。前五章,我講述了回歸分析的相關概念和分類,以及一元線性回歸與多元線性回歸的基礎模型(回歸方程與求解回歸方程),但在實際需求預測中,回歸方程本身還存在較多的不確定性,不宜直接以求解回歸方程得出預測結果。
  • 初一英語unit6四個高頻名詞,五個重點句子,兩個單詞和詞組詳解
    初一英語unit6四個高頻名詞,五個重點句子,兩個單詞和詞組詳解本課程適用於七年級以及七年級以上的學生,特別適合英語初學者哦!請根據自己的實際情況進行閱讀。偷偷告訴你文中加粗部分一定要引起你的重視哦!1 四個高頻可數名詞的考察詳解1 tomato可數名詞,西紅柿。考點:以o結尾的可數名詞複數形式。其複數為tomatoes。
  • CFA教材輔導:測試多元回歸的顯著性/修正R方
    更多CFA官方教材詳解,請關注「邊際實驗室」。「邊際實驗室」是一家專注於金融科技、金融大數據領域的工作室,同時提供CFA、FRM等金融考試內容的免費講解。測試多元回歸的顯著性之前,我們說明了如何分別對回歸係數進行假設檢驗。如果我們現在想測試整個回歸的顯著性應該怎麼辦?作為一個整體,自變量是否有助於解釋因變量?為了解決這個問題,我們檢驗了回歸中所有斜率係數同時等於0的原假設。
  • 七年級英語第八單元第一部分十三個高頻名詞,序數詞,形容詞詳解
    七年級英語第八單元第一部分十三個高頻名詞,序數詞,形容詞詳解本文適合七年級以及七年級以上的學生,主要講解七年級上冊第八單元第一部分重點單詞和句子,教你輕鬆學英語,輕鬆學考點。請根據自己的實際情況選擇性閱讀。1 特殊疑問副詞when什麼時候,用來提問時間。