R語言機(jī)器學(xué)習(xí)與臨床預(yù)測(cè)模型56--Logistic回歸(邏輯回歸)

本內(nèi)容為【科研私家菜】R語言機(jī)器學(xué)習(xí)與臨床預(yù)測(cè)模型系列課程

你想要的R語言學(xué)習(xí)資料都在這里种远, 快來收藏關(guān)注【科研私家菜】


01 Logistic回歸

邏輯斯蒂回歸就是以對(duì)數(shù)發(fā)生比為響應(yīng)變量進(jìn)行線性擬合卵迂,即log(P(Y)/1 - P(Y)) =B0+B1x认臊。 這里的系數(shù)是通過極大似然估計(jì)得到的愧膀,而不是通過OLS馆类。極大似然的直觀意義就是歼培,我們要找到一對(duì)B0和B1的估計(jì)值亩码,使它們產(chǎn)生
的對(duì)觀測(cè)的預(yù)測(cè)概率盡可能接近Y的實(shí)際觀測(cè)結(jié)果季率,這就是所謂的似然性。
R中的glm()函數(shù)可以擬合廣義線性模型描沟,這是一系列模型飒泻,其中包括邏輯斯蒂回歸模型。其中一個(gè)重點(diǎn)是必須在函數(shù)中使用family = binomial這個(gè)參數(shù)吏廉。該參數(shù)告訴R運(yùn)行邏輯斯蒂回歸泞遗。

library(MASS)
data(biopsy)
str(biopsy)
biopsy$ID = NULL
names(biopsy) = c("thick", "u.size", "u.shape", "adhsn", 
                  "s.size", "nucl", "chrom", "n.nuc", "mit", "class")
names(biopsy)
biopsy.v2 <- na.omit(biopsy)
y <- ifelse(biopsy.v2$class == "malignant", 1, 0)
library(reshape2)
library(ggplot2)
biop.m <- melt(biopsy.v2, id.var = "class")
ggplot(data = biop.m, aes(x = class, y = value)) + 
  geom_boxplot() +
  facet_wrap(~ variable, ncol = 3)
library(corrplot)
bc <- cor(biopsy.v2[ ,1:9]) #create an object of the features
corrplot.mixed(bc)

set.seed(123) #random number generator
ind <- sample(2, nrow(biopsy.v2), replace = TRUE, prob = c(0.7, 0.3))
train <- biopsy.v2[ind==1, ] #the training data set
test <- biopsy.v2[ind==2, ] #the test data set
str(test) #confirm it worked
table(train$class)
table(test$class)

full.fit <- glm(class ~ ., family = binomial, data = train)
summary(full.fit)
confint(full.fit)
exp(coef(full.fit))
library(car)
vif(full.fit)

train.probs <- predict(full.fit, type = "response")
train.probs[1:5] #inspect the first 5 predicted probabilities
contrasts(train$class)

library(InformationValue)
trainY <- y[ind==1]
testY <- y[ind==2]
confusionMatrix(trainY, train.probs)
# optimalCutoff(trainY, train.probs)
misClassError(trainY, train.probs)
confusionMatrix(trainY, train.probs)

test.probs <- predict(full.fit, newdata = test, type = "response")
misClassError(testY, test.probs)
confusionMatrix(testY, test.probs)

通過summary()函數(shù),我們可以查看各個(gè)預(yù)測(cè)變量的系數(shù)及其p值席覆∈氛蓿可以看到,只有兩個(gè)特征的p值小于0.05( thickness和nuclei)佩伤。使用confint()函數(shù)可以對(duì)模型進(jìn)行95%置信區(qū)間的檢驗(yàn)聊倔。
對(duì)于邏輯斯蒂回歸模型的系數(shù),你不能解釋為“當(dāng)X改變1個(gè)單位時(shí)Y會(huì)改變多少”生巡。這時(shí)耙蔑,優(yōu)勢(shì)比的作用就體現(xiàn)出來了。對(duì)數(shù)函數(shù)log(P(Y)/1 - P(Y)) =
B0 + B1x的B系數(shù)可以通過exponent(beta)指數(shù)函數(shù)轉(zhuǎn)化為優(yōu)勢(shì)比孤荣。
可以使用下面的exp(coef())函數(shù)形式:
exp(coef(full.fit))
優(yōu)勢(shì)比可以解釋為特征中1個(gè)單位的變化導(dǎo)致的結(jié)果發(fā)生比的變化甸陌。如果系數(shù)大于1须揣,就說明當(dāng)特征的值增加時(shí),結(jié)果的發(fā)生比會(huì)增加邀层。反之返敬,系數(shù)小于1就說明,當(dāng)特征的值增加時(shí)寥院,結(jié)果的發(fā)生比會(huì)減小劲赠。在本例中,除u.size之外的所有特征都會(huì)增加對(duì)數(shù)發(fā)生比秸谢。
同線性回歸一樣凛澎,潛在的多重共線性在邏輯斯蒂回歸中也可以算出VIF統(tǒng)計(jì)量
library(car)
vif(full.fit)
下一步需要評(píng)價(jià)模型在訓(xùn)練集上執(zhí)行的效果,然后再評(píng)價(jià)它在測(cè)試集上的擬合程度估蹄∷芗澹快速實(shí)現(xiàn)評(píng)價(jià)的方法是生成一個(gè)混淆矩陣。在后面的章節(jié)中臭蚁,我們使用的混淆矩陣是由caret包實(shí)現(xiàn)的最铁,InformationValue包也可以實(shí)現(xiàn)混淆矩陣。

