機器學習 | 線性迴歸與邏輯迴歸

RichardsZ_ 發表於 2020-09-23

線性迴歸與邏輯迴歸

作者:RichardsZ         公眾號:智慧駕駛軟體寶典


一、線性模型

    線性模型(linear model),試圖通過資料屬性的線性組合來進行預測的函式

     f ( x ) = w 1 x 1 + w 2 x 2 + . . . + w d x d + b f(x)=w_1x_1+w_2x_2+...+w_dx_d+b f(x)=w1x1+w2x2+...+wdxd+b(簡單,基本,可解釋性好)

    向量形式: f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b, 這裡x通常為列向量,每一行代表資料的每一維度,例如天貓資料 [ 瀏 覽 量 訪 客 數 下 單 數 成 交 數 成 交 金 額 ] \begin{bmatrix} 瀏覽量\\ 訪客數 \\下單數 \\成交數 \\成交金額\end{bmatrix} 。而 w T w^T wT則代表列向量的轉置,即行向量,代表每一維度所賦予的權重weight, w T x w^Tx wTx則表現為向量的內積運算。

    線性模型既可以用於“分類”也可以用於“迴歸”,對數學層面而言,迴歸則意味著利用資料進行函式的擬合。對於分類,就是利用超平面來做分割。

二、線性迴歸

在這裡插入圖片描述

  • 有監督學習 => 學習樣本 D = { ( x i , y i ) } i = 1 N D = \{(x_i,y_i)\}^N_{i=1} D={(xi,yi)}i=1N
  • 輸出的結果 y i y_i yi為連續型變數
  • x i = > y i x_i=>y_i xi=>yi的對映關係需要學習
  • x x x y y y之間看作線性關係 f : x − > y f:x->y f:x>y

例如,吳恩達教材中對房價進行預測模型:影響房價的屬性並不是簡單的一個維度,而是多個維度,包括面積,臥室數量,朝向,地段等等。多維資料用向量表示為 x ⃗ = [ 面 積 臥 室 數 量 朝 向 地 段 . . . ] \vec x=\begin{bmatrix} 面積\\ 臥室數量 \\朝向 \\地段 \\...\end{bmatrix} x =...,而對應各個維度的權重為 w T = [ w 1 , w 2 , w 3 , . . . , w d ] w^T=[w_1,w_2,w_3,...,w_d] wT=[w1,w2,w3,...,wd],整體的線性迴歸模型表示為:

f ( x ) = w 1 x 1 + w 2 x 2 + . . . + w d x d + b f(x)=w_1x_1+w_2x_2+...+w_dx_d+b f(x)=w1x1+w2x2+...+wdxd+b,目的就是得出此模型中合理的權重組合,使得此模型能夠對總體的有標籤資料有良好的擬合性,同時具備可預測性。

    那麼問題來了,如何才能夠說明得出的權重組合是最優的呢,評判指標是怎樣的?這裡我們引入損失函式的概念!

1.損失函式是什麼?

    例如在上述擬合 f ( x ) = w 1 x 1 + w 2 x 2 + . . . + w d x d + b f(x)=w_1x_1+w_2x_2+...+w_dx_d+b f(x)=w1x1+w2x2+...+wdxd+b的過程中,得到的權重組合 w T w^T wT並不唯一,我們的目的是找到最合適的權重組合 [ w 1 , w 2 , w 3 , . . . , w d ] [w_1,w_2,w_3,...,w_d] [w1,w2,w3,...,wd]使得擬合的結果儘可能的逼近“訓練樣本”的標準答案y(即資料的標籤)如下圖所示。
