国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

機(jī)器學(xué)習(xí)筆記之Logistic回歸算法

2019-11-10 20:00:27
字體:
供稿:網(wǎng)友
Logistic回歸算法:優(yōu)點(diǎn):計(jì)算代價(jià)不高,易于理解和實(shí)現(xiàn)。缺點(diǎn):容易欠擬合,分類精度可能不高。適用數(shù)據(jù)類型:數(shù)值型和標(biāo)稱型。算法原理:logistic回歸是一種廣義線性回歸(generalized linear model),因此與多重線性回歸分析有很多相同之處。它們的模型形式基本上相同,都具有 w'x+b,其中w和b是待求參數(shù),其區(qū)別在于他們的因變量不同,多重線性回歸直接將w'x+b作為因變量,即y =w'x+b,而logistic回歸則通過函數(shù)L將w'x+b對(duì)應(yīng)一個(gè)隱狀態(tài)p,p =L(w'x+b),然后根據(jù)p 與1-p的大小決定因變量的值。如果L是logistic函數(shù),就是logistic回歸,如果L是多項(xiàng)式函數(shù)就是多項(xiàng)式回歸。ps:因?yàn)長ogistic的幾何形狀很像一個(gè)“S”型,所以又叫 sigmoid曲線(S型曲線)算法流程:收集數(shù)據(jù):采用任意方法收集數(shù)據(jù)。準(zhǔn)備數(shù)據(jù):由于需要進(jìn)行距離計(jì)算,因此要求數(shù)據(jù)類型為數(shù)值型。分析數(shù)據(jù):采用任意方法對(duì)數(shù)據(jù)進(jìn)行分析。訓(xùn)練算法:大部分時(shí)間將用于訓(xùn)練,訓(xùn)練的目的是為了找到最佳的分類回歸系數(shù)。測試算法:一旦訓(xùn)練完成,分類也計(jì)算的很快。使用算法:對(duì)實(shí)際數(shù)據(jù)進(jìn)行預(yù)測。Logistic函數(shù):    它的幾何形狀:

             

    由圖我們可以看出,在處理二分類問題(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ò),至少有五歲小朋友的一筆畫智商了^_^...


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 都昌县| 绥中县| 仙游县| 雷波县| 农安县| 二连浩特市| 津南区| 临漳县| 铜山县| 会泽县| 福州市| 民丰县| 大丰市| 汝城县| 长春市| 英超| 和田县| 桃园县| 太仓市| 论坛| 施秉县| 故城县| 清河县| 甘洛县| 纳雍县| 剑阁县| 遵义市| 洛宁县| 霸州市| 金湖县| 孟村| 邵阳市| 华坪县| 土默特左旗| 青岛市| 内江市| 台前县| 麻城市| 罗田县| 吉安市| 胶州市|