逻辑回归
1.普通逻辑回归
在逻辑回归中,当变量个数相对观测较大时,很容易发生完全分离或者准完全分离的现象,这时候没有唯一的极大似然估计,因此参数估计的方差极大。
> dat=read.csv("https://raw.githubusercontent.com/happyrabbit/DataScientistR/master/Data/sim1_da1.csv")
> fit=glm(y~.,dat,family="binomial")
Warning messages:
1: glm.fit:算法没有聚合
2: glm.fit:拟合機率算出来是数值零或一
>
如上,该算法没有聚合,就是完全分离了的情况,这时收缩方法可以解决这个问题。
2.收缩逻辑回归
在逻辑回归的似然函数后添加罚函数来收缩参数估计
> dat=read.csv("https://raw.githubusercontent.com/happyrabbit/DataScientistR/master/Data/sim1_da1.csv")
> trainx=dplyr::select(dat,-y)
> trainy=dat$y
> fit=glmnet(as.matrix(trainx),trainy,family="binomial")
如上,并没有错误信息。
我们绘制参数收缩的路径图,提取对应的参数估计,并进行预测。
> plot(fit,xvar="dev")
>
> levels(as.factor(trainy))
[1] "0" "1"
> newdat=