1. 程式人生 > >線性迴歸與邏輯迴歸、softmax迴歸

線性迴歸與邏輯迴歸、softmax迴歸

1.線性迴歸

預測函式:
hθ(x)=θ0+θ1xh_\theta(x)=\theta_0+\theta_1x

1.1 梯度下降法

損失函式(均方差損失函式):
minJ(θ)=12mi=1m(hθ(xi)yi)2\min J(\theta)=\frac{1}{2m} \sum_{i=1}^{m}(h_\theta(x_i)-y_i)^2

求偏導:
Jθ0=1mi=1m(hθ(xi)yi)\frac{\partial J}{\partial \theta_0}=\frac{1}{m} \sum_{i=1}^{m}(h_\theta(x_i)-y_i)

Jθ1=1mi=1m(hθ(xi)yi)xi\frac{\partial J}{\partial \theta_1}=\frac{1}{m} \sum_{i=1}^{m}(h_\theta(x_i)-y_i)x_i

重複進行直到收斂{
同步更新:
θj:=θjαJθj\theta_j:=\theta_j-\alpha\frac{\partial J}{\partial \theta_j}
}

1.2 正則方程法

適用於特徵數n較小時
X

θ=yX\theta=y
θ=(XTX)1XTy\to \theta=(X^TX)^{-1}X^Ty
注意:XTXX^TX須為列滿秩矩陣,方可求逆,出現不可逆的情況:

  • 冗餘特徵,線性相關
  • 特徵數太多n>>m ,應刪減特徵或使用正則化

2.邏輯迴歸

線性迴歸上加啟用函式(sigmoid函式):
g(z)=11+ezg(z)=\frac{1}{1+e^{-z}}

Q:為什麼要使用sigmoid函式?
從對數線性模型推導而來的,發生的概率,比上不發生的概率,取log,等於y,反推出來就sigmoid函式。
y=ln

(p1p)y=ln(\frac{p}{1-p})
p=sigmoid(y)=ey1+ey=11+ey\to p=sigmoid(y)=\frac{e^y}{1+e^y}=\frac{1}{1+e^{-y}}
預測函式:
hθ(x)=g(θTX)=11+eθTXh_\theta(x)=g(\theta^TX)=\frac{1}{1+e^{-\theta^TX}}
hθ(x)h_\theta(x)表示結果取1的概率:

  • P(y=1x;θ)=hθ(x)P(y=1|x;\theta)=h_\theta(x) 結果取1的概率越大越好
  • P(y=0x;θ)=1hθ(x)P(y=0|x;\theta)=1-h_\theta(x) 結果取0的概率越大越好
  • 總之就是希望結果越肯定越好
  • 邏輯迴歸的本質–極大似然估計:maxi=1mlogP(yix;θ)\max \sum_{i=1}^{m}logP(y_i|x;\theta)

Q:邏輯迴歸損失函式為什麼使用最大似然而不用最小二乘?
用最小二乘的話損失函式是非凸函式,很容易陷入區域性最優解。
在這裡插入圖片描述
損失函式(交叉熵損失函式):
minJ(θ)=1mi=1m[yiloghθ(xi)+(1yi)log(1hθ(xi))]\min J(\theta)=-\frac{1}{m}\sum_{i=1}^m[y_ilogh_\theta(x_i)+(1-y_i)log(1-h_\theta(x_i))]

  • yi=1y_i=1時中括號前半部分奏效,logP(yix;θ)=logP(yi=1x;θ)=loghθ(xi)logP(y_i|x;\theta)=logP(y_i=1|x;\theta)=logh_\theta(x_i)
  • yi=0y_i=0時中括號後半部分奏效。logP(yix;θ)=logP(yi=0x;θ)=log(1hθ(xi))logP(y_i|x;\theta)=logP(y_i=0|x;\theta)=log(1-h_\theta(x_i))

求偏導:
Jθj=1mi=1m(hθ(xi)yi)xij\frac{\partial J}{\partial \theta_j}=\frac{1}{m} \sum_{i=1}^{m}(h_\theta(x_i)-y_i)x_i^j
注意到上式同線性迴歸求偏導的公式完全一樣!!!
推導過程參考:https://www.cnblogs.com/zhongmiaozhimen/p/6155093.html
利用到sigmoid函式的性質:
g(z)=g(z)(1g(z))g'(z)=g(z)(1-g(z))

3.softmax迴歸

softmax迴歸是邏輯迴歸的多分類情況。
啟用函式(softmax函式):
g(z)=ezj=1kejg(z)=\frac{e^{z}}{\sum_{j=1}^{k} e^j}