Logistic Regression 邏輯迴歸 簡單易懂的筆記 by hch

Logistic Regression

簡單易懂的筆記 by hch

首先要搞懂幹什麼:

x 特徵值1 特徵值2 特徵值n y
x1 1 0 1 0
x2 0 1 1 1
xm 1 0 1 0

xj表示第j個樣本,共有m個樣本
xji表示第j個樣本的第i維特徵值
yj表示第j個樣本的tag,即結果
我們試圖通過已知tag的數據去訓練模型,從而預測未知tag的數據
(下面數學公式有哪裏不懂了,記得回來看這裏的定義)

形象理解參數與預測

借用二維(假設只有兩個特徵)圖像,我們可以把樣本表示到二維圖上
在這裏插入圖片描述
我們查看此圖會發現,線段很好地分割了樣本點 該線段函數爲

y=ax y=ax
我們換種表達方式

Q=w1x+w2y Q=w_1x+w_2y
點處於線段時,Q=0
點處於線段上方時,Q>0
點處於線段下方時,Q<0
也就如圖中所顯示的那樣,我們通過這條線便可分出點的類別
那麼開始延伸,預測xj樣本,它有n維向量,表達式即爲

Q=w1xj1+w2xj2+w3xj3+...+wnxjn Q= w_1x_{j1}+w_2x_{j2}+w_3x_{j3}+...+w_nx_{jn}
我們的問題也就演變成了如何求參(w1,w2,w3,…,wn)

sigmod函數

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-pr7bR2wr-1581673388008)(C2A7B48D0FF5418DB440A49DEDDC6A78)]
即大於0時其趨近於1,小於0時其趨近於0,我們可以得到表達式

hθ(xj)=sigmoid(w1xj1+w2xj2+w3xj3+...+wnxjn) h_\theta(x_j)=sigmoid(w_1x_{j1}+w_2x_{j2}+w_3x_{j3}+...+w_nx_{jn})
當y=1時,我們希望h(xj)預測也爲1
當y=0時,我們希望h(xj)預測也爲0

合二爲一

觀察下面這個式子

pyjxj=hθ(xj)yj(1hθ(xj))1yj p(y_j|x_{j})= h_\theta(x_j)^{y_j}*(1-h_\theta(x_j))^{1-y_j}
當yj=1時,p(yj|xj)=1
當yj=0時,p(yj|xj)=1
我們只要希望這個函數輸出1就好了

損失函數

(習慣於損失函數越小越好,所以加了負號)

loss=ln(j=1mp(yjxj))=j=1myjlnhθ(xj)(1yj)ln(1hθ(xj)) loss=-ln(\prod_{j=1}^mp(y_j|x_{j}))=\sum_{j=1}^m-y_jlnh_\theta(x_j)-(1-y_j)ln(1-h_\theta(x_j))

梯度下降法

我們想要求上面那個函數的極大值點,第一想法是求導,然後讓導數等於0,且得到的該點代入二階導後小於0,就得到極大值點了,即

f(x0)=0 f^{'}(x_0)=0

f(x0)<0 f^{''}(x_0)<0
即x0爲極大值點。 但這是求一個自變量的函數極值的方法,我們有n個wi是未知的,也就是有n個自變量,這種方法自然是不管用了。那麼是否仍然有特定的算數方法得到極大值呢?想必考過研的同學都知道二元是怎麼求的,十分麻煩的方法,這時計算機提出了它自己的方法,我們依舊先用二維來理解。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-EsYfcOVK-1581673388009)(F4062D003294489DB9BEE2D0BD5DE983)]

y=x2+6x y=-x^2+6x

導數的真正意義—方向

觀察綠點(1,5),其導數爲4
觀察綠點(5,5),其導數爲-4
導數的本質爲“方向”
在(1,5)點x要往左移一些
在(5,5)點x要往右移一些

x1=x0+αδyδx x_1=x_0+\alpha*\frac{\delta y}{\delta x}

