美文网首页
逻辑回归 logistic regression

逻辑回归 logistic regression

作者: MJades | 来源:发表于2020-02-18 14:38 被阅读0次

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

    • 数据中要利用二元响应创建新的一列数据,布尔值。
    • 广义线性模型是包含逻辑回归的一类模型。

    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

    相关文章

      网友评论

          本文标题:逻辑回归 logistic regression

          本文链接:https://www.haomeiwen.com/subject/jcsgfhtx.html