機器學習(6):線性迴歸

這節主要介紹線性迴歸的相關知識,包括目標函數、最小二乘、L1、L2正則、梯度下降、AUC、logistic迴歸、softmax迴歸等。

迴歸主要是用來做擬合的,比如已知一部分房子的面積、幾居室及售價信息,來估計當前要售賣的房屋的大概價格等。
**

  • 線性迴歸的決策函數和損失函數

**
所謂線性迴歸,是指各屬性的參數是線性的,目標本身可能是一階,也可能是高階的。
例:已知房屋的售價和建築面積x1 、房間個數x2 有關,則可表示爲:hθ(x)=θ0+θ1x1+θ2x2
上述是針對只有兩個參數的情況,但參數有多個時:

hθ(x)=i=0nθixi=θTX

這裏hθ(x) 即爲我們的決策函數。我們的目的是求出決策函數的各個參數θ
下面是爲求出各參數θ 的理論和實際做法。
相對於估計值,真實值爲:y(i)=θTx(i)+ε(i)
其中誤差ε(i) 是獨立同分布的,並且服從均值爲0、方差爲σ2 的高斯分佈,即:
P(ε(i))=12πσexp((ε(i))22σ2)

根據真實值和估計值之間的關係:
P(y(i)|x(i);θ)=12πσexp((y(i)θTx(i))22σ2)

則誤差的似然函數
L(θ)=i=1nP(y(i)|x(i);θ)=i=1n12πσexp((y(i)θTx(i))22σ2)

爲求最大似然,對上述求導:
l(θ)=i=1nlog12πσexp((y(i)θTx(i))22σ2)=mlog12πσ1σ212i=1n(y(i)θTx(i))2

J(θ)=12i=1n(y(i)θTx(i))2=12i=1n(hθ(x(i))y(i))2

由於l(θ) 中第一項爲常數項,爲使l(θ) 最大,則等價於對J(θ) 求最小,這裏J(θ) 定義爲損失函數,是真實值和估計值差的平方和,爲使決策函數的最大似然,需要讓損失函數最小,怎樣求出J(θ) 的最小值呢?我們進一步推導。

**

  • 最小二乘

**
決策函數最大似然的最大值等價於求損失函數J(θ) 的最小值。

J(θ)=12i=1n(hθ(x(i))y(i))2=12(xθy)T(xθy)=12(θTxTyT)(xθy)=12(θTxTxθθTxTyyTxθ+yTy)

根據機器學習(3)中如何對矩陣求偏導數,我們對J(θ) 求偏導數:
J(θ)θ=12(2xTxθ2xTy)=xTxθxTy

最小值處:J(θ)θ=0 ,即xTxθxTy =0。
xT(xθy)=0
xTx 可逆,則θ=(xTx)1xTy (最小二乘)。
爲防止xTx 不可逆(也爲了防止過擬合)的情況,加入擾動項λ (通常稱爲嶺迴歸,這裏λ 通常是一個極小的數值):
θ=(xTx+λI)1xTy

**

  • L1、L2正則(擾動項)

**
在線性迴歸中,爲了預防過擬合,需要對損失函數加入擾動項,常用的擾動項有兩種:L1正則(lasso迴歸)和L2正則(嶺迴歸)。
L1正則的損失函數:

J(θ)=12i=1n(hθ(x(i))y(i))2+λi=1n|θj|

L2正則的損失函數:
J(θ)=12i=1n(hθ(x(i))y(i))2+λi=1nθ2j

注:這裏的嶺迴歸雖然和最小二乘裏的一樣,但最小二乘中是用於一次性計算出所有的參數,而這裏是用於迭代過程中使用的。

另外,L1相比於L2,參數更稀疏(θ 爲0或接近0的比較多)。

**

  • 梯度下降

**
上面的最小二乘是從純數學理論的角度推導的,實際應用中,X的屬性可能很多,導致xTx 很大,計算其逆變得不切實際。實際應用中,梯度下降比較受歡迎。在機器學習(1)中已經提到過偏導數的作用,偏導數是梯度下降可行的理論支持。
梯度下降法是按下面的流程進行的:
1)首先對θ 賦值,這個值可以是隨機的,也可以讓θ 是一個全零的向量。
2)更新θ 的值,使得J(θ )按梯度下降的方向進行減少,即更新後的θ 使得J(θ )更小。
對上述的損失函數,在θj 處的梯度方向爲:

J(θ)θj=θj12(hθ(x)y)2=(hθ(x)y)xj

