R语言回归与分类(一)— 逻辑回归

f7a0917ee75d4b21a440533779170a3e.png

bf4e9e98fa11459d8118cae4457b8cf0.png 

建模

下面通过R语言生成随机数来了解下用R语言建立逻辑回归模型

set.seed(1010)
N <- 100
x1 <- rnorm(N)
x2 <- runif(N)
epsilon <- rnorm(N)
y <- 2*x1 + 3*x2 + epsilon 
y.class <- ifelse(y>0,1,0)
sim.data <- data.frame(x1,x2,y.class)

接着调用glm()函数拟合模拟数据如下:

model <- glm(y.class~x1+x2,family = "binomial",data = sim.data)
#family = "binomial"选项告诉R使用逻辑回归而不是其他广义线性模型
summary(model)

5c6a468f90e24fadb69ea7f9889276c6.png

预测

对数几率比的预测

 

glm.logodd <- predict(model,newdata = sim.data)
head(glm.logodd)

4f0e2757d3b34474a19e946fbd98229b.png

几率比的预测 

head(exp(glm.logodd))

5ea5ca62f71a4480b578bba81ebd8f54.png

如果在模型中加入参数type = “response”的选项将会使得R输出P(Y=1|X) 

glm.pro <- predict(model,newdata = sim.data,type = "response")
head(glm.pro)

6686424ab091447f943a4ccc0e57061b.png

如果此时规定P(Y=1|X)>0.5时候Y取1否则取0,接着输出如下: 

model.predict<- ifelse(glm.pro>0.5,1,0)
head(model.predict)

f6ddcbcd9ab24086927ce12065048dda.png

可以计算逻辑回归的混淆矩阵如下:

table(sim.data$y.class,model.predict) 

 1f8a8b3abc9d41bb9e34b0e8bfb7c745.png

22d21323df2e42beb23b8190149f7b42.png 

通过ROC曲线判别分类质量

x轴表示假阳性率,y轴表示真阳性率,为了对比我们生成一组随机数

sim.data$pro_hat <- glm.pro
sim.data$random_data <- runif(N)
library(data.table)
roc_data<- melt(sim.data[,c(3,4,5)],id.vars="y.class",variable.name = "class",value.name ="response")
library(plotROC)
ggroc <- ggplot(roc_data, aes(d=y.class, m=response, color=class)) +
            geom_roc() +
            scale_color_discrete(name = "class", labels = c("logit", "Random")) +
            geom_abline()
ggroc

 20051367f35d4ae6816ba9104662342d.png

当分类曲线接近黑色的对角线说明分类不好(更接近于随机的状态,即概率0.5),当然也可以用ROC下包裹的面积AUC来衡量分类好坏。AUC为1时说明分类完全正确,当AUC值接近0.5(即黑色对角线位置),意味着此分类器没比随机分类好多少。具体R代码结果如下:

calc_auc(ggroc)

 e7bfa94c4ab5474d939923cad114101d.png

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值