計算機在(1,5)點,以α的學習速率向左移動x,一步步移動,最後會收斂到極大值點。拓展:針對我們的loss函數,我們對每一個自變量wi求導,並以α的學習速率更新wi。

δlossδwi=j=1mδlossδhθ(xj)δlossδwδwδwi \frac{\delta loss}{\delta w_i}=\sum_{j=1}^{m}\frac{\delta loss}{\delta h_\theta(x_j)}*\frac{\delta loss}{\delta w}*\frac{\delta w}{\delta w_i}

δlossδhθ(xj)=yihθ(xj)+1yi1hθ(xj) \frac{\delta loss}{\delta h_\theta(x_j)}= -\frac{y_i}{ h_{\theta}(x_j)}+\frac{1-y_i}{1-h_{\theta}(x_j)}

sigmoid(x)=11ex sigmoid(x)=\frac{1}{1-e^{-x}}

(sigmoid(x))=sigmoid(x)(1sigmoid(x)) (sigmoid(x))^{'}=sigmoid(x)*(1-sigmoid(x))

δhθ(xj)δw=(1sigmoid(hθ(xj))sigmoid(hθ(xj)) \frac{\delta h_{\theta}(x_j)}{\delta w}=(1-sigmoid(h_\theta(x_j))sigmoid(h_\theta(x_j))

w=w1xj1+w1xj2+w1xj3+....+w1xjn w=w_1*x_{j1}+w_1*x_{j2}+w_1*x_{j3}+....+w_1*x_{jn}

δwδwi=xji \frac{\delta w}{\delta w_i}=x_{ji}

wi=wi+αδlossδwiw_i=w_i+\alpha*\frac{\delta loss}{\delta w_i}

以上收斂到wi即可,我們即求參完成,預測模型也完成了。

正則化

欠擬合與過擬合

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-0XoKszN1-1581673388011)(64E1EC463929494B9C5446CB3D6FC6BF)]
你覺得哪個圖像能描繪這些點的走向最好?
一圖完全是沒描 這叫“欠擬合” 也就是模型沒訓練好
二圖雖然描的簡單,但形象地表現了數據的大體走向,這叫“適當容量”,訓練的不錯
三圖每個點都描上了,但描“過了”,用馬克思原理來說,把“偶然性”表現在了我們追求的“必然性”之中,這叫“過擬合”

奧卡姆剃刀

對於組織在目標設置與執行過程中因上述種種原因而出現的目標曲解與置換,有一個根本的解決之道,即“無情地剔除所有累贅”,這也正是“奧卡姆剃刀”所倡導的“簡化”法則:保持事物的簡單化是對付複雜與繁瑣的最有效方式。

簡單來說:我們追求簡單且能表現規律的模型,圖二,就決定是你了。

正則化解決過擬合

L1範式:

new_loss=loss+αi=1nwinew\_loss=loss+\alpha*\sum_{i=1}^{n}|w_i|

L2範式:

new_loss=loss+12αi=1nwi2new\_loss=loss+\frac{1}{2}*\alpha*\sum_{i=1}^{n}|w_i|^2

它們的原理:

我們使用梯度下降法是爲了使loss函數尋找到極小值,那麼也就使屬於new_loss變到最小,也就是使一些很小的wi變成0,這樣的意義會使一些對應的不重要的特徵無效化,從而簡化模型,尋找數據的必然性。

兩者的區別:

L1範數是指向量中各個元素絕對值之和

L2範數是指向量各元素的平方和然後求平方根

L1範數可以進行特徵選擇,即讓特徵的係數變爲0.

L2範數可以防止過擬合,提升模型的泛化能力,有助於處理 condition number不好下的矩陣(數據變化很小矩陣求解後結果變化很大)

(核心:L2對大數,對outlier離羣點更敏感!)

下降速度:最小化權值參數L1比L2變化的快

模型空間的限制:L1會產生稀疏 L2不會。

L1會趨向於產生少量的特徵,而其他的特徵都是0,而L2會選擇更多的特徵,這些特徵都會接近於0。

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