它的幾何形狀: 
由圖我們可以看出,在處理二分類問題(0,1)時(shí),x=0,f(x) = 0.5,但函數(shù)自變量趨近于正無窮時(shí),函數(shù)逼近于1。反之,當(dāng)函數(shù)自變量趨近于負(fù)無窮時(shí),函數(shù)逼近于0。所以對(duì)于任意一個(gè)輸入值,我們總能得出一個(gè)在(0,1)之間的輸出結(jié)果,但輸出結(jié)果大于0.5時(shí),我們認(rèn)為輸出結(jié)果為1,反之為0。因此Logistic回歸也可以被看成是一種概率估計(jì)。
函數(shù)確定之后我們在看一下它的輸入情況,我們可以將對(duì)條件輸入記作:
如果采用向量的寫法可以記作:
其中向量x是輸入數(shù)據(jù),w為輸入數(shù)據(jù)的系數(shù)。
所以其實(shí)Logistic的訓(xùn)練過程,其實(shí)也就是求最優(yōu)回歸系數(shù)的過程。
這里我們就需要一個(gè)優(yōu)化算法了,也變引出了——梯度下降(上升)算法
梯度下降(上升)法是一個(gè)最優(yōu)化算法,通常也稱為最速下降(上升)法。最速下降(上升)法是求解無約束優(yōu)化問題最簡單和最古老的方法之一,雖然現(xiàn)在已經(jīng)不具有實(shí)用性,但是許多有效算法都是以它為基礎(chǔ)進(jìn)行改進(jìn)和修正而得到的。最速下降(上升)法是用負(fù)(正)梯度方向?yàn)樗阉鞣较虻模钏傧陆?上升)法越接近目標(biāo)值,步長越小,前進(jìn)越慢。
下面便是梯度下降(上升)算法的經(jīng)典圖示了:

梯度下降(上升)算法的計(jì)算公式:

Logistic函數(shù)代碼:
def sigmoid(inX): return 1.0/(1+exp(-inX))梯度上升算法代碼:(因?yàn)槲覀兒竺嫘枰诸惖膯栴}是沿著梯度上升方向?qū)ふ业?,所以這里使用梯度上升算法)def gradAscent(dataMatIn, classLabels): dataMatrix = mat(dataMatIn) labelMat = mat(classLabels).transpose() m,n = shape(dataMatrix) alpha = 0.001 maxCycles = 500 weights = ones((n,1)) for k in range(maxCycles): h = sigmoid(dataMatrix*weights) error = (labelMat - h) weights = weights + alpha * dataMatrix.transpose()* error #梯度上升算法部分 return weights下面我們需要一些測試數(shù)據(jù):圖中紅色方塊代表一種類型的數(shù)據(jù),綠色圓圈代表另一種類型的數(shù)據(jù)。
我們嘗試使用Logistic回歸算法,將這兩組數(shù)據(jù)在這個(gè)二維面上劃分出來(對(duì)于人來說這個(gè)工作相當(dāng)簡單。。。)
嗯,看來Logistic回歸算法表現(xiàn)的還不錯(cuò),至少有五歲小朋友的一筆畫智商了^_^...
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注