效果如下:


02 使用交叉驗(yàn)證的邏輯回歸

交叉驗(yàn)證的目的是提高測(cè)試集上的預(yù)測(cè)正確率垮兑,以及盡可能避免過擬合冷尉。 K折交叉驗(yàn)證的做法是將數(shù)據(jù)集分成K個(gè)相等的等份,每個(gè)等份稱為一個(gè)K子集( K-set)系枪。算法每次留出一個(gè)子集雀哨,使用其余K -1個(gè)子集擬合模型,然后用模型在留出的那個(gè)子集上做預(yù)測(cè)私爷。將上面K次驗(yàn)證的結(jié)果進(jìn)行平均绽昼,可以使誤差最小化贷币,并且獲得合適的特征選擇截驮。你也可以使用留一交叉驗(yàn)證方法啄糙,這里的K等于N。模擬表明工秩, LOOCV可以獲得近乎無偏的估計(jì)嘉栓,但是會(huì)有很高的方差。所以拓诸,大多數(shù)機(jī)器學(xué)習(xí)專家都建議將K的值定為5或10侵佃。
bestglm包可以自動(dòng)進(jìn)行交叉驗(yàn)證,這個(gè)包依賴于我們?cè)诰€性回歸中使用過的leaps包奠支。


library(bestglm)
X <- train[, 1:9]
Xy <- data.frame(cbind(X, trainY))
bestglm(Xy = Xy, IC = "CV", CVArgs = list(Method = "HTF", K = 10, REP = 1), 
        family=binomial)
reduce.fit <- glm(class ~ thick + u.size + nucl, family = binomial, data = train)

test.cv.probs = predict(reduce.fit, newdata = test, type = "response")
misClassError(testY, test.cv.probs)
confusionMatrix(testY, test.cv.probs)

bestglm(Xy = Xy, IC = "BIC", family = binomial)
bic.fit <- glm(class ~ thick + adhsn + nucl + n.nuc, 
               family = binomial, data = train)
test.bic.probs = predict(bic.fit, newdata = test, type = "response")
misClassError(testY, test.bic.probs)
confusionMatrix(testY, test.bic.probs)

關(guān)注R小鹽馋辈,關(guān)注科研私家菜(VX_GZH: SciPrivate),有問題請(qǐng)聯(lián)系R小鹽倍谜。讓我們一起來學(xué)習(xí) R語言機(jī)器學(xué)習(xí)與臨床預(yù)測(cè)模型

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末迈螟,一起剝皮案震驚了整個(gè)濱河市叉抡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌答毫,老刑警劉巖褥民,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異洗搂,居然都是意外死亡消返,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門耘拇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撵颊,“玉大人,你說我怎么就攤上這事惫叛〕拢” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵嘉涌,是天一觀的道長妻熊。 經(jīng)常有香客問我,道長仑最,這世上最難降的妖魔是什么固耘? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮词身,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘番枚。我一直安慰自己法严,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布葫笼。 她就那樣靜靜地躺著深啤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪路星。 梳的紋絲不亂的頭發(fā)上溯街,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音洋丐,去河邊找鬼呈昔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛友绝,可吹牛的內(nèi)容都是我干的堤尾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼迁客,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼郭宝!你這毒婦竟也來了辞槐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤粘室,失蹤者是張志新(化名)和其女友劉穎榄檬,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衔统,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鹿榜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缰冤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片犬缨。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖棉浸,靈堂內(nèi)的尸體忽然破棺而出怀薛,到底是詐尸還是另有隱情,我是刑警寧澤迷郑,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布枝恋,位于F島的核電站,受9級(jí)特大地震影響嗡害,放射性物質(zhì)發(fā)生泄漏焚碌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一霸妹、第九天 我趴在偏房一處隱蔽的房頂上張望十电。 院中可真熱鬧,春花似錦叹螟、人聲如沸鹃骂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畏线。三九已至,卻和暖如春良价,著一層夾襖步出監(jiān)牢的瞬間寝殴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國打工明垢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蚣常,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓痊银,卻偏偏與公主長得像史隆,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子曼验,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容