(為了體現權重的概念,這裡將f(x)替換為 h θ ( x ) h_\theta (x) hθ(x)
在這裡插入圖片描述
    可以看出,在一個維度的模型中,迴歸模型得出的預估值與資料的真實值存在差異,因此我們需要引入一個“規則”,用來評判得出的權重組合與標準答案之間的差距,這套規則就是“損失函式”。

    這裡定義的損失函式稱作“均方差MSE”:
在這裡插入圖片描述注:即模型的預估值與真實值之間的差值的平方,然後做平均。這裡有人會問,為什麼損失函式還有一個 1 2 \frac {1}{2} 21的係數?看完下文你會明白,這裡先不做解答。

在這裡插入圖片描述

2.梯度下降法

    現在我們有了損失函式的定義,接下來我們就要靠著一種”方法“來尋求權重的最優解,指導優化的方向即該模型的損失函式達到最優,通過上圖可以看出,“MSE均方差損失函式”為標準的凸函式,在一維資料的場景中,其存在梯度最小值,在梯度最小值工況下,損失函式也達到最小值,即預估值與真實值之間的差異最小。那麼問題又來了,該如何尋找到損失函式的梯度最小值的方法呢?

    這裡的方法,可由”梯度下降法“解決!如下圖所示。

    當損失函式體現為凸函式時,尋找梯度最小值的過程可近似理解為小球下坡的過程,試想,在一個凹谷頂端放置一顆小球並鬆開,小球會收到合力的影響,向梯度下降的方向滾動,當小球所處的位置梯度下降逐漸收斂時,也意味著小球抵達了凹坑最低點。
在這裡插入圖片描述

d J ( θ 1 ) d θ 1 \frac {dJ(\theta_1 )}{d\theta_1 } dθ1dJ(θ1):損失函式的梯度梯度意味著函式變化最快的方向,加上負號則意味著函式下降最快的方向,如同小球下坡的過程
α \alpha α:學習率相當於小球每次運動的步長
α \alpha α太小步子邁的太小,導致收斂速度太慢
α \alpha α太大步子邁的太大,導致震盪甚至不收斂

3.過擬合與欠擬合

欠擬合(高偏差)模型沒有很好的捕捉到資料的特徵,擬合出的曲線效果差
過擬合 (高方差)模型過度捕捉資料的特徵,包括噪聲,異常值,抖動嚴重,泛化能力差

PS: 一般來說,工業場景中出現欠擬合的狀態較少。工業中多出現由於資料處理不當,訓練次數過多等因素出現過擬合狀態,而如何避免過擬合,則需要引出“正則化”的概念

4.過擬合與正則化

    試想,當模型出現過擬合後,擬合後的模型囊括了大量不該有的噪聲,異常值,整體的模型方差較大,抖動劇烈,損失函式幾近於0,這是我們不想見到的。
    如果,我們在損失函式中引入了一個“懲罰項”,使得整體的損失函式並不接近於0,這樣處理,即使模型出現過擬合導致損失函式很小,但由於懲罰項的存在,也會令損失函式本身意識到模型尚未擬合完畢,這樣就可以避免過擬合的風險。
在這裡插入圖片描述
    L2正則化懲罰項中, λ \lambda λ作為超引數,需要人為調參。

廣義線性迴歸

    上文介紹的線性迴歸模型為 f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b, 但有些關係並不一定符合此線性關係,那麼該如何處理?

    比如,令 l n y = w T x + b lny=w^Tx+b lny=wTx+b,等式兩邊同時取對數,那麼該模型可修改為 y = e w T x + b y=e^{w^Tx+b} y=ewTx+b,因此模型實際實在用 e w T x + b e^{w^Tx+b} ewTx+b來逼近資料的特徵,這類線性迴歸稱作“對數線性迴歸”。
在這裡插入圖片描述


三、邏輯迴歸


    在分類問題中,通常不需要擬合樣本的分佈,而是要劃分樣本與樣本之間的分界線,如果我們仍然採用“線性迴歸+閾值”的方式,那麼會出現很多問題。

例如:
    我們利用線性迴歸的曲線對閾值對腫瘤好壞進行判斷,當 x = x 0 x=x_0 x=x0時,判定 f ( x ) = 1 f(x)=1 f(x)=1,即為惡性腫瘤。但如果資料存在噪聲,使得模型整體產生了偏移,那麼判定的邊界x也將會出現偏移,影響了判定結果。
在這裡插入圖片描述

在這裡插入圖片描述

Sigmod啟用函式

表示式: g ( z ) = 1 1 + e − z g(z)=\frac {1}{1+e^{-z}} g(z)=1+ez1

Sigmod函式,啟用函式的一種,用於將模型進行進一步處理,可把連續值壓縮成0-1之間的值,可視為概率,概率值反映了預測為正類的可能性:概率越大,可能性越大。

在這裡插入圖片描述
    例如: h θ ( x ) = g ( w T x + b ) h_\theta (x) = g(w^Tx+b) hθ(x)=g(wTx+b), 當 w T x + b > 0 w^Tx+b>0 wTx+b>0時,通過啟用函式g(z)的作用,得到的結果為0.5~1的概率。反過來,當 w T x + b < 0 w^Tx+b<0 wTx+b<0時,得到的結果為0~0.5之間的概率,這樣就可以將線性迴歸擬合的曲線做成了“決策邊界

    問題來了?該如何找到這條迴歸曲線呢,線上性迴歸中,我們利用了損失函式作為擬合好壞的指標,通過梯度下降來尋找權重最優值。在邏輯迴歸中,同樣可以利用此方法:
在這裡插入圖片描述
    上圖中,真實值y由線性迴歸的連續值變為了諸如0,1的分類值,擬合曲線由線性迴歸的 w T x + b w^Tx+b wTx+b變為了經過啟用函式處理的 g ( w T x + b ) g(w^Tx+b) g(wTx+b),然後通過梯度下降法進行優化權重。

    但注意!!!!!!!!原線性迴歸的損失函式是一個凸函式,而邏輯迴歸中,由於Sigmod啟用函式的引入,使得損失函式並不是凸函式,這樣的結果會導致:待優化的權重小球會極易陷入區域性最小值,如上圖所示,它會認為此刻所處的位置就是全域性最小值,變成了井底之蛙。

    因此,我們需要對損失函式進行處理,使之變為標準凸函式後,再進行梯度下降

對數損失/二元交叉熵損失

    對於Sigmod啟用後的損失函式 g ( w T x + b ) g(w^Tx+b) g(wTx+b),我們希望將它轉變為凸函式,敬仰的數學家們尋找到了一種函式可用於處理此類問題,這種新的損失函式形式稱為“二元交叉熵損失函式”也稱“對數損失”

    交叉熵損失函式思路如下:
在這裡插入圖片描述
在二分類問題中,當真實樣本為1時,我們希望損失函式越小越好,

    當真實值樣本為1時, J ( θ ) = − l o g h θ ( x ( i ) ) J(\theta )=-logh_\theta (x^{(i)}) J(θ)=loghθ(x(i)),此時損失函式影像為:
在這裡插入圖片描述
    看了 交叉熵損失函式的圖形,簡單明瞭!橫座標是預測輸出,縱座標是交叉熵損失函式 。顯然,預測輸出越接近真實樣本標籤 1,損失函式 L 越小;預測輸出越接近 0,L 越大。因此,函式的變化趨勢完全符合實際需要的情況。

    反過來,當真實樣本為0時, J ( θ ) = l o g ( 1 − h θ ( x ( i ) ) ) J(\theta )=log(1-h_\theta (x^{(i)})) J(θ)=log(1hθ(x(i))),損失函式影像為:
在這裡插入圖片描述
    同樣,預測輸出越接近真實樣本標籤 0,損失函式 L 越小;預測函式越接近 1,L 越大。函式的變化趨勢也完全符合實際需要的情況。

    從上面兩種圖,可以幫助我們對交叉熵損失函式有更直觀的理解。無論真實樣本標籤 y 是 0 還是 1,L 都表徵了預測輸出與 y 的差距。

    轉化為通用形態
在這裡插入圖片描述

    同樣,為了避免過擬合,引入L2正則化項,最終損失函式可表達為
在這裡插入圖片描述
    損失函式轉化為交叉熵形式的凸函式後,可以利用損失函式對權重進行優化,依舊可以採用梯度下降法

在這裡插入圖片描述

總結

將自己的所學所得分享大家,轉載請註明出處,謝謝!
後續會繼續進行完善!