多元logistic回归归 “阀值”指什么?

Logistic回归模型、应用建模案例_数据挖掘入门与实战_传送门
Logistic回归模型、应用建模案例
要学习更多点?
数据挖掘入门与实战
数据挖掘入门与实战
公众号: datadw一、logistic回归模型概述
广义线性回归是探索“响应变量的期望”与“自变量”的关系,以实现对非线性关系的某种拟合。这里面涉及到一个“连接函数”和一个“误差函数”,“响应变量的期望”经过连接函数作用后,与“自变量”存在线性关系。选取不同的“连接函数”与“误差函数”可以构造不同的广义回归模型。当误差函数取“二项分布”而连接函数取“logit函数”时,就是常见的“logistic回归模型”,在0-1响应的问题中得到了大量的应用。
Logistic回归主要通过构造一个重要的指标:发生比来判定因变量的类别。在这里我们引入概率的概念,把事件发生定义为Y=1,事件未发生定义为Y=0,那么事件发生的概率为p,事件未发生的概率为1-p,把p看成x的线性函数;
回归中,最常用的估计是最小二乘估计,因为使得p在[0,1]之间变换,最小二乘估计不太合适,有木有一种估计法能让p在趋近与0和1的时候变换缓慢一些(不敏感),这种变换是我们想要的,于是引入Logit变换,对p/(1-p)也就是发生与不发生的比值取对数,也称对数差异比。经过变换后,p对x就不是线性关系了。logistic回归的公式可以表示为:其中P是响应变量取1的概率,在0-1变量的情形中,这个概率就等于响应变量的期望。这个公式也可以写成:可以看出,logistic回归是对0-1响应变量的期望做logit变换,然后与自变量做线性回归。参数估计采用极大似然估计,显著性检验采用似然比检验。建立模型并根据AIC准则选择模型后,可以对未知数据集进行预测,从而实现分类。模型预测的结果是得到每一个样本的响应变量取1的概率,为了得到分类结果,需要设定一个阈值p0——当p大于p0时,认为该样本的响应变量为1,否则为0。阈值大小对模型的预测效果有较大影响,需要进一步考虑。首先必须明确模型预测效果的评价指标。对于0-1变量的二分类问题,分类的最终结果可以用表格表示为:其中,d是“实际为1而预测为1”的样本个数,c是“实际为1而预测为0”的样本个数,其余依此类推。显然地,主对角线所占的比重越大,则预测效果越佳,这也是一个基本的评价指标——总体准确率(a+d)/(a+b+c+d)。准确(分类)率=正确预测的正反例数/总数
Accuracy=(a+d)/(a+b+c+d)误分类率=错误预测的正反例数/总数
Error rate=(b+c)/(a+b+c+d)=1-Accuracy正例的覆盖率=正确预测到的正例数/实际正例总数Recall(True Positive Rate,or Sensitivity)=d/(c+d)正例的命中率=正确预测到的正例数/预测正例总数Precision(Positive Predicted Value,PV+)=d/(b+d)负例的命中率=正确预测到的负例个数/预测负例总数Negative predicted value(PV-)=a/(a+c)通常将上述矩阵称为“分类矩阵”。一般情况下,我们比较关注响应变量取1的情形,将其称为Positive(正例),而将响应变量取0的情形称为Negative(负例)。常见的例子包括生物实验的响应、营销推广的响应以及信用评分中的违约等等。针对不同的问题与目的,我们通常采用ROC曲线与lift曲线作为评价logistic回归模型的指标。1)ROC曲线设置了两个相应的指标:TPR与FPR。TPR:True Positive Rate(正例覆盖率),将实际的1正确地预测为1的概率,d/(c+d)。FPR:False Positive Rate,将实际的0错误地预测为1的概率,b/(a+b)。TPR也称为Sensitivity(即生物统计学中的敏感度),也可以称为“正例的覆盖率”——将实际为1的样本数找出来的概率。覆盖率是重要的指标,例如若分类的目标是找出潜在的劣质客户(响应变量取值为1),则覆盖率越大表示越多的劣质客户被找出。类似地,1-FPR其实就是“负例的覆盖率”,也就是把负例正确地识别为负例的概率。TPR与FPR相互影响,而我们希望能够使TPR尽量地大,而FPR尽量地小。影响TPR与FPR的重要因素就是上文提到的“阈值”。当阈值为0时,所有的样本都被预测为正例,因此TPR=1,而FPR=1。此时的FPR过大,无法实现分类的效果。随着阈值逐渐增大,被预测为正例的样本数逐渐减少,TPR和FPR各自减小,当阈值增大至1时,没有样本被预测为正例,此时TPR=0,FPR=0。由上述变化过程可以看出,TPR与FPR存在同方向变化的关系(这种关系一般是非线性的),即,为了提升TPR(通过降低阈值),意味着FPR也将得到提升,两者之间存在类似相互制约的关系。我们希望能够在牺牲较少FPR的基础上尽可能地提高TPR,由此画出了ROC曲线。ROC曲线的全称为“接受者操作特性曲线”(receiver operating characteristic),其基本形式为:ROC曲线当预测效果较好时,ROC曲线凸向左上角的顶点。平移图中对角线,与ROC曲线相切,可以得到TPR较大而FPR较小的点。模型效果越好,则ROC曲线越远离对角线,极端的情形是ROC曲线经过(0,1)点,即将正例全部预测为正例而将负例全部预测为负例。ROC曲线下的面积可以定量地评价模型的效果,记作AUC,AUC越大则模型效果越好。当我们分类的目标是将正例识别出来时(例如识别有违约倾向的信用卡客户),我们关注TPR,此时ROC曲线是评价模型效果的准绳。2)lift曲线在营销推广活动中,我们的首要目标并不是尽可能多地找出那些潜在客户,而是提高客户的响应率。客户响应率是影响投入产出比的重要因素。此时,我们关注的不再是TPR(覆盖率),而是另一个指标:命中率。回顾前面介绍的分类矩阵,正例的命中率是指预测为正例的样本中的真实正例的比例,即d/(b+d),一般记作PV。在不使用模型的情况下,我们用先验概率估计正例的比例,即(c+d)/(a+b+c+d),可以记为k。定义提升值lift=PV/k。lift揭示了logistic模型的效果。例如,若经验告诉我们10000个消费者中有1000个是我们的潜在客户,则我们向这10000个消费者发放传单的效率是10%(即客户的响应率是10%),k=(c+d)/(a+b+c+d)=10%。通过对这10000个消费者进行研究,建立logistic回归模型进行分类,我们得到有可能比较积极的1000个消费者,b+d=1000。如果此时这1000个消费者中有300个是我们的潜在客户,d=300,则命中率PV为30%。此时,我们的提升值lift=30%/10%=3,客户的响应率提升至原先的三倍,提高了投入产出比。为了画lift图,需要定义一个新的概念depth深度,这是预测为正例的比例,(b+d)/(a+b+c+d)。与ROC曲线中的TPR和FPR相同,lift和depth也都受到阈值的影响。当阈值为0时,所有的样本都被预测为正例,因此depth=1,而PV=d/(b+d)=(0+d)/(0+b+0+d)=k,于是lift=1,模型未起提升作用。随着阈值逐渐增大,被预测为正例的样本数逐渐减少,depth减小,而较少的预测正例样本中的真实正例比例逐渐增大。当阈值增大至1时,没有样本被预测为正例,此时depth=0,而lift=0/0。由此可见,lift与depth存在相反方向变化的关系。在此基础上作出lift图:lift 曲线 与ROC曲线不同,lift曲线凸向(0,1)点。我们希望在尽量大的depth下得到尽量大的lift(当然要大于1),也就是说这条曲线的右半部分应该尽量陡峭。至此,我们对ROC曲线和lift曲线进行了描述。这两个指标都能够评价logistic回归模型的效果,只是分别适用于不同的问题:如果是类似信用评分的问题,希望能够尽可能完全地识别出那些有违约风险的客户(不使一人漏网),我们需要考虑尽量增大TPR(覆盖率),同时减小FPR(减少误杀),因此选择ROC曲线及相应的AUC作为指标;如果是做类似数据库精确营销的项目,希望能够通过对全体消费者的分类而得到具有较高响应率的客户群,从而提高投入产出比,我们需要考虑尽量提高lift(提升度),同时depth不能太小(如果只给一个消费者发放传单,虽然响应率较大,却无法得到足够多的响应),因此选择lift曲线作为指标。3)相关R应用包普通二分类 logistic 回归 用系统的 glm因变量多分类 logistic 回归有序分类因变量:用 MASS 包里的 polrb无序分类因变量:用 nnet 包里的 multinom条件logistic回归,用 survival 包里的 clogit二、相关应用例子:Binary Logistic(因变量只能取两个值1和0虚拟因变量)案例一:本文用例来自于John Maindonald所著的《Data Analysis and Graphics Using R》一书,其中所用的数据集是anesthetic,数据集来自于一组医学数据,其中变量conc表示麻醉剂的用量,move则表示手术病人是否有所移动,而我们用nomove做为因变量,因为研究的重点在于conc的增加是否会使nomove的概率增加。首先载入数据集并读取部分文件,为了观察两个变量之间关系,我们可以利cdplot函数来绘制条件密度图install.packages("DAAG")library(lattice)library(DAAG)head(anesthetic)
logconc nomove1
1.0 0.0000000
1.2 0.1823216
1.4 0.3364722
1.4 0.3364722
1.2 0.1823216
2.5 0.9162907
1cdplot(factor(nomove)~conc,data=anesthetic,main='条件密度图',ylab='病人移动',xlab='麻醉剂量')从图中可见,随着麻醉剂量加大,手术病人倾向于静止。下面利用logistic回归进行建模,得到intercept和conc的系数为-6.47和5.57,由此可见麻醉剂量超过1.16(6.47/5.57)时,病人静止概率超过50%。anes1=glm(nomove~conc,family=binomial(link='logit'),data=anesthetic)summary(anes1)结果显示:Call:glm(formula = nomove ~ conc, family = binomial(link = "logit"),
data = anesthetic)Deviance Residuals:
Coefficients:
Estimate Std. Error
(Intercept)
0.00748 **conc
0.00645 **---Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Dispersion parameter for binomial family taken to be 1)
Null deviance: 41.455
degrees of freedomResidual deviance: 27.754
degrees of freedomAIC: 31.754Number of Fisher Scoring iterations: 5 下面做出模型的ROC曲线anes1=glm(nomove~conc,family=binomial(link='logit'),data=anesthetic)对模型做出预测结果pre=predict(anes1,type='response')将预测概率pre和实际结果放在一个数据框中data=data.frame(prob=pre,obs=anesthetic$nomove)将预测概率按照从低到高排序data=data[order(data$prob),]n=nrow(data)tpr=fpr=rep(0,n)根据不同的临界值threshold来计算TPR和FPR,之后绘制成图for (i in 1:n){
threshold=data$prob[i]
tp=sum(data$prob>threshold&$obs==1)
fp=sum(data$prob>threshold&$obs==0)
tn=sum(data$prob
fn=sum(data$prob
tpr[i]=tp/(tp+fn)
fpr[i]=fp/(tn+fp)
#假正率}plot(fpr,tpr,type='l')abline(a=0,b=1)R中也有专门绘制ROC曲线的包,如常见的ROCR包,它不仅可以用来画图,还能计算ROC曲线下面面积AUC,以评价分类器的综合性能,该数值取0-1之间,越大越好。library(ROCR)pred=prediction(pre,anesthetic$nomove)performance(pred,'auc')@y.valuesperf=performance(pred,'tpr','fpr')plot(perf)还可以使用更加强大的pROC包,它可以方便的比较两个分类器,并且能自动标出最优临界点,图形看起来比较漂亮:install.packages("pROC")library(pROC)modelroc=roc(anesthetic$nomove,pre)plot(modelroc,print.auc=TRUE,auc.polygon=TRUE,grid=c(0.1,0.2),grid.col=c("green","red"),max.auc.polygon=TRUE,auc.polygon.col="blue",print.thres=TRUE)上面的方法是使用原始的0-1数据进行建模,即每一行数据均表示一个个体,另一种是使用汇总数据进行建模,先将原始数据按下面步骤进行汇总anestot=aggregate(anesthetic[,c('move','nomove')],by=list(conc=anesthetic$conc),FUN=sum)结果如下:
conc move nomove1
2 anestot$conc=as.numeric(as.character(anestot$conc))anestot$total=apply(anestot[,c('move','nomove')],1,sum)anestot$total[1] 7 5 6 6 4 2anestot$prop=anestot$nomove/anestot$totalanestot$prop[1] 0......0000000对于汇总数据,有两种方法可以得到同样的结果,一种是将两种结果的向量合并做为因变量,如anes2模型。另一种是将比率做为因变量,总量做为权重进行建模,如anes3模型。这两种建模结果是一样的。anes2=glm(cbind(nomove,move)~conc,family=binomial(link='logit'),data=anestot)summary(anes2)结果显示如下:Call:glm(formula = cbind(nomove, move) ~ conc, family = binomial(link = "logit"),data = anestot)Deviance Residuals:1 2 3 4 5 60.267 0.500 0.26Coefficients:
Std. Error
Pr(>z)(Intercept) -6.469
0.00748 **conc
0.00645 **---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1(Dispersion parameter for binomial family taken to be 1)Null deviance: 15.4334 on 5 degrees of freedomResidual deviance: 1.7321 on 4 degrees of freedomAIC: 13.811Number of Fisher Scoring iterations: 5 anes3=glm(prop~conc,family=binomial(link='logit'),weights=total,data=anestot)结果和上面的一样。根据logistic模型,我们可以使用predict函数来预测结果,下面根据上述模型来绘图x=seq(from=0,to=3,length.out=30) y=predict(anes1,data.frame(conc=x),type='response')plot(prop~conc,pch=16,col='red',data=anestot,xlim=c(0.5,3),main='Logistic回归曲线图',ylab='病人静止概率',xlab='麻醉剂量')lines(y~x,lty=2,col='blue')案例二:利用iris数据集,进行逻辑回归二分类测试,该数据集是R语言自带得数据集,包括四个属性,和三个分类。逻辑回归我们用glm函数实现,该函数提供了各种类型的回归,如:提供正态、指数、gamma、逆高斯、Poisson、二项。我们用的logistic回归使用的是二项分布族binomial。index <- which(iris$Species == 'setosa')将种类为setosa的数据排除出我们需要的数据集ir <- iris[- index,]levels(ir$Species)[1] <- ''生成训练集split <- sample(100,100*(2/3))ir_train <- ir[split,]生成测试集ir_test <- ir[-split,]通过训练集建立模型model <- glm(Species ~.,family=binomial(link='logit'),data=ir_train)summary(model)模型运行结果:Call:glm(formula = Species ~ ., family = binomial(link = "logit"),data = ir_train)Deviance Residuals:Min 1Q Median 3Q Max-1.339e-04 -2.100e-08 2.100e-08 2.100e-08 1.059e-04Coefficients:Estimate Std. Error z value Pr(>z)(Intercept) -247.01 -0.004 0.997Sepal.Length 12.45 .000 1.000Sepal.Width -285.61 .003 0.998Petal.Length 154.76
0.001 0.999Petal.Width 869.60
0.004 0.997(Dispersion parameter for binomial family taken to be 1)Null deviance: 9.0949e+01 on 65 degrees of freedomResidual deviance: 4.0575e-08 on 61 degrees of freedomAIC: 10Number of Fisher Scoring iterations: 25通过anova()函数 对模型进行方差分析anova(model, test="Chisq")方差分析如下:Analysis of Deviance TableModel: binomial, link: logitResponse: SpeciesTerms added sequentially (first to last)Df Deviance Resid. Df Resid. Dev Pr(>Chi)NULL 65 90.949Sepal.Length 1 18.934 64 72.015 1.353e-05 ***Sepal.Width 1 0.131 63 71.884 0.7176Petal.Length 1 51.960 62 19.924 5.665e-13 ***Petal.Width 1 19.924 61 0.000 8.058e-06 ***---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1下面通过McFadden R2指标进一步对模型进行分析install.packages("pscl")library(pscl)pR2(model)llh
G2 McFadden
r2CU-2. -4. 9. 1. 7. 1.为了得到分类结果,需要设定一个阈值p0——当p大于p0时,认为该样本的响应变量为1,否则为0。阈值大小对模型的预测效果有较大影响,需要进一步考虑。首先必须明确模型预测效果的评价指标。求解训练模型的最佳阀值对模型做出预测结果model <- glm(Species ~.,family=binomial(link='logit'),data=ir_train)pre1=predict(model,type='response')将预测概率pre1和实际结果放在一个数据框中data1=data.frame(prob=pre1,obs=ifelse(ir_train$Species=="virginica",1,0))将预测概率按照从低到高排序data1=data1[order(data1$prob),]n=nrow(data1)tpr=fpr=rep(0,n)根据不同的临界值threshold来计算TPR和FPR,之后绘制成图for (i in 1:n){threshold=data1$prob[i]tp=sum(data1$prob>threshold&data1;$obs==1)fp=sum(data1$prob>threshold&data1;$obs==0)tn=sum(data$probfn=sum(data$probtpr[i]=tp/(tp+fn) #真正率fpr[i]=fp/(tn+fp) #假正率}plot(fpr,tpr,type='l')abline(a=0,b=1)下面通过pROC包自动标出最优临界点(0.506)install.packages("pROC")library(pROC)modelroc1=roc(ifelse(ir_train$Species=="virginica",1,0),pre1)plot(modelroc1,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)评估模型的预测效果predict <- predict(model,type='response',newdata=ir_test)predict.results
0.506,"virginica","versicolor")misClasificError <- mean(predict.results != ir_test$Species)print(paste('Accuracy',1-misClasificError))[1] "Accuracy 1"最后一步,我们将通过画ROC曲线,并计算其AUC面积,作为评估二类分类效果的一个典型测量install.packages("ROCR")library(gplots)library(ROCR)p <- predict(model,type='response',newdata=ir_test)p.results
0.5,1,0)pr <- prediction(p.results, ifelse(ir_test$Species=="virginica",1,0))prf <- performance(pr, measure = "tpr", x.measure = "fpr")plot(prf)auc <- performance(pr, measure = "auc")auc <- ]]0.9285714auc real <- ir_test$Speciesdata.frame(real,predict)res 0.5,'virginca','versicorlor'))查看模型效果plot(res)公众号推荐: weic2c
据分析入门与实战从哪里做起学习数据分析?如何培养数据分析的能力?长按图片,识别二维码,点关注
觉得不错,分享给更多人看到
数据挖掘入门与实战 微信二维码
分享这篇文章
10月6日 1:13
数据挖掘入门与实战 最新文章您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
心脏起搏器短期起搏阈值的改变及其心肌损伤关系分析.pdf 43页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
&#xe600;下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
你可能关注的文档:
··········
··········
河北医科大学
学位论文使用授权及知识产权归属承诺
本学位论文在导师(或指导小组)的指导下,由本人独立完成。
本学位论文研究所获得的研究成果,其知识产权归河北医科大学所
有。河北医科大学有权对本学位论文进行交流、公开和使用。凡发表
与学位论文主要内容相关的论文,第一署名为单位河北医科大学,
试验材料、原始数据、申报的专利等知识产权均归河北医科大学所
有。否则,承担相应法律责任。
研究生签名。枸辜氆导师签章唆漤黉二级学院领导盖事:
弦f厂年f.,月≯-日
河北医科大学研究生学位论文独创性声明
本论文是在导师指导下进行的研究工作及取得的研究成果,
除了文中特别加以标注和致谢等内容外,文中不包含其他人已经
发表或撰写的研究成果,指导教师对此进行了审定·本论文由本人
独立撰写,文责自负。
研究生签名:木豸掩
导师签章:
如fr年r月≯≯日
中文摘要…………………………………………………………………………….1
英文摘要……………………………………………………………………………..4
研究论文心脏起搏器短期起搏阈值的改变及心肌损伤关系的研究
前言……………………………………………………………………………..8目U吾………………………………………………………………………………………………………·8
材料与方法……………………………………………………………。9
乡日7K’………‘……………………………………………………………………………………………”l结果……………………………………………………………………………..1
附图…………………………………………………………………………….13
附表………………………………………………………………………1
讨论……………………………………………………………………………..19
结论………………………………………………………………………24
参考文献…………………………………………………………….24
心脏起搏部位的研究进展………………………………………….27
致谢……………………………………………………………………………··40
个人简历……………………………………………………………………41
心脏起搏器短期起搏阈值的改变及
心肌损伤关系的研究
目的:心脏起搏器起搏电极的发展经历了被动电极到主动电极的飞
跃,主动电极的出现改善了被动电极脱位率高,固定后位置不便调整等诸
多不便。主动电极植入后短期起搏阈值可出现较大变化,以主动电极植入
即刻及植入后5.10分钟的起搏阈值定义为短期起搏阈值,探究心脏起搏
器主动电极植入后患者一般情况及既往史对短期起搏阈值的影响情况。并
分析主动电极植入后心肌损伤标记物的变化,了解主动电极的应用是否存
在肌损伤及损伤程度的评价。
正在加载中,请稍后...【图文】多元线性回归与Logistic回归_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
多元线性回归与Logistic回归
&&多元线性回归与Logistic回归
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢逻辑回归的阀值取多少合适_百度知道
逻辑回归的阀值取多少合适
我有更好的答案
在用逻辑回归做潜在用户挖掘时,阀值(Z)的选取是一个头疼的问题。取太高,查全率虽然高了,但是查询条件过于严格,挖掘出的潜在用户过少。取的太低,资源浪费的太多。对于一般的营销而言,这个问题很好解决,只要按照预算,从高往下选取就可以了。但对于其他没有预算约束的情况就比较麻烦。希望下面的公式可以给予一些启发Z=Ln(qc)/(QC)
q-发生显性结果的先验概率,比如信用卡用户发生违约的以往概率
Q-不发生显性结果的先验概率
c-范第一类错误的成本,即信用卡用户对银行造成的损失,就是不能收回的比例C-范第二类错误的成本,即应该发放信用卡而没有发放所遭受的损失,就是存贷款差价
采纳率:69%
为您推荐:
其他类似问题
阀值的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 logistic回归 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信