1. 程式人生 > >LR模型(邏輯迴歸模型)

LR模型(邏輯迴歸模型)

1.邏輯迴歸模型

按照音譯logistic regression應該是邏輯斯蒂迴歸,太難聽了,就簡稱邏輯迴歸吧。

1.1 二項邏輯迴歸模型

二項邏輯迴歸模型是一種二分類模型,儘管它叫“迴歸”。
模型如下:

P(Y=1|x)=e(wx+b)1+e(wx+b)....(1)
P(Y=0|x)=11+e(wx+b)....(2)
其中引數 wRn,bR
對於給定的輸入例項x,按照上式,求得P(Y=1|x)P(Y=0|x),哪個大,那麼例項x就是哪個類別。

1.2模型的引數估計

極大似然估計:已知某個引數能使這個樣本出現概率最大,我們當然不再選擇其他小概率樣本,就把這個引數作為估計的真實值。

似然函式: 也就樣本出現的概率。

對於邏輯迴歸模型,可以應用極大似然估計法估計模型引數。
給定訓練資料T={(x1,y1),(x2,y2),...(xN,yN)}xiRn,yi{0,1}
對於邏輯迴歸,其似然函式為:

i=1N[π(xi)]yi[1π(xi)]1yi.....(3)
其中π(xi)=(1)
將似然函式改寫為對數似然函式,L(w)=log((3))
之後採用低度下降演算法或者擬牛頓法,求得L(w)的最大值,就可以得到w值。

1.3自己的體會

其實邏輯迴歸可以看做是單層神經網路,輸入層是N個神經元,輸出就是兩個神經元,使用的啟用函式是sigmod

(),損失函式是L(w),對損失函式最小化,求得w值。

1.4實現

以前用TensorFlow寫過邏輯迴歸,這裡就不寫了,使用sklearn工具實現以下。


#coding:utf-8

import numpy as np
from sklearn.linear_model import LogisticRegression

X = np.array([[0.1,0.2],[0.2,0.3],[1.5,1.8],[2.1,2.6]])
Y = np.array([0,0,1,1])

lr = LogisticRegression()  # 這裡有許多引數需要設定
lr.fit(X,Y)
pred = lr.predict([[1.6
,2.0]]) print(pred) >>> [1] # setting an array element with a sequence.意思是資料的行數列數不匹配