分類分析--邏輯回歸
邏輯回歸(logistic regression)是廣義線性模型的一種,可根據一組數值變量預測二元輸出,即邏輯回歸只適用於二分類 ,R中的基本函數glm()可用於擬合邏輯回歸模型。glm()函數自動將預測變量中的分類變量編碼為相應的虛擬變量。威斯康星乳腺癌數據中的全部預測變量都是數值變量,因此不必要對其編碼。
(1)使用glm()進行邏輯回歸
#擬合邏輯回歸,基於df.train數據框中的數據構造邏輯回歸模型
fit.logit <- glm(class~., data=df.train, family=binomial())
summary(fit.logit) #檢查模型
結果分析:模型中有三個預測變量(sizeUniformity、shapeUniformity和singleEpithelialCellSize)的系數未通過顯著性檢驗(即p值大於0.1)。從預測的角度來說,我們一般不會將這些變量納入最終模型。當這類不包含相關信息的變量特別多時,可以直接將其認定為模型中的噪聲。
#對訓練集外樣本單元進行分類,采用基於df.train建立的模型來對df.validate數據集中的樣本單元分類。predict()函數默認輸出腫瘤為惡性的對數概率,指定參數type="response"即可得到預測腫瘤為惡性的概率。樣本單元中,概率大於0.5的被分為惡性腫瘤類,概率小於等於0.5的被分為良性腫瘤類。
prob <- predict(fit.logit, df.validate, type="response")
logit.pred <- factor(prob > .5, levels=c(FALSE, TRUE),
labels=c("benign", "malignant"))
#評估預測准確性,給出預測與實際情況對比的交叉表(即混淆矩陣,confusion matrix)
logit.perf <- table(df.validate$class, logit.pred,dnn=c("Actual", "Predicted"))
logit.perf
結果分析:模型正確判別了129個類別為良性的患者和69個類別為惡性的患者。在驗證集上,正確分類的模型(即准確率,accuracy)為(129+69)/205=96.6%,