逻辑回归 logistic regression

2020-02-18  本文已影响0人  MJades

这个监督学习工具本质上用于转化线性回归的输出,以便它能拟合到二元响应之中。逻辑回归针对响应归属于特定归类的概率进行建模,而不是直接对相应变量进行建模,用于解决分类问题。

family:每一种响应分布(指数分布族)允许各种关联函数将均值和线性预测器关联起来。
常用的family:
binomal(link=’logit’) —-响应变量服从二项分布,连接函数为logit,即logistic回归
binomal(link=’probit’) —-响应变量服从二项分布,连接函数为probit
poisson(link=’identity’) —-响应变量服从泊松分布,即泊松回归
control:控制算法误差和最大迭代次数
glm.control(epsilon = 1e-8, maxit = 25, trace = FALSE)

算法步骤
逻辑回归问题其实是将回归的思想用于分类问题
Step 1: 通过自变量利用回归分析的思想得到因变量预测值y
Step 2: 通过logistic函数(也称Sigmoid函数,是一种对数线性模型)将因变量的预测值y映射到(0,1)区间内,设为w, w其实是分类为正类的概率。(通过logistic函数,我们可以将预测值y从(−∞,∞)一一映射到(0,1)内。)
Step 3: 设立一个阈值,当w大于阈值时,将其分为正类;否则将其分为负类.

logistic函数
  1. 将数据64分为训练集和测试集
data("iris")
n<-nrow(iris)
ntrain<-round(n*0.6)
set.seed(333)
tindex<-sample(n,ntrain)
train_iris<-iris[tindex,]
text_iris<-iris[-tindex,]
newcol<-data.frame(isVersicolor=(train_iris$Species=="vericolor"))
train_iris<-cbind(train_iris,newcol)
  1. 一元预测因子
 glm1<-glm(isVersicolor~Sepal.Width,data=train_iris,family=binomial)
 summary(glm1)
 plot(train_iris$Sepal.Width, train_iris$isVersicolor)
 curve(predict(glm1, 

data.frame(Sepal.Width=x),type="response"),add=TRUE) #曲线为训练集中Sepal.Width对应的概率;

  1. 多元预测因子
formula<-isVersicolor~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width
glm2<-glm(formula,data=train_iris,family="binomial")
summary(glm2)
prob<-predict(glm2,newdata=test_iris,type="response") #表示R输出预测因子对应的响应概率。
round(prob,3)

ROC曲线

library(pROC)
newcol.test<-data.frame(isVersicolor=(test_iris$Species=="versicolor"))
test_iris<-cbind(test_iris,newcol.test)                                
pre_iris<-  as.numeric(predict(glm2,newdata=test_iris,type="response")>0.5)
#绘制ROC曲线
logistic_roc <- roc(as.numeric(test_iris$isVersicolor),pre_iris)
plot(logistic_roc, print.auc=TRUE, auc.polygon=TRUE, grid=c(0.1,   0.2),grid.col=c("green", "red"),    max.auc.polygon=TRUE,auc.polygon.col="skyblue",  print.thres=TRUE,main='逻辑回归ROC曲线')
ROC

参考:https://blog.csdn.net/weixin_43216017/article/details/86768509

上一篇下一篇

猜你喜欢

热点阅读