日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

一文“妙”解逻辑斯蒂回归(LR)算法

發(fā)布時(shí)間:2024/1/17 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一文“妙”解逻辑斯蒂回归(LR)算法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、前言

在感知器算法中,如下圖

如果我們使用一個(gè)f(z)=z函數(shù),作為激勵(lì)函數(shù),那么該模型即為線性回歸。而在邏輯斯蒂回歸中,我們將會(huì)采用f(z)=sigmoid(z)?函數(shù)作為激勵(lì)函數(shù),所以它被稱(chēng)為sigmoid回歸也叫邏輯斯蒂回歸(logistic regression)。需要注意的是,雖然邏輯斯蒂回歸的名字中帶有回歸,但事實(shí)上它并不是一種回歸算法,而是一種分類(lèi)算法。作為經(jīng)典的二分類(lèi)算法,邏輯斯蒂回歸的應(yīng)用極為廣泛。

本文第2節(jié)介紹了邏輯斯蒂回歸模型的原理,第3節(jié)闡述了模型的代價(jià)函數(shù),第4節(jié)講解了模型的權(quán)重更新,第5節(jié)介紹了模型的決策邊界,第6節(jié)演示了R編程實(shí)戰(zhàn),第7節(jié)作出總結(jié)。


二、邏輯斯蒂回歸的原理

邏輯斯蒂回歸是針對(duì)線性可分問(wèn)題的一種易于實(shí)現(xiàn)而且性能優(yōu)異的分類(lèi)模型。對(duì)于二分類(lèi)問(wèn)題,假設(shè)某件事發(fā)生的概率為p,那么這件事不發(fā)生的概率為(1-p),需要通過(guò)一個(gè)函數(shù)將線性回歸模型??的輸出值映射到[0,1]范圍內(nèi),這個(gè)函數(shù)就是邏輯斯蒂函數(shù)(logistic function), 也稱(chēng)為sigmoid函數(shù)。

其中:z=??,為樣本特征與權(quán)重的線性組合函數(shù)圖像如下:

為什么變量與因變量要選用logistic關(guān)系呢,因?yàn)檫@里(1)我們需要Y代表的是概率即Y∈(0,1); (2)我們需要樣本特征與權(quán)重的線性組合在0附近變化幅度比較大,并且是非線性的變化。而在很大或很小的時(shí)候,幾乎不變化,這是基于概率的一種認(rèn)識(shí)與需要。感性的一個(gè)例子,想想你學(xué)習(xí)努力的程度與從60分提高到80分和80提高到100分并不是線性的;(3)這個(gè)關(guān)系的公式要在之后形成的cost function是凸函數(shù)。所以就選擇了sigmoid函數(shù)。可參考邏輯斯蒂(logistic)回歸深入理解、闡述與實(shí)現(xiàn) - happy_lion - 博客園。

于是對(duì)于某個(gè)樣本x,它的預(yù)測(cè)概率為

y表示為:當(dāng)輸入為x時(shí),它被分為1類(lèi)的概率為p,也屬于1類(lèi)別的條件概率, 即p(y=1|x)。

如在預(yù)測(cè)天氣的時(shí)候,我們需要預(yù)測(cè)出明天屬于晴天和雨天的概率,已知根天氣相關(guān)的特征和權(quán)重,定義y=1為晴天,y=0為雨天,根據(jù)天氣的相關(guān)特征和權(quán)重可以獲得z,然后再通過(guò)sigmoid函數(shù)可以獲取到明天屬于晴天的概率?(z)=P(y=1|x),一般我們?nèi)∶魈鞂儆谇缣斓母怕书撝禐?0%,那么當(dāng)?(z)>=0.5時(shí),就屬于晴天,小于0.5時(shí)就屬于雨天。邏輯斯蒂回歸除了應(yīng)用于天氣預(yù)測(cè)之外,還可以應(yīng)用于某些疾病預(yù)測(cè),所以邏輯斯蒂回歸在醫(yī)療領(lǐng)域也有廣泛的應(yīng)用。


三、邏輯斯蒂回歸的代價(jià)函數(shù)

對(duì)于線性回歸問(wèn)題,定義的代價(jià)函數(shù)為所有數(shù)據(jù)誤差的平方和。但是對(duì)于邏輯回歸來(lái)說(shuō),這樣定義所得的代價(jià)函數(shù)為非凸函數(shù),容易陷入局部最優(yōu)。比如下圖

左邊為凸函數(shù),局部最優(yōu)即全局最優(yōu);右邊為非凸函數(shù),容易陷入局部最優(yōu)。于是,邏輯斯蒂回歸的代價(jià)函數(shù)轉(zhuǎn)變?yōu)?#xff1a;

上面的式子其實(shí)由最大似然函數(shù)推導(dǎo)過(guò)來(lái),想深入了解的話可移步用最大似然估計(jì)求邏輯回歸參數(shù) - CSDN博客, 圖像如下:

如上圖所示,縱坐標(biāo)為損失值,藍(lán)線為??的圖像,紅線為??的圖像

(1)屬于類(lèi)別1的藍(lán)線:若樣本正確被劃分為類(lèi)別1中,代價(jià)將趨向于0;被誤分到類(lèi)別0中,代價(jià)將無(wú)窮大。

(2)屬于類(lèi)別0的紅線:若樣本正確被劃分為類(lèi)別0中,代價(jià)將趨向于0;被誤分到類(lèi)別1中,代價(jià)將無(wú)窮大。

所以,相對(duì)于之前的線性回歸而言,logistic回歸錯(cuò)誤預(yù)測(cè)所帶來(lái)的代價(jià)要大的多。因?yàn)閥的標(biāo)簽為1和0,所以上面兩個(gè)約束條件可以變成一個(gè)約束方程,從而方便我們的計(jì)算


四、logistic回歸權(quán)重更新三步走

構(gòu)建了損失函數(shù)(為凸函數(shù))后,我們的優(yōu)化目標(biāo)為:使損失函數(shù) J(w) 達(dá)到最小,從而求出最優(yōu)的w (注意常數(shù)b的權(quán)重作為1,放入w向量里),最終得到分類(lèi)平面的表達(dá)式。因此,梯度下降法就派上用場(chǎng)了。

下面我將logistc回歸權(quán)重的更新分為簡(jiǎn)單的三步走

首先計(jì)算sigmoid(z) 函數(shù)的偏導(dǎo):

然后計(jì)算對(duì)數(shù)似然函數(shù)對(duì)第j個(gè)權(quán)重的偏導(dǎo):

求得偏導(dǎo)后,最終通過(guò)梯度下降公式我們就可以不斷更新w

公式參考邏輯斯諦回歸(logistic regression)


五、邏輯斯蒂回歸模型的決策邊界

在邏輯斯蒂模型中,預(yù)測(cè)變量越復(fù)雜,即當(dāng)模型中包含自變量的2次項(xiàng)、交叉項(xiàng)甚至更高次項(xiàng)時(shí),模型的決策邊界就越復(fù)雜,就越能擬合非線性決策面。所以在LR模型中,自變量x及其多項(xiàng)式的選擇非常重要。而在神經(jīng)網(wǎng)絡(luò)中,一般預(yù)測(cè)變量只需要輸入變量x,通過(guò)設(shè)置多個(gè)隱藏層來(lái)自動(dòng)進(jìn)行特征選擇就能達(dá)到不錯(cuò)的效果。因此,相比于神經(jīng)網(wǎng)絡(luò)的智能和自動(dòng)化,LR模型更具有藝術(shù)性和經(jīng)驗(yàn)性。通過(guò)圖形我們來(lái)直觀地了解下:

(1)欠擬合

當(dāng)邏輯斯蒂回歸模型只包含兩個(gè)預(yù)測(cè)變量,而不包含其高次項(xiàng)或者交叉項(xiàng)時(shí),模型的決策面是一條直線,顯得有點(diǎn)欠擬合(偏差大)

(2)合適擬合:

當(dāng)模型包含兩個(gè)預(yù)測(cè)變量,并且同時(shí)包含其二次項(xiàng)和交叉項(xiàng)時(shí),模型的決策面是一條曲線。雖然有兩個(gè)樣本被分類(lèi)錯(cuò)誤,但看起來(lái)剛好擬合

(3)過(guò)擬合:

當(dāng)模型包含兩個(gè)預(yù)測(cè)變量,并且同時(shí)包含二次項(xiàng)甚至更高項(xiàng)以及交叉項(xiàng)時(shí),模型的決策面是一條非常復(fù)雜的曲線。雖然樣本全部被分類(lèi)正確,但顯示出過(guò)擬合的問(wèn)題(方差大)


六、LR回歸的R語(yǔ)言實(shí)現(xiàn)

1)加載包

rm(list=ls()) #清理內(nèi)存空間 setwd("E:/R語(yǔ)言模型代碼清單1111/離不開(kāi)的R代碼") #設(shè)置工作空間 library(ggplot2) library(pROC)

2)數(shù)據(jù)預(yù)處理

data(iris) #使用R自帶的iris鳶尾花數(shù)據(jù)集 table(iris$Species) #查看分類(lèi)變量的類(lèi)別個(gè)數(shù)

可以看到總共150個(gè)數(shù)據(jù),3種花分別為50個(gè)

iris1=iris[(which(iris$Species!="versicolor")), ] #提取除去versicolor的另外兩個(gè)類(lèi)別,做2分類(lèi) table(iris1$Species)

雖然沒(méi)有選擇versicolor花,但它仍然存在因子中,所以接下想辦法剔除這個(gè)因子水平

iris1$Species=as.factor(as.character(iris1$Species)) table(iris1$Species)

這樣因子就只剩下兩個(gè)了

sub<-sample(1:nrow(iris1),round(nrow(iris1)*2/3)) #選取下標(biāo),選2/3的數(shù)據(jù)作為訓(xùn)練集 iris.learn<-iris1[sub,] #取2/3的數(shù)據(jù)作為訓(xùn)練集 iris.valid<-iris1[-sub,] #取1/3的數(shù)據(jù)作為測(cè)試集 table(iris.valid$Species)

測(cè)試數(shù)據(jù)總共還剩33個(gè)

3)調(diào)用glm函數(shù)訓(xùn)練邏輯斯蒂二元模型

logit.fit <- glm(Species~Petal.Width+Petal.Length,family = binomial(link = 'logit'),data = iris.learn) #logistic回歸使用的是二項(xiàng)分布族binomial。Binomial族默認(rèn)連接函數(shù)為logit,可設(shè)置為probit summary(logit.fit)

結(jié)果展示了call(調(diào)用),Residuals(殘差), Coifficients(系數(shù)),結(jié)果類(lèi)似于線性回歸

4)性能評(píng)估

prdict_res <- predict(logit.fit, type="response", newdata=iris.valid[,-5]) #測(cè)試數(shù)據(jù)產(chǎn)生概率 relationship=data.frame(predict=prdict_res, real=iris.valid$Species) head(relationship) #查看數(shù)據(jù)產(chǎn)生概率和實(shí)際分類(lèi)的關(guān)系

可以看到setosa的預(yù)測(cè)概率趨向于0,也說(shuō)明概率大于0.5的花就預(yù)測(cè)為virginica

soft_hard=data.frame(predict=ifelse(prdict_res>0.5,"virginica", "setosa"), real=iris.valid$Species); head(soft_hard)

前6個(gè)數(shù)據(jù)全部預(yù)測(cè)正確了,感覺(jué)模型還行

table(data.frame(predict=ifelse(prdict_res>0.5, "virginica", "setosa"), real=iris.valid$Species)) #混淆矩陣

LR模型成功地?cái)M合了鳶尾花數(shù)據(jù)集,不過(guò)說(shuō)實(shí)在的,這個(gè)數(shù)據(jù)集非常容易劃分,所以準(zhǔn)確率達(dá)到了100%

接下來(lái)畫(huà)ROC曲線

pred=ifelse(prdict_res>0.5, "virginica", "setosa") pred2=as.numeric(as.factor(pred))-1 #預(yù)測(cè)值必須轉(zhuǎn)化為數(shù)字 modelroc <- roc(iris.valid$Species,pred2) #前面為真實(shí)值,后面為預(yù)測(cè)值 plot(modelroc, print.auc=TRUE, auc.polygon=TRUE, grid=c(0.1, 0.2),grid.col=c("green", "red"), max.auc.polygon=F,legacy.axes=TRUE, auc.polygon.col="skyblue", print.thres=F,col="red") #作圖

AUC已經(jīng)達(dá)到了1,可怕不,社會(huì)社會(huì)。

?

5)可視化

為了更好地展示決策邊界,在這里以花萼長(zhǎng)度和花萼寬度為自變量,iris1為數(shù)據(jù)集,重新訓(xùn)練一個(gè)模型

new_fit <- glm(Species~Sepal.Length+Sepal.Width,family = binomial(link = 'logit'),data = iris1) w <- new_fit$coef #模型系數(shù) inter <- -w[1]/w[3] #分類(lèi)線的截距 slope <- -w[2]/w[3] #分類(lèi)線的斜率

最后用ggplot函數(shù)作圖

ggplot(data=iris1,aes(x=Sepal.Length,y=Sepal.Width,col=Species,shape=Species))+geom_point(size=3)+geom_abline(intercept = inter,slope = slope,size=1.2,colour="red")+scale_color_brewer(palette = 'Accent')+scale_shape_manual(values = c(17,16))+theme_bw()+theme(panel.border = element_blank(),panel.grid.major = element_blank(),panel.grid.minor = element_blank(),axis.line = element_line(colour = "black"))

上圖展示了模型對(duì)于setosa和virginica這兩種花共100個(gè)數(shù)據(jù)樣本的劃分情況,橫坐標(biāo)為花萼長(zhǎng)度,縱坐標(biāo)為花萼寬度。圖中并沒(méi)有出現(xiàn)被劃分錯(cuò)誤的樣本,可知準(zhǔn)確率達(dá)到了100%。但是,分類(lèi)線的位置暗示著模型過(guò)擬合的極大可能性。


七、總結(jié)

LR回歸與多重線性回歸實(shí)際上有很多相同和相異之處,最大的區(qū)別就在于他們的因變量不同,其他的基本都差不多,正是因?yàn)槿绱?#xff0c;這兩種回歸可以歸于同一個(gè)家族,即廣義線性模型。這一家族中的模型形式基本上都差不多,不同的就是因變量不同,如果是連續(xù)的,就是多重線性回歸,如果是二項(xiàng)分布,就是logistic回歸,如果是poisson分布,就是poisson回歸,如果是負(fù)二項(xiàng)分布,就是負(fù)二項(xiàng)回歸,等等。只要注意區(qū)分它們的因變量就可以了。logistic回歸的因變量可以是二分類(lèi)的,也可以是多分類(lèi)的,但是二分類(lèi)的更為常用,也更加容易解釋。所以實(shí)際中最為常用的就是二分類(lèi)的logistic回歸。可參考徹底搞懂邏輯斯蒂回歸 - CSDN博客。

總結(jié)

以上是生活随笔為你收集整理的一文“妙”解逻辑斯蒂回归(LR)算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。