聲明:本博客整理自博友@zhouyong計算廣告與機器學習-技術共享平台,尊重原創,歡迎感興趣的博友查看原文。
符號定義
這里定義《深入淺出ML》系列中涉及到的公式符號,如無特殊說明,符號含義均按下述定義解釋:
符號 | 含義 |
---|---|
\(x_j\) | 第\(j\)維特征 |
\(x\) | 一條樣本中的特征向量,\(x=(1, x_1, x_2, \cdots, x_n)\) |
\(x^{(i)}\) | 第\(i\)條樣本 |
\(x_{j}^{(i)}\) | 第\(i\)條樣本的第\(j\)維特征 |
\(y^{(i)}\) | 第\(i\)條樣本的結果(label) |
\(X\) | 所有樣本的特征全集,即\(X=(x^{(1)},x^{(2)}, \cdots, x^{(m)})^T\) |
\(Y\) | 所有樣本的label全集,即\(Y=(y^{(1)},y^{(2)}, \cdots, y^{(m)})^T\) |
\(w\) | 參數向量,即\(w=(w_0, w_1, \cdots, w_n)\) |
\(w_j\) | 第\(j維\)參數 |
寫在前面
回歸技術在整個數據科學體系中占有非常重要的位置,回歸分析是統計學中的相關分析知識體系中重要組成部分。在機器學習中,回歸、分類和標注共同構成了監督學習技術。
監督學習(supervised learning)是機器學習在工業界應用最廣的一個領域分支。在學術界中也是研究最多的領域之一。大家都知道的數據挖掘十大經典算法中,監督學習技術占據6席。
回歸分析介紹
在介紹具體的回歸技術之前,有必要探討下以下幾個問題。回歸分析是什么?為什么要使用回歸分析呢?
-
什么是回歸分析?
回歸分析是解決預測建模任務時的一種方法,用於研究自變量與因變量之間的關系。該方法主要用於預測、時間序列建模以及尋找變量之間的因果關系。 舉例,rash driving和number of road accidents by a driver通過回歸技術可以進行更好的研究。
回歸分析是用於建模和數據分析的一個重要工具。這里,我們用曲線/直線去擬合數據點,希望所有數據點到曲線或直線的距離差異之和最小(后面會給出公式量化)。
上圖是某一階段的股票指數波動示意圖,用一條(紅色)曲線擬合真實數據。
-
為什么要使用回歸分析?
正如上面描述,回歸分析多用於建立兩個或多個變量之間的關系表達。我們通過一個例子理解這個問題:
假如,你想根據當前的經濟環境預估企業的營收增長情況。公司最近的財報表明營收增長大約是經濟增長的2.5倍。利用這個關系,就可以根據當前和過去的營收和經濟數據,預測公司未來的營收增長情況。
使用回歸分析有諸多好處,比如:
- 它可以清晰的表示自變量(特征)與因變量(結果)之間的顯著關系;
-
還可以表明多個自變量(特征)對因變量(結果)的影響程度(根據feature對應權重大小).
同時,回歸分析也可以去比較兩個變量之間的影響,比如促銷活動的次數與價格波動的影響。這些有助於幫助市場研究人員/數據分析師/數據科學家去消除或評估最佳的一組變量用於建立預測模型。
-
回歸技術分類
有很多種不同的回歸技術可做預測。根據目標變量的個數、因變量的類型以及回歸函數的形狀這三個維度對回歸技術做一個歸類。我們從回歸家族中拿出兩個經典的回歸技術——線性回歸和邏輯斯蒂回歸,詳細闡述其技術原理和應用場景。
一睹為快,簡要的看下二者在變量上的差異:
方法 | 自變量(特征) | 因變量(結果) | 關系 |
---|---|---|---|
線性回歸 | 連續或離散 | 連續實數 | 線性 |
Logistic回歸 | 連續或離散 | (0,1)之間連續值 | 非線性 |
線性回歸(Linear Regression)
線性回歸是最被廣泛應用的建模技術之一。顧名思義,就是用一組變量(或特征)的線性組合,來建立與結果的關系。即期望用一條最佳的直線(被稱為回歸線)來表示因變量(\(Y\))和一個或多個自變量(\(X\))之間的關系。
線性回歸模型
-
模型表達
$$
y(x, w) = w_0 + w_1 x_1 + \cdots + w_n x_n \qquad (ml.1.1.1)
$$其中,\(x_1,x_2,\cdots,x_n\)表示自變量(集合);\(y\)是因變量;\(w\)為參數向量;\(w_i\)表示對應自變量(特征)的權重,\(w_0\)是偏倚項(又稱為截距)。
關於參數\(w\):
- 在物理上可以這樣解釋:在自變量(特征)之間相互獨立的前提下,\(w_i\)反映自變量\(x_i\)對因變量\(y\)的影響程度,\(w_i\)越大,說明\(x_i\)對結果\(y\)的影響越大。
- 通過每個自變量(特征)前面的參數,可以很直觀的看出哪些特征分量對結果的影響比較大。
- 在統計中,\(w_1,w_2,\cdots,w_n\)稱為偏回歸系數,\(w_0\)稱為截距。
如果令\(x_0=1, y(x,w)=h_{w}(x)\), 可以將公式\((ml.1.1.1)\)寫成向量形式,即:
$$
h_{w}(x) = \sum_{i=0}^{n} w_i x_i = w^T x \qquad(ml.1.1.2)
$$其中,\(w=(w_0, w_1, \cdots, w_n)\),\(x=(1, x_1, x_2, \cdots, x_n)\) 均為向量,\(w^T\)為\(w\)的轉置。
公式\((ml.1.1.2)\)中,假設特征空間與輸入空間\(x\)相同。
准確的講,模型表達式要建立的是特征空間與結果之間的關系。在一些應用場景中,需要將輸入空間映射到特征空間,然后建模. 定義映射函數為\(\phi(x)\),因此我們可以把公式\((ml.1.1.2)\)寫成更通用的表達方式:
$$
h_w(x) = w^T \phi(x)
$$特征映射相關技術,包括特征哈希、特征學習、Kernel等,在后面的章節中會詳細介紹。
-
參數學習准則
公式\((ml.1.1.2)\)中的參數向量\(w\)是\(n+1\)維,每個參數的取值是實數集合,也就是說參數向量\(w\)在\(n+1\)維實數空間中取值結果有無窮種可能。
那么,如何利用一個規則或機制幫助我們評估求得的參數\(w\),並且使得到的線性模型效果最佳?直觀地認為,如果求得的參數\\(w\)線性求和后,得到的結果\(h_{w}(x)\)與真實值\(y\)之差越小越好。
這是我們需要引入一個函數用來衡量\(h_{w}(x)\)表示真實值\(y\)好壞的程度,該函數稱為損失函數(loss function,也稱為錯誤函數)。數學表示如下:
$$
\begin{align}
& J(w) = \frac{1}{2} \sum_{i=1}^{m} \left(h_{w}(x^{(i)}) - y^{(i)} \right)^2 \\\
& \min_{w} \quad J(w)
\end{align} \qquad (ml.1.1.3)
$$這個損失函數用的是\(x^{(i)}\)的估計值\(h_{w}(x^{(i)})\)與真實值\(y^{(i)}\)之差的平方和。從優化的角度講,公式\((ml.1.1.3)\)是待優化的目標函數(Object Function)(如果不考慮其它問題,諸如過擬合等),可將其轉化為最優化問題求參數。
參數學習-線性回歸目標函數
如何調整參數\(w\)使得\(J(w)\)取得最小值?方法有很多,這里先介紹兩種比較經典的方法,即最小二乘法和梯度下降法。
-
最小二乘法(Least Square)
最小二乘法是一種完全數學描述的方法,直接給出閉式解結果。它用\(X\)表示觀測數據中的特征矩陣,結果表示成\(Y\)向量,目標函數仍是\((ml.1.1.3)\),那么\(w\)可直接用下面公式表示:
$$
w = (X^T X)^{-1} X^T Y \qquad \qquad (ml.1.1.4)
$$公式來源:
\(\qquad X^T X w = X^T Y \)
-
梯度下降法(Gradient Descent)
由於最小二乘法直接進行矩陣運算(求逆等),盡管可以得到全局最優解。但是在互聯網海量數據背景下的回歸分析或預測問題,其計算效率較低,甚至無法完成(涉及超大矩陣的求逆運算)。
而基於梯度法求解參數是一個不錯的選擇,原因主要有2點:
- 算法復雜度與樣本規模(樣本數\(m\)、特征維度\(n\))呈線性關系;
-
如果目標函數是凸函數,批梯度法可保證能得到最優解,隨機梯度法也能近似得到最優解。
基於梯度法求解回歸問題的目標函數極值問題,將在《最優化算法》系列中詳細講解。
-
最小二乘法與梯度下降法求解異同
-
相同點
- 本質相同:兩種求解方法都是在給定已知數據(自變量\(x\),因變量\(y\))的前提下對因變量\(y\)算出一個估值函數(\(x與y\)關聯表達式),然后對給定的新輸入\(x\)通過估值函數得出\(y\)。
- 目標相同:都是在已知數據的框架下,使得估算值與真實值的之差的平方和盡可能小。
-
不同點
實現方法與結果不同:最小二乘法直接通過建立等價關系找到全局最小,非迭代法。而梯度下降法作為迭代法的一種,先給定一個參數向量初始值,然后向目標函數下降最快的方向調整(即梯度方向),在若干次迭代之后找到全局最小。
相比最小二乘法,隨機梯度下降法的一個缺點是:在接近極值時收斂速度變慢,並且該方法對初始值的選取比較敏感。
-
概率解釋-回歸模型目標函數
一般地,機器學習中不同的模型會有相應的目標函數。而回歸模型(尤其是線性回歸類)的目標函數通常用平方損失函數作為優化的目標函數(即真實值與預測值之差的平方和)。為什么要選用誤差平方和作為目標函數呢?答案可以從概率論中的中心極限定理、高斯分布等知識中找到。
-
中心極限定理
目標函數的概率解釋需要用到中心極限定理。中心極限定理本身就是研究獨立隨機變量和的極限分布為正態分布的問題。
中心極限定理公式表示:
設\(n\)個隨機變量\(X_1, X_2, \cdots, X_n\)相互獨立,均具有相同的數學期望與方差,即\(E(X_i) = \mu\); \(D(X_i) = \sigma^2\)。令\(Y_n\)為隨機變量之和,有
$$
Y_n = X_1 + X_2 + \cdots + X_n \qquad (n.ml.1.1.1)
$$$$
Z_n = \frac {Y_n - E(Y_n)} {\sqrt{D(Y_n)}} = \frac {Y_n - n \mu} {\sqrt{n} \sigma} \rightarrow \mathcal{N}(0,1) \qquad(n.ml.1.1.2)
$$稱隨機變量\(Z_n\)為\(n\)個隨機變量\(X_1, X_2, \cdots, X_m\)的規范和。
中心極限定理定義:
設從均值為\(\mu\)、方差為\(\sigma^2\)(有限)的任意一個總體中抽取樣本量為\(n\)的樣本,當\(n\)充分大時,樣本均值的抽樣分布[\(\frac{1}{n} Y_n\)]近似服從於均值為\(\mu\)、方差為\(\sigma^2\)的正態分布。
-
高斯分布
假設給定一個輸入樣例\(x^{(i)}\)根據公式\((ml.1.1.1)\)得到預測值\(w^{T}x^{(i)}\)與真實值\(y^{(i)}\)之間存在誤差,即為\(\epsilon^{(i)}\)。那么,它們之間的關系表示如下:
$$
y^{(i)} = w^T x^{(i)} + \epsilon^{(i)} \qquad (ml.1.1.5)
$$而這里假設誤差\(\epsilon^{(i)}\)服從標准高斯分布是合理的。解釋如下:
回歸模型的最終目標是建立自變量\(x\)與結果\(y\)之間的關系(通過函數表達式),希望通過\(x\)能較准確的表示結果\(y\)。
而在實際應用場景中,很難甚至不可能把導致\(y\)結果的所有變量(特征)都找出來,並放到回歸模型中。那么模型中存在的\(x\)通常認為是影響結果\(y\)最主要的變量集合(又稱因子, 在ML中叫做特征集)。根據中心極限定理,把那些對結果影響比較小的變量(假設獨立同分布)之和認為服從正態分布是合理的。
示例說明誤差服從高斯分布是合理的:
Andrew Ng《機器學習》課程第1節的線性回歸例子中,根據訓練數據建立房屋的面積\(x\)與房屋的售價\(y\)之間的函數表達。
它的數據集中把房屋面積最為主要的變量。除此之外我們還知道房屋所在的地段(地鐵、學區、城區、郊區),周邊交通狀況,當地房價,樓層,采光,綠化面積,… 等等諸多因素會影響房價。
在實際中,因數據收集問題可能拿不到所有影響房屋售價的因素(變量),可以假設多個因素變量相互獨立,根據中心極限定理,認為變量之和服從高斯分布。即:
$$
\epsilon^{(i)} = y^{(i)} - w^T x^{(i)} \rightarrow \mathcal{N}(0,\sigma^2) \qquad(n.ml.1.1.3)
$$那么\(x\)和\(y\)的條件概率可表示為:
$$
p(y^{(i)} | x^{(i)}; w) = \frac{1}{\sqrt{2\pi} \sigma} \exp {\left(- \frac{(y^{(i)} - w^T x^{(i)})^2}{2 \sigma^2}\right)} \qquad(ml.1.1.6)
$$
-
極大似然估計與損失函數極小化等價
根據公式\((ml.1.1.6)\)估計得到一條樣本的結果概率,模型的最終目標是希望在全部樣本上預測最准,也就是概率積最大,這個概率積就是似然函數。優化的目標的函數即為似然函數,表示如下:
$$
\max_{w} \quad L(w) = \prod_{i=1}^{m} \frac{1}{\sqrt{2\pi} \sigma} \exp \left(- \frac{(y^{(i)} - w^T x^{(i)})^2} {2 \sigma^2}\right) \qquad(ml.1.1.7)
$$對\(L(x)\)取對數,可得:
$$ \max_{w} \; \mathcal{l}(w) = -m \cdot \log \sqrt{2\pi} \sigma - \frac{1}{2\sigma^2} \sum_{i=1}^{m} \left(y^{(i)} - w^T x^{(i)}\right)^2 \qquad(ml.1.1.8) $$
由於\(n,\sigma\)變量為常數,因此公式\((ml.1.1.8)\)等價於:
$$
\min_{w} \; \frac{1}{2} \sum_{i=1}^{m} \left(y^{(i)} - w^T x^{(i)}\right)^2 \qquad(ml.1.1.9)
$$我們可以發現,經過最大似然估計推導出來的待優化的目標函數\((ml.1.1.9)\)與平方損失函數\((ml.1.1.3)\)是等價的。因此,可以得出結論:
線性回歸 誤差平方損失極小化與極大似然估計等價。其實在概率模型中,目標函數的原函數(或對偶函數)極小化(或極大化)與極大似然估計等價,這是一個帶有普遍性的結論。
在本系列《第02章:深入淺出ML之Entropy-Based家族》和李航老師的《統計學習方法》中,談到最大熵模型時,都給出了對偶函數極大化與極大似然估計等價的結論。
為什么是條件概率?
因為我們希望預測值與真實值更接近,這就意味着希望求出來的參數\(w\),在給定輸入\(x\)的情況下,得到的預測值等於真實值的可能性越大越好。而\(w, x\)均是前提條件,因此用條件概率\(p(y|x; w)\)表示。即\(p(y|x; w)\)越大,越能說明估計的越准確。(當然也不能一味地只優化該條件概率,還要考慮擬合過度以及模型的泛化能力問題,這部分在《第07章:深入淺出ML之統計學習理論》中詳細闡述。)
邏輯斯蒂回歸(Logistic Regression)
邏輯斯蒂分布
介紹邏輯斯蒂回歸模型之前,首先看一個並不常見的概率分布——邏輯斯蒂分布。
-
邏輯斯蒂分布
設\(X\)是連續隨機變量,如果隨機變量\(X\)對應的概率密度函數\(f(x)\)和累積分布函數\(F(x)\)分別是:
$$
f(x) = \frac{e^{- \frac{x-\mu}{s}}} {s(1+e^{- \frac{x-\mu}{s}})^2} \qquad\quad(ml.1.1.10)
$$$$
F(x) = P(X \leq x) = \int_{-\infty}^{x} f(x) dx = \frac {1} {1+e^{- \frac{x-\mu}{s}}} \qquad(ml.1.1.11)
$$那么,\(X\)服從邏輯斯蒂分布。其中,\(\mu\)為位置參數,\(s>0\)為形狀參數。
累積分布函數屬於邏輯斯蒂函數,其圖形是一條\(S\)型曲線(又稱為Sigmoid曲線)。該曲線的特點是:以點\((\mu, \frac{1}{2})\)為中心對稱,即滿足:
$$
F(-x+\mu) - \frac{1}{2} = -F(x-\mu) + \frac{1}{2} \qquad(n.ml.1.1.4)
$$曲線在中心附近增長較快,在兩端增長速度較慢。從密度函數和分布函數圖形都能看出,形狀參數\(s\)的值越小,曲線在中心附近增長的越快。
邏輯斯蒂回歸模型
前面介紹的線性回歸,其應用場景大多是回歸分析,一般不用在分類問題上。原因可以概括為以下兩個:
- 回歸模型是連續型模型,即預測出的值都是連續值(實數值),非離散值;
- 預測結果受樣本噪聲的影響比較大。
而本節要介紹的邏輯斯蒂回歸模型(Logistic Regression Model,簡稱LR模型)是一種可用來分類的模型。在這里,自變量\(X\)取值為連續值或離散值,因變量\(Y\)取值為1或0。
-
LR模型表達式
LR模型表達式為參數化的邏輯斯蒂(累積)分布函數(默認參數\(\mu=0,s=1\))即:
$$
h_w(x) = \frac{1}{1+e^{-w^T \cdot x}} \qquad(ml.1.1.12)
$$\(h_w(x)\)作為事件結果\(y=1\)的概率取值。這里,\(x \in R^{n+1}, y \in \{1,0\}\),\(w \in R^{n+1}\)是權值向量。其中權值向量\(w\)中包含偏置項,即\(w=(w_0, w_1, \cdots, w_n)\), \(x=(1, x_1, \cdots, x_n)\)。
-
理解LR模型
-
對數幾率
一個事件發生的幾率(odds)是指該事件發生的概率與該事件不發生的概率的比值。如果事件發生的概率是\(p\),那么該事件的幾率為\(\frac{p}{1-p}\),該事件的對數幾率(log odds,用logit函數表示)是:
$$
logit(p) = \log \frac{p}{1-p} \qquad(ml.1.1.13)
$$對LR而言,根據公式\((ml.1.1.12)\)和\((ml.1.1.13)\)可得:
$$
\log \frac{h_w(x)}{1-h_w(x)} = w^T x \qquad(ml.1.1.14)
$$即在LR模型中,輸出\(y=1\)的對數幾率是輸入實例\(x\)的線性函數。
-
函數映射
除了從對數幾率的角度理解LR外,從函數映射也可以理解LR模型:
考慮對輸入實例\(x\)進行分類的線性表達式\(w^Tx\),其值域為實數域(\(x \in R^{n+1}\),\(w \in R^{n+1}\))。通過LR模型表達式\((ml.1.1.13)\)可以將線性函數\(w^T x\)的結果映射到\((0,1)\)區間,取值表示為結果為1的概率(在二分類場景中)。
線性函數的值愈接近正無窮\(\infty\),概率值就越接近1;反之,其值越接近負無窮,概率值就越接近0。這樣的模型就是LR模型。
邏輯斯蒂回歸本質上還是線性回歸,只是特征到結果的映射過程中加了一層函數映射(即sigmoid函數),即先把特征/變量線性求和,然后使用sigmoid函數將線性和約束至\((0,1)\)之間,結果值用於二分或回歸預測。
-
-
LR模型——概率解釋
LR模型多用於解決二分類問題,如廣告是否被點擊(是/否)、商品是否被購買(是/否)等互聯網領域中常見的應用場景。
但是實際場景中,我們又不把它處理成“絕對的”分類問題,而是用其預測值作為事件發生的概率。
這里從事件、變量以及結果的角度給予解釋。
我們所能拿到的訓練數據統稱為觀測樣本。問題:樣本是如何生成的?
一個樣本可以理解為發生的一次事件,樣本生成的過程即事件發生的過程。對於0/1分類問題來講,產生的結果有兩種可能,符合伯努利試驗的概率假設。因此,我們可以說樣本的生成過程即為伯努利試驗過程,產生的結果(0/1)服從伯努利分布。這里我們假設結果為1的概率為\(h_{w}(x)\),結果為0的概率為\(1-h_{w}(x)\)。
那么,對於第\(i\)個樣本,概率公式表示如下:
$$P(y^{(i)}=1|x^{(i)}; w) = h_{w}(x^{(i)}) \qquad (ml.1.1.15)$$
$$P(y^{(i)}=0|x^{(i)}; w) = 1 - h_{w}(x^{(i)}) \qquad (ml.1.1.16)$$
將公式\((ml.1.1.15)\)和\((ml.1.1.16)\)合並在一起,可得第\(i\)個樣本正確預測的概率:
$$
P(y^{(i)}|x^{(i)}; w) = (h_{w}(x^{(i)}))^{y^{(i)}} \cdot (1 - h_{w}(x^{(i)}))^{1-y^{(i)}} \qquad (ml.1.1.17)
$$上式是對一條樣本進行建模的數據表達。對於多條樣本,假設每條樣本生成過程獨立,在整個樣本空間中(\(m\)個樣本)的概率分布為:
$$P(Y|X; w) = \prod_{i=1}^{m} \left( (h_{w}(x^{(i)}))^{y^{(i)}} \cdot (1 - h_{w}(x^{(i)}))^{1-y^{(i)}} \right) \qquad(ml.1.1.18)$$
通過極大似然估計(Maximum Likelihood Evaluation,簡稱MLE)方法求概率參數。具體地,下面給出了通過隨機梯度下降法(Stochastic Gradient Descent,簡稱SGD)求參數。
-
參數學習算法
公式\((ml.1.1.18)\)不僅可以理解為在已觀測的樣本空間中的概率分布表達式。如果從統計學的角度可以理解為參數\(w\)似然性的函數表達式(即似然函數表達式)。參數在整個樣本空間中的似然函數可表示為:
$$
\begin{align}
L(w) & = P(Y|X; w) \\\
& = \prod_{i=1}^{m} P(y^{(i)}|x^{(i)}; w) \\\
& = \prod_{i=1}^{m} \left( (h_{w}(x^{(i)}))^{y^{(i)}} \cdot (1 - h_{w}(x^{(i)}))^{1-y^{(i)}} \right)
\end{align} \quad\qquad (ml.1.1.19)
$$為了方便參數求解,對公式\((ml.1.1.19)\)取對數,可得:
$$
\begin{align}
l(w) & = logL(w) \\\
& = \sum_{i=1}^{m} \left( y^{(i)} \cdot \log (h_{w}(x^{(i)})) + (1-y^{(i)}) \cdot \log(1- h_{w}(x^{(i)})) \right)
\end{align} \qquad (ml.1.1.20)
$$最大化log似然函數,就是最小化交叉熵誤差(Cross Entropy Error)。
先不考慮累加和\(\sum_{i=1}^{m}\),針對每個參數\(w_j\)求偏導:
$$
\begin{align}
\frac{\partial}{\partial w_j} l(w) & = \left( y \frac{1}{h_{w}(x)} - (1-y) \frac{1}{1-h_{w}(x)}\right) \frac{\partial}{\partial w_j} h_{w}(x) \\\
& = \left( \frac{y-h_{w}(x)}{h_{w}(x) \cdot (1 - h_{w}(x))}\right) \cdot h_{w}(x) (1 - h_{w}(x)) \cdot \frac{\partial}{\partial w_j} w^T x \\\
& = \left( y-h_{w}(x) \right) \cdot \frac{\partial}{\partial w_j} w^T x \\\
& = \left( y-h_{w}(x) \right) \cdot x_{j}
\end{align} \qquad (ml.1.1.21)
$$最后,通過掃描樣本,迭代下述公式可求得參數:
$$
w_{j+1} = w_j + \alpha \cdot (y^{(i)} - h_{w}(x^{(i)})) \cdot x_{j}^{(i)} \qquad (ml.1.1.22)
$$公式\((ml.1.1.22)\)中的\(\alpha\)表示學習率(learning rete,又稱學習步長)。
除此之外,還有Batch GD,共軛梯度,擬牛頓法(LBFGS),ADMM分布學習算法等都可用於求解參數,這些將在《最優化算法》系列中的對應章節中詳細介紹。
基於梯度法求目標函數極值,另一種推導方式:
$$
\begin{align}
l(w) & = \log L(w) \\\
& = \sum_{i=1}^{m} \left( y^{(i)} \cdot \log (h_{w}(x^{(i)})) + (1-y^{(i)}) \cdot \log(1- h_{w}(x^{(i)})) \right) \\\
& = \sum_{i=1}^{m} \left( y^{(i)} \cdot \underline { \log {\frac {h_w(x^{(i)})}{ 1-h_w(x^{(i)})}} } + \log (1-h_w(x^{(i)}))\right) \\\
& = \sum_{i=1}^{m} \left(y^{(i)} \cdot w^T x^{(i)} - \log (1 + \exp(w^Tx^{(i)})) \right)
\end{align} \qquad(n.ml.1.1.5)
$$同樣的,對每個參數求偏導,推導結果為:
$$
\frac{\partial}{\partial w_j} l(w) = y^{(i)} x_j^{(i)} - \frac {\exp({w^Tx^{(i)}})} {1+\exp({w^Tx^{(i)}})} x_j^{(i)} = \left( y^{(i)} - h_{w}(x^{(i)}) \right) \cdot x_{j}^{(i)} \qquad(n.ml.1.1.6)
$$ -
進行模型參數估計之后,假設參數\(w\)的極大似然估計值是\(w^{*}\),那么我們學到的邏輯斯諦回歸模型為:
$$
P(Y=1 | x) = \frac{exp(w^{*} \cdot x)}{1+exp(w^{*} \cdot x)}
$$$$
P(Y=0 | x) = \frac{1}{1+exp(w^{*} \cdot x)}
$$上述的推導模型是二項分類模型,用於二類分類,可以將其推廣為多項邏輯斯蒂回歸模型(multi-nominal logistic regression model),用於多分類,假設離散隨機變量\(Y\)的取值集合是\({1,2, \cdots ,K}\),那么多項邏輯斯諦回歸模型是
$$
P(Y=k | x) = \frac{exp(w_{k}^{*} \cdot x)}{1+\sum_{k=1}^{K}exp(w_k^{*} \cdot x)}
$$$$
P(Y=K | x) = \frac{1}{1+\sum_{k=1}^{K}exp(w_k^{*} \cdot x)}
$$ -
Sigmoid函數性質:
①. \(h_w(-x) = 1 - h_w(x)\)
②. \(h_w^{\prime}(x) = (1-h_w(x)) \cdot h_w(x)\)推導:
\(
\begin{align}
h^{\prime}(x) & = (\frac {1}{1+e^{-x}})^{\prime} = - \frac {1}{(1+e^{-x})^2} \cdot (e^{-x})^{\prime} \\\
& = \frac {e^{-x}} {(1+e^{-x})^2} = \frac {e^{-x}} {1+e^{-x}} \cdot \frac{1} {1+e^{-x}} \\\
& = (1-h(x)) \cdot h(x)
\end{align}
\)重要考察點
注:這部分公式推導是LR模型的核心部分,在機器學習相關面試中,LR模型公式推導是可能是考察頻次最高的一個點。打算尋求數據挖掘、機器學習等職位的朋友,建議能做到公式的熟練推導。
-
交叉熵誤差
其實從公式\((ml.1.1.20)\)中不難看出,LR模型的對數似然函數對應的就是交叉熵的表達式。在給定樣本空間下,對於條件概率\(P(y|x)=h_w(yx)\)來說,其似然函數表達式為:
$$
\max_{h} likelihood(h) \propto \prod_{i=1}^{m} h_w(y^{(i)} x^{(i)}) \qquad (ml.1.1.23)
$$上式表示函數\(h\)的可能性,即\(likelihood(h)\)。該式越大,說明\(h\)越逼近真實目標函數\(f\)。將其轉化為求極小值問題(添加負號),並寫成\(\log\)形式為:
$$
\begin{align}
& \min_w \quad \frac{1}{m} \sum_{i=1}^{m} - \log (h_w(y^{(i)} x^{(i)})) \qquad\qquad(1) \\\
\Longrightarrow \; & \min_w \quad \frac{1}{m} \sum_{i=1}^{m} \underline{ \log (1+\exp(-y^{(i)} w^T x^{(i)})) } \quad\;\,(2)\\\
\Longrightarrow \; & \min_w \quad \underbrace { \frac{1}{m} \sum_{i=1}^{m} \underline{err(w,y^{(i)},x^{(i)})} }_{E_{in}(w)} \qquad\qquad\quad\, (3) \\\
\end{align} \qquad (ml.1.1.24)
$$公式\((1)\)添加了\(\frac{1}{m}\)是為了寫成Loss Function的長相(對於給定數據來說,其作為一個常數,對求解無妨);公式\((3)\)表達式又稱為交叉熵損失(Cross-Entropy Error)。
值得說明的是:不止LR模型的損失函數是交叉熵損失,幾乎所有的條件概率模型對應的Loss Function都是交叉熵損失。
LR模型與廣義線性模型、最大熵模型、指數族分布
-
LR模型是廣義線性模型的特例
當目標值分布服從伯努利分布時
-
LR模型是最大熵模型的特例
最大熵模型是基於最大熵原理(見《第2章:深入淺出ML之Entropy Methods家族》),優化條件概率\(p(y|x)\)熵,並通過對偶函數極大化或極大似然估計得到的概率模型。當\(y\)滿足二項分布時,得到的概率模型即為\(P(y=1|x)\).
-
LR模型滿足指數族分布
LR模型與指數族分布也存在密切的關系
指數族分布的歸一化形式(Canonical Form):
$$
p(y|\eta) = h(y) \cdot g(\eta) \cdot \exp \{ \eta^T \mu(y) \} \qquad(n.ml.1.1.7)
$$前面說道,LR模型對應的結果只有兩種可能,多次獨立同分布實驗服從二項分布。LR模型是指數族分布中\(y\)服從二項分布的特例。
LR模型在工業界的應用
本節主要是想聊聊LR模型在工業界中的應用。毫不擴張地說,LR模型是工業界應用最多的模型之一,不管是在各種預估問題場景(如推薦、廣告系統中的點擊率預估,轉化率預估等),亦或是分類場景(如用戶畫像中的標簽預測,判斷內容是否具有商業價值,判斷點擊作弊等等),我們發現都會出現LR的身影。
總結發現,LR模型自身的特點具備了應用廣泛性。總結如下:
- 模型易用:LR模型建模思路清晰,容易理解與掌握;
- 概率結果:輸出結果可以用概率解釋(二項分布),天然的可用於結果預估問題上;
- 強解釋性:特征(向量)和標簽之間通過線性累加與Sigmoid函數建立關聯,參數的取值直接反應特征的強弱,具有強解釋性;
- 簡單易用:有大量的機器學習開源工具包含LR模型,如sklearn、spark-mllib等,使用起來比較方便,能快速的搭建起一個learning task pipeline;
但在工業界中典型的大規模學習任務-如廣告的CTR預估問題。除了預估模型自身外,還要考慮模型能否解決學習任務、業務場景中出現的問題。比如:
- 學習的過擬合問題;
- 學習的數據稀疏性問題;
- 模型自身的學習效率(收斂速度,穩定性);
- 訓練模型時數據、特征的擴展性問題,即學習算法可否在分布式環境下工作;
- 如何結合實際應用場景(比如多資源位/多廣告位的點擊預估問題),給出相應的解決方案.
從模型的角度,過擬合和稀疏性問題可以在優化求解中的LR損失函數基礎上加上正則項來解決:
-
loss function + \(\underline{ \lambda |w|_{2}^{2}}\):解決過擬合
-
loss function + \(\underline{ \lambda |w|_{1}}\):解決稀疏性,比如Google13年出的預估方法-FTRL模型,雖然是在線學算法,但主要是為了解決預估時的稀疏性問題。
超大規模稀疏LR模型學習問題,LR模型自身是做不到的。這個時候需要我們為它選擇一個學習算法和分布式系統。在分布式環境下,約束優化求解理想方案之一-ADMM算法(交叉方向乘子法),可用於求解形式為"loss function + 正則項"
目標函數極值問題。
關於ADMM,這里給出簡單的概括:
- ADMM算法在拉格朗日函數中引入懲罰函數項(二階項)用於保證求解時的收斂效率(收斂速度)和結果的健壯性(放松目標函數為強凸的限制)。
- 目標函數可分的,可以將數據集划分多了數據block,各自學習得到局部參數,然后匯總得到全局參數;進一步將全局參數“廣播”(broadcast)至各個計算節點,用於下一輪局部參數學習的初始值。
- ADMM算法框架將目標函數划分為兩部分(為了引入全局參數),局部參數與全局參數的組合作為約束條件;算法自身結構也是為了適應在分布式環境下求解。
注:LR模型用於解決大規模預估問題還是有很多挑戰的。比如上面提到的幾個問題,當然都不是預估模型的問題,而是一個大規模機器學習任務所面臨的問題:
- 特征離散化表示后(尤其是ID類特征),特征會非常稀疏,學習時需要考慮稀疏性問題;
- 訓練數據集相比樣本的高維度特征向量表示來說,顯得“捉襟見肘”時,學習時要考慮過擬合問題;
- 如何在更多的訓練數據集和更高的數據特征維度上,借助
分布式框架+優化求解算法框架
解決超大規模離散LR模型學習問題?上面列出了3個比較重要的問題。2016年Q2時,我會結合之前的研究、學習和工作經驗,整理出一個《廣告點擊率預估》這樣一個專題,重點討論里面的核心問題、解決方案以及相關工具。
回歸問題相關解釋
-
廣義線性回歸
其實,回歸家族的模型可以統稱為廣義上的線性回歸。如果把\(w\)看作是參數,而\(x_i, x_i x_j, x^2_i\)等看作參數的常量(他們可直接從線性觀測數據中計算得到),如此上面介紹的回歸模型都可以看作是參數\(w\)的線性函數。
-
線性回歸與線性關系
線性回歸固然可以表達線性關系,但是也可以表達非線性關系。如<廣義線性回歸>中解釋的那樣,如果先把每個特征變量映射到一個函數(如\(x_i \rightarrow x^2_i\)),然后再進行線性計算。如此,線性回歸可以表達特征與結果之間的非線性關系。
廣義線性回歸既可以表達線性關系,也可以表達非線性關系。
Next
下一步將完善一下模型,並附上相關的指標結果。
- Ridge Regression
- Lasso Regression
- Softmax Regression
- 廣義線性模型