原文出處: 美團(tuán)網(wǎng) - Fin 歡迎分享原創(chuàng)到伯樂(lè)頭條 邏輯回歸(Logistic Regression)是機(jī)器學(xué)習(xí)中的一種分類模型,由于算法的簡(jiǎn)單和高效,在實(shí)際中應(yīng)用非常廣泛。本文作為美團(tuán)機(jī)器學(xué)習(xí)InAction系列中的一篇,主要關(guān)注邏輯回歸算法的數(shù)學(xué)模型和參數(shù)求解方法,,最后也會(huì)簡(jiǎn)單討論下邏輯回歸和貝葉斯分類的關(guān)系,以及在多分類問(wèn)題上的推廣,。 邏輯回歸問(wèn)題實(shí)際工作中,,我們可能會(huì)遇到如下問(wèn)題:
這些都可以看做是分類問(wèn)題,更準(zhǔn)確地,,都可以看做是二分類問(wèn)題,。同時(shí),這些問(wèn)題本身對(duì)美團(tuán)也有很重要的價(jià)值,,能夠幫助我們更好的了解我們的用戶,,服務(wù)我們的用戶。要解決這些問(wèn)題,,通常會(huì)用到一些已有的分類算法,,比如邏輯回歸,或者支持向量機(jī),。它們都屬于有監(jiān)督的學(xué)習(xí),,因此在使用這些算法之前,必須要先收集一批標(biāo)注好的數(shù)據(jù)作為訓(xùn)練集,。有些標(biāo)注可以從log中拿到(用戶的點(diǎn)擊,,購(gòu)買(mǎi)),有些可以從用戶填寫(xiě)的信息中獲得(性別),,也有一些可能需要人工標(biāo)注(評(píng)論情感極性),。另一方面,知道了一個(gè)用戶或者一條評(píng)論的標(biāo)簽后,,我們還需要知道用什么樣的特征去描述我們的數(shù)據(jù),,對(duì)用戶來(lái)說(shuō),,可以從用戶的瀏覽記錄和購(gòu)買(mǎi)記錄中獲取相應(yīng)的統(tǒng)計(jì)特征,而對(duì)于評(píng)論來(lái)說(shuō),,最直接的則是文本特征,。這樣拿到數(shù)據(jù)的特征和標(biāo)簽后,就得到一組訓(xùn)練數(shù)據(jù): 其中 \(x^i\) 是一個(gè) \(m\) 維的向量,,\(x^i = [x_1^i, x_2^i, ... , x_m^i]\) ,,\(y\) 在 {0, 1} 中取值。(本文用{1,,0}表示正例和負(fù)例,,后文沿用此定義,。) 我們的問(wèn)題可以簡(jiǎn)化為,,如何找到這樣一個(gè)決策函數(shù)\(y^* = f(x)\),它在未知數(shù)據(jù)集上能有足夠好的表現(xiàn),。至于如何衡量一個(gè)二分類模型的好壞,,我們可以用分類錯(cuò)誤率這樣的指標(biāo):\(Err = \frac{1}{N} \sum 1[y^* = y]\) 。也可以用準(zhǔn)確率,,召回率,,AUC等指標(biāo)來(lái)衡量。 值得一提的是,,模型效果往往和所用特征密切相關(guān),。特征工程在任何一個(gè)實(shí)用的機(jī)器學(xué)習(xí)系統(tǒng)中都是必不可少的,機(jī)器學(xué)習(xí)InAction系列已有一篇文章中對(duì)此做了詳細(xì)的介紹,,本文不再詳細(xì)展開(kāi),。 模型sigmoid 函數(shù)在介紹邏輯回歸模型之前,我們先引入sigmoid函數(shù),,其數(shù)學(xué)形式是: \(g(x) = \frac{1}{1 + e ^ {-x}}\) 對(duì)應(yīng)的函數(shù)曲線如下圖所示: 從上圖可以看到sigmoid函數(shù)是一個(gè)s形的曲線,,它的取值在[0, 1]之間,在遠(yuǎn)離0的地方函數(shù)的值會(huì)很快接近0/1,。這個(gè)性質(zhì)使我們能夠以概率的方式來(lái)解釋(后邊延伸部分會(huì)簡(jiǎn)單討論為什么用該函數(shù)做概率建模是合理的),。 決策函數(shù)一個(gè)機(jī)器學(xué)習(xí)的模型,實(shí)際上是把決策函數(shù)限定在某一組條件下,,這組限定條件就決定了模型的假設(shè)空間,。當(dāng)然,我們還希望這組限定條件簡(jiǎn)單而合理,。而邏輯回歸模型所做的假設(shè)是: \(P(y=1|x;\theta) = g(\theta^T x) = \frac{1}{1 + e ^ {-\theta^T * x}}\) 這里的 \(g(h)\) 是上邊提到的 sigmoid 函數(shù),,相應(yīng)的決策函數(shù)為: \(y^* = 1, \, \textrm{if} \, P(y=1|x) > 0.5\) 選擇0.5作為閾值是一個(gè)一般的做法,實(shí)際應(yīng)用時(shí)特定的情況可以選擇不同閾值,,如果對(duì)正例的判別準(zhǔn)確性要求高,,可以選擇閾值大一些,,對(duì)正例的召回要求高,則可以選擇閾值小一些,。 參數(shù)求解模型的數(shù)學(xué)形式確定后,,剩下就是如何去求解模型中的參數(shù)。統(tǒng)計(jì)學(xué)中常用的一種方法是最大似然估計(jì),,即找到一組參數(shù),,使得在這組參數(shù)下,我們的數(shù)據(jù)的似然度(概率)越大,。在邏輯回歸模型中,,似然度可表示為: \(L(\theta) = P(D|\theta) = \prod P(y|x;\theta) = \prod g(\theta^T x) ^ y (1-g(\theta^T x))^{1-y}\) 取對(duì)數(shù)可以得到對(duì)數(shù)似然度: \(l(\theta) = \sum {y\log{g(\theta^T x)} + (1-y)\log{(1-g(\theta^T x))}}\) 另一方面,在機(jī)器學(xué)習(xí)領(lǐng)域,,我們更經(jīng)常遇到的是損失函數(shù)的概念,,其衡量的是模型預(yù)測(cè)錯(cuò)誤的程度。常用的損失函數(shù)有0-1損失,,log損失,,hinge損失等。其中l(wèi)og損失在單個(gè)數(shù)據(jù)點(diǎn)上的定義為\(-y\log{p(y|x)}-(1-y)\log{1-p(y|x)}\) 如果取整個(gè)數(shù)據(jù)集上的平均log損失,,我們可以得到 \(J(\theta) = -\frac{1}{N} l(\theta)\) 即在邏輯回歸模型中,,我們最大化似然函數(shù)和最小化log損失函數(shù)實(shí)際上是等價(jià)的。對(duì)于該優(yōu)化問(wèn)題,,存在多種求解方法,,這里以梯度下降的為例說(shuō)明。梯度下降(Gradient Descent)又叫作最速梯度下降,,是一種迭代求解的方法,,通過(guò)在每一步選取使目標(biāo)函數(shù)變化最快的一個(gè)方向調(diào)整參數(shù)的值來(lái)逼近最優(yōu)值?;静襟E如下:
其中損失函數(shù)的梯度計(jì)算方法為: \( \frac{\partial{J}}{\partial{\theta}} = -\frac{1}{n}\sum_i (y_i y_i^*)x_i + \lambda \theta\) 沿梯度負(fù)方向選擇一個(gè)較小的步長(zhǎng)可以保證損失函數(shù)是減小的,,另一方面,,邏輯回歸的損失函數(shù)是凸函數(shù)(加入正則項(xiàng)后是嚴(yán)格凸函數(shù)),可以保證我們找到的局部最優(yōu)值同時(shí)是全局最優(yōu),。此外,,常用的凸優(yōu)化的方法都可以用于求解該問(wèn)題。例如共軛梯度下降,,牛頓法,,LBFGS等。 分類邊界知道如何求解參數(shù)后,我們來(lái)看一下模型得到的最后結(jié)果是什么樣的,。很容易可以從sigmoid函數(shù)看出,,當(dāng)\(\theta^T x > 0 \) 時(shí),\(y = 1\),,否則 \(y = 0\),。\(\theta^T x = 0 \) 是模型隱含的分類平面(在高維空間中,我們說(shuō)是超平面),。所以說(shuō)邏輯回歸本質(zhì)上是一個(gè)線性模型,,但是,這不意味著只有線性可分的數(shù)據(jù)能通過(guò)LR求解,,實(shí)際上,,我們可以通過(guò)特征變換的方式把低維空間轉(zhuǎn)換到高維空間,而在低維空間不可分的數(shù)據(jù),,到高維空間中線性可分的幾率會(huì)高一些,。下面兩個(gè)圖的對(duì)比說(shuō)明了線性分類曲線和非線性分類曲線(通過(guò)特征映射)。 左圖是一個(gè)線性可分的數(shù)據(jù)集,,右圖在原始空間中線性不可分,,但是在特征轉(zhuǎn)換 \([x_1, x_2] => [x_1, x_2, x_1^2, x_2^2, x_1x_2]\) 后的空間是線性可分的,,對(duì)應(yīng)的原始空間中分類邊界為一條類橢圓曲線,。 正則化當(dāng)模型的參數(shù)過(guò)多時(shí),很容易遇到過(guò)擬合的問(wèn)題,。這時(shí)就需要有一種方法來(lái)控制模型的復(fù)雜度,,典型的做法在優(yōu)化目標(biāo)中加入正則項(xiàng),通過(guò)懲罰過(guò)大的參數(shù)來(lái)防止過(guò)擬合: \(J(\theta) = -\frac{1}{N}\sum {y\log{g(\theta^T x)} + (1-y)\log{(1-g(\theta^T x))}} + 一般情況下,,取\(p=1\)或\(p=2\),,分別對(duì)應(yīng)L1,L2正則化,,兩者的區(qū)別可以從下圖中看出來(lái),,L1正則化(左圖)傾向于使參數(shù)變?yōu)?,因此能產(chǎn)生稀疏解,。
實(shí)際應(yīng)用時(shí),,由于我們數(shù)據(jù)的維度可能非常高,L1正則化因?yàn)槟墚a(chǎn)生稀疏解,,使用的更為廣泛一些,。 延伸生成模型和判別模型邏輯回歸是一種判別模型,表現(xiàn)為直接對(duì)條件概率P(y|x)建模,,而不關(guān)心背后的數(shù)據(jù)分布P(x,y),。而高斯貝葉斯模型(Gaussian Naive Bayes)是一種生成模型,先對(duì)數(shù)據(jù)的聯(lián)合分布建模,,再通過(guò)貝葉斯公式來(lái)計(jì)算樣本屬于各個(gè)類別的后驗(yàn)概率,,即: \(p(y|x) = \frac{P(x|y)P(y)}{\sum{P(x|y)P(y)}}\) 通常假設(shè)P(x|y)是高斯分布,,P(y)是多項(xiàng)式分布,相應(yīng)的參數(shù)都可以通過(guò)最大似然估計(jì)得到,。如果我們考慮二分類問(wèn)題,,通過(guò)簡(jiǎn)單的變化可以得到: 如果 \( \sigma_1 = \sigma_0 \),二次項(xiàng)會(huì)抵消,,我們得到一個(gè)簡(jiǎn)單的線性關(guān)系: \(\log\frac{P(y=1|x)}{P(y=0|x)} = \theta^T x\) 由上式進(jìn)一步可以得到: \(P(y=1|x) = \frac{e^{\theta^T x}}{1+e^{\theta^T x}} = \frac{1}{1+e^{-\theta^T x}} \) 可以看到,,這個(gè)概率和邏輯回歸中的形式是一樣的。這種情況下GNB 和 LR 會(huì)學(xué)習(xí)到同一個(gè)模型,。實(shí)際上,,在更一般的假設(shè)(P(x|y)的分布屬于指數(shù)分布族)下,我們都可以得到類似的結(jié)論,。 多分類(softmax)如果\(y\)不是在[0,1]中取值,,而是在\(K\)個(gè)類別中取值,這時(shí)問(wèn)題就變?yōu)橐粋€(gè)多分類問(wèn)題,。有兩種方式可以出處理該類問(wèn)題:一種是我們對(duì)每個(gè)類別訓(xùn)練一個(gè)二元分類器(One-vs-all),,當(dāng)\(K\)個(gè)類別不是互斥的時(shí)候,比如用戶會(huì)購(gòu)買(mǎi)哪種品類,,這種方法是合適的,。如果\(K\)個(gè)類別是互斥的,即 \(y = i\) 的時(shí)候意味著 \(y\) 不能取其他的值,,比如用戶的年齡段,,這種情況下 Softmax 回歸更合適一些。Softmax 回歸是直接對(duì)邏輯回歸在多分類的推廣,,相應(yīng)的模型也可以叫做多元邏輯回歸(Multinomial Logistic Regression),。模型通過(guò) softmax 函數(shù)來(lái)對(duì)概率建模,具體形式如下: \(P(y=i|x, \theta) = \frac{e^{\theta_i^T x}}{\sum_j^K{e^{\theta_j^T x}}}\) 而決策函數(shù)為:\(y^* = \textrm{argmax}_i P(y=i|x,\theta)\) 對(duì)應(yīng)的損失函數(shù)為: \(J(\theta) = -\frac{1}{N} \sum_i^N \sum_j^K {1[y_i=j] \log{\frac{e^{\theta_i^T x}}{\sum {e^{\theta_k^T x}}}}}\) 類似的,,我們也可以通過(guò)梯度下降或其他高階方法來(lái)求解該問(wèn)題,,這里不再贅述。 應(yīng)用本文開(kāi)始部分提到了幾個(gè)在實(shí)際中遇到的問(wèn)題,,這里以預(yù)測(cè)用戶對(duì)品類的購(gòu)買(mǎi)偏好為例,,介紹一下美團(tuán)是如何用邏輯回歸解決工作中問(wèn)題的。該問(wèn)題可以轉(zhuǎn)換為預(yù)測(cè)用戶在未來(lái)某個(gè)時(shí)間段是否會(huì)購(gòu)買(mǎi)某個(gè)品類,,如果把會(huì)購(gòu)買(mǎi)標(biāo)記為1,,不會(huì)購(gòu)買(mǎi)標(biāo)記為0,就轉(zhuǎn)換為一個(gè)二分類問(wèn)題,。我們用到的特征包括用戶在美團(tuán)的瀏覽,,購(gòu)買(mǎi)等歷史信息,見(jiàn)下表
其中提取的特征的時(shí)間跨度為30天,,標(biāo)簽為2天,。生成的訓(xùn)練數(shù)據(jù)大約在7000萬(wàn)量級(jí)(美團(tuán)一個(gè)月有過(guò)行為的用戶),我們?nèi)斯ぐ严嗨频男∑奉惥酆掀饋?lái),,最后有18個(gè)較為典型的品類集合,。如果用戶在給定的時(shí)間內(nèi)購(gòu)買(mǎi)某一品類集合,就作為正例,。喲了訓(xùn)練數(shù)據(jù)后,,使用Spark版的LR算法對(duì)每個(gè)品類訓(xùn)練一個(gè)二分類模型,迭代次數(shù)設(shè)為100次的話模型訓(xùn)練需要40分鐘左右,,平均每個(gè)模型2分鐘,,測(cè)試集上的AUC也大多在0.8以上。訓(xùn)練好的模型會(huì)保存下來(lái),,用于預(yù)測(cè)在各個(gè)品類上的購(gòu)買(mǎi)概率,。預(yù)測(cè)的結(jié)果則會(huì)用于推薦等場(chǎng)景。 由于不同品類之間正負(fù)例分布不同,,有些品類正負(fù)例分布很不均衡,,我們還嘗試了不同的采樣方法,,最終目標(biāo)是提高下單率等線上指標(biāo),。經(jīng)過(guò)一些參數(shù)調(diào)優(yōu),品類偏好特征為推薦和排序帶來(lái)了超過(guò)1%的下單率提升,。 此外,,由于LR模型的簡(jiǎn)單高效,易于實(shí)現(xiàn),,可以為后續(xù)模型優(yōu)化提供一個(gè)不錯(cuò)的baseline,,我們?cè)谂判虻确?wù)中也使用了LR模型。 總結(jié)邏輯回歸的數(shù)學(xué)模型和求解都相對(duì)比較簡(jiǎn)潔,,實(shí)現(xiàn)相對(duì)簡(jiǎn)單,。通過(guò)對(duì)特征做離散化和其他映射,邏輯回歸也可以處理非線性問(wèn)題,,是一個(gè)非常強(qiáng)大的分類器,。因此在實(shí)際應(yīng)用中,當(dāng)我們能夠拿到許多低層次的特征時(shí),可以考慮使用邏輯回歸來(lái)解決我們的問(wèn)題,。 參考資料
|
|