R語言之Logic回歸分析


理論上,回歸分析是在目標變量為連續型數據的情況下建模的,它不能處理目標變量為分類型數據的情況。

而logic回歸分析的思路是把分類變量(“是否開通VIP”)轉化為連續變量(“開通VIP的概率”),進而使用回歸分析的方法間接地研究分類分析的問題。

一、原理

假設vip變量為分類變量,其取值只有0和1,這是分類型變量,無法通過回歸分析建模。

但是,vip取值為1的概率卻是一個連續型變量(prob.vip),可以使用回歸分析為prob.vip建模:

prob.vip=k1*x1+k2*x2+k3*x3+k4*x4+b

由於k1*x1+k2*x2+k3*x3+k4*x4+b 的取值范圍是(-∞,+∞),而prob.vip的范圍是[0,1],因此,使用y=1/(1+exp(-x))函數進行轉化:

prob.vip=1/(1+exp(-(k1*x1+k2*x2+k3*x3+k4*x4+b)))

當prob.vip>0.5,則可以預測vip.predict=1,否則為0。

注:回歸分析使用最小二乘法擬合模型參數;logic回歸則使用最大似然法來估算。

二、R語言實現

glm()是用R語言實現logic回歸分析的核心函數。

參數:

formula:設置線性擬合模型的形式

family:glm的算法族。logic回歸分析,family設置為binomial("logit")

data:樣本數據

代碼:

(1)建立logic回歸模型
data.glm<- glm(vip~.,data=vip.data,family=binomial("logit")) summary(data.glm) 可以使用step函數對模型進行修正: data.glm<- step(data.glm)

(2)模型glm的輸出項
模型參數:data.glm$coefficients
線性模型的預測數據:data.glm$linear.predictors
vip等於1的概率prob.vip: data.glm$fitted.values
線性擬合模型的殘差:data.glm$residuals

(3)模型預測
預測測試數據:
predict.vip <- ifelse(data.glm$fitted.values>= 0.5,1,0)
predict.vip <- as.factor(predict.vip)

預測新數據:
new.predict.vip<- predict(data.glm,newdata=test.vip.data) 線性擬合數據的預測值
new.predict.vip<- 1/(1+exp(-new.predict.vip)) 概率值
new.predict.vip<- as.factor(ifelse(new.predict.vip>= 0.5,1,0))預測最終值

(4)模型性能衡量
performance<- length(which((predict.vip==vip.data$vip)==TRUE))/nrow(vip.data) 正確率
其中,length(which((predict.vip==vip.data$vip)==TRUE))表示預測值與實際樣本值元素取值相等的數目。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM