邏輯迴歸

  • 邏輯迴歸

a、邏輯迴歸是廣義線性模型的一種,可根據一組數值變量預測二元輸出,R中的基本函數glm()可用於擬合邏輯迴歸模型。git

b、glm()函數自動將預測變量 中的分類變量編碼爲相應的虛擬變量。由於此例的所有預測變量都是數值型的變量,所以沒必要要對其編碼dom

> fit.logit <- glm(class ~.,data=df.train,family = binomial()) #擬合邏輯迴歸,family = binomial()表示二項式
> summary(fit.logit)                                           #class是響應變量,其餘的爲預測變量

Call:
glm(formula = class ~ ., family = binomial(), data = df.train)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-2.75813  -0.10602  -0.05679   0.01237   2.64317  

Coefficients:
                          Estimate Std. Error z value Pr(>|z|)    
(Intercept)              -10.42758    1.47602  -7.065 1.61e-12 ***
clumpThickness             0.52434    0.15950   3.287  0.00101 ** 
sizeUniformity            -0.04805    0.25706  -0.187  0.85171    
shapeUniformity            0.42309    0.26775   1.580  0.11407    
maginalAdhesion            0.29245    0.14690   1.991  0.04650 *  
singleEpithelialCellSize   0.11053    0.17980   0.615  0.53871    
bareNuclei                 0.33570    0.10715   3.133  0.00173 ** 
blandChromatin             0.42353    0.20673   2.049  0.04049 *  
normalNucleoli             0.28888    0.13995   2.064  0.03900 *  
mitosis                    0.69057    0.39829   1.734  0.08295 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 612.063  on 482  degrees of freedom
Residual deviance:  71.346  on 473  degrees of freedom
  (6 observations deleted due to missingness)
AIC: 91.346

Number of Fisher Scoring iterations: 8
  • 基於訓練集對驗證集進行驗證

採用基於df.train 創建的模型來對 df.validate數據集中的樣本單元分類,predict()函數默認輸出腫瘤爲惡性的機率,指定參數 type="response"函數

> prob <- predict(fit.logit,df.validate,type="response")
> logit.pred <- factor(prob > 0.5,levels = c(FALSE,TRUE),labels = c("bengin","maligant")) #樣本單元中,機率大於0.5被分爲惡性腫瘤,機率小於等於0.5的被分爲良性腫瘤類

評估預測的準確性編碼

> logit.perf <- table(df.validate$class,logit.pred,dnn = c("Actual","Predicted"))
> logit.perf
           Predicted
Actual      bengin maligant
  benign       118        2
  malignant      4       76
#給出預測與實際狀況對比的交叉表(即混淆矩陣,confusionn matrix)。
#模型正確判別了118個類別爲良性的患者和17個類別爲惡性的患者,另外,di.validate數據集中有10個樣本單元因包含缺失值數據沒法判別
#驗證集上,正確分類的模型(即準確率,acuracy)爲(76+118)/200=97%
  • 移除模型中的噪聲

在該案例中注意到三個預測變量(sizeUniformity,shapeUniformity,singleEpithelalCellSize)的係數未經過顯著性檢驗(即 p 值大於0.1),從預測變量的角度來講,通常不會將這些變量歸入模型,當這類不包含相關信息的變量特別多時,能夠直接將其都認爲模型中的噪聲spa

去除後再擬合,獲得一個更小的 AIC 值code

logit.fit.reduced <- step(fit.logit)  #可利用這種方法獲得一個移除上述三個變量的精簡模型,這種模型在驗證集上的偏差相對全變量模型更小
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息