下面是更新的過程,也就是θj 會向着梯度最小的方向進行減少。θj 表示更新之前的值,-後面的部分表示按梯度方向減少的量,α 表示步長,也就是每次按照梯度減少的方向變化多少。
θj=θjαJ(θ)θj=θjα(hθ(x)y)xj ,其中α 是步長。
下面的圖可以更直觀清晰:
這裏寫圖片描述
這是一個表示參數θ 與損失函數J(θ )的關係圖,紅色的部分是表示J(θ )有着比較高的取值,我們需要的是,能夠讓J(θ )的值儘量的低。也就是深藍色的部分。θ0θ1 表示θ 向量的兩個維度。
在上面提到梯度下降法的第一步是給θ 給一個初值,假設隨機給的初值是在圖上的十字點。
然後我們將θ 按照梯度下降的方向進行調整,就會使得J(θ )往更低的方向進行變化,如圖所示,算法的結束將是在θ 下降到無法繼續下降爲止。
這裏寫圖片描述

**

  • 局部加權迴歸

**
我們現實生活中的很多數據不一定都能用線性模型描述。依然是上述的房價問題,很明顯直線非但不能很好的擬合所有數據點,而且有時候誤差非常大,但是一條類似二次函數的曲線卻能擬合地很好。爲了解決非線性模型建立線性模型的問題,我們預測一個點的值時,選擇與這個點相近的點而不是所有的點做線性迴歸。基於這個思想,便產生了局部加權線性迴歸算法。在這個算法中,其他離一個點越近,權重越大,對迴歸係數的貢獻就越多。
局部加權依然使用損失函數,只不過使用的是加權的損失函數:

J(θ)=12i=1nω(i)(hθ(x(i))y(i))2

這裏ω(i) 即爲權重,比較常用的一個權重函數爲:
ω(i)=exp((x(i)x)22τ2)

**
  • logistic迴歸

**
首先給出logistic/sigmoid函數的定義形式:

g(x)=11+ex

爲後面使用方便,對上述g(x)求導,可以推導出其導數爲:
g(x)=g(x)(1g(x))

logistic的決策函數滿足上述形式,即:
hθ(x)=11+eθTx

假定:p(y=1|x;θ)=hθ(x);p(y=0|x;θ)=1hθ(x)
我們可以用一個式子描述上述兩個的概率:
p(y|x;θ)=(hθ(x))y(1hθ(x))1y

爲求出決策函數中的參數θ ,依然通過最大似然的方式。logistic迴歸的最大似然爲:
L(θ)=i=1np(y(i)|x(i);θ)=i=1n(hθ(x(i)))y(i)(1hθ(x(i)))1y(i)

對最大似然求對數:
l(θ)=log(L(θ))=i=1n(y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i))))

l(θ)θj 處求導數,則:
l(θ)θj=i=1n(y(i)hθ(x(i))hθ(x(i))θj+1y(i)1hθ(x(i))(1hθ(x(i)))θj)=i=1n(y(i)hθ(x(i))1y(i)1hθ(x(i)))hθ(x(i))θj

根據g(x)=g(x)(1g(x)) ,上述求導進一步得到:
l(θ)θj=i=1n(y(i)hθ(x(i))1y(i)1hθ(x(i)))hθ(x(i))(1hθ(x(i)))θTxθj=i=1n(y(i)hθ(x(i)))x(i)j

這個結果很熟悉有木有?在線性迴歸中通過損失函數最小得到的結果和上述一致,所以logistic的參數也可以通過類似的梯度下降法得到(雖然二者都是通過梯度下降法得到參數,但還是有一定區別,下面有詳細說明)。
關於logistic的損失函數:
常用的損失函數有差平方損失函數(比如線性迴歸中使用的)、差絕對值損失函數、對數損失函數或對數似然損失函數等。logistic中使用的是對數似然損失函數,即logistic的損失函數爲
l(θ)=i=1n(y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i))))

logistic的損失函數,也即交叉熵損失函數(交叉熵在下一節中有詳細介紹)。

補充:線性迴歸和邏輯迴歸都是採用梯度下降進行參數計算的,但原理並不相同。線性迴歸是通過高斯分佈用最大似然推導計算出來的;邏輯迴歸是直接根據目標函數用最大似然推導計算出來的。最優化理論可以證明通過梯度下降可以求出線性迴歸和邏輯迴歸的參數,但梯度下降只是一種求出參數的簡單有效的方式。除了梯度下降還有牛頓法,牛頓法和梯度下降法的區別在於牛頓法是二階求導,計算比較複雜並且可能二階導不存在或沒法求出,梯度下降法是一階求導,計算複雜度低,更簡單有效。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章