本文实现逻辑回归的方法主要使用R语言
logistic属于预测性模型。
- 预测性模型能够帮助销售部门,提高销售活动的一个工具,能针对用户实现精准营销
-
统计模型应用表
Paste_Image.png -
逻辑回归相关概念
优势比(odds):事件发生的概率/事件不发生的概率
odds ratio 大白话讲就是胜率
logit变换:给优势比取对数
Paste_Image.png
- i 所有案例观察值
- pi 第i个案例中一个事件发生的概率
- ln 对数变换(以e为底)
例如:
性别X:1,1,1,1,1,2,2,2,2,2
违约Y:1,0,0,1,0,1,1,1,0,0
那么P1 = 2/5 P2=3/5
logit回归模型
Paste_Image.png
区间在0-1之间;把原本预测出来的正负无穷的值,压缩为(0,1)之间,能更好预测一个时间发生的概率。
例如:在医学调查中,不吸烟组(A)共有80人,吸烟组(B)共有100人, 得肺癌的分别为:60人,90人
Paste_Image.png那么A组中,“是”的概率为60/80
那么B组中,“是”的概率为90/100
优势比 = “是”得肺癌的人/“否”没有得肺癌的人
A组odds=60/20=3 即odds(A组)=60/20=3
B组odds=90/10=9 即odds(B组)=90/10=9
Odds Ratio , B对A OR= 9/3 = 3
结论和意义:对一个吸烟者而言,得的肺癌的概率比不吸烟的人高3倍;
logit回归基于极大似然法
http://blog.csdn.net/zouxy09/article/details/8537620
模型评估指标
Omnlibus检验
Paste_Image.png
看方程的总体显著性,看卡方的显著性,主要是把方程中所有的X自变量压缩在一起,对因变量Y做的卡方,因此能够衡量方程的总体显著性。原假设:所有的系数值都相等而且为0
logistic回归的R方值
Paste_Image.png总体百分比 = 预测正确数((NO,NO)+(YES,YES))/总数
混淆矩阵(用于决策类模型)
Paste_Image.png
- 正确率=(A+D)/(A+B+C+D) 评价模型优劣的指标
- 灵敏度(Sensitivity ; 覆盖率、召回率recall;正例的覆盖率)= A/(A+B) 事件发生的覆盖程度
- 命中率(Precision、PV+)=A/(A+C) 事件发生的准确程度
- 特异度(Specificity;负例的覆盖率)=D/(C+D)
- 负命中率(PV-)=D/(D+B)
假设采用逻辑回归分类器,其给出针对每个实例为正类的概率,那么通过设定一个阈值如0.6,概率大于等于0.6的为正类,小于0.6的为负类。对应的就可以算出一组(FPR,TPR),在平面中得到对应坐标点。随着阈值的逐渐减小,越来越多的实例被划分为正类,但是这些正类中同样也掺杂着真正的负实例,即TPR和FPR会同时增大。阈值最大时,对应坐标点为(0,0),阈值最小时,对应坐标点(1,1)。
ROC曲线(用于排序类模型)
-
ROC曲线一般看测试集上的ROC值
Paste_Image.png - 曲线下的面积(AUC)越大越好
关于ROC曲线,更详细可以看我兄弟的这篇文章:
http://www.cnblogs.com/karlpearson/p/6185091.html
模型系数解释
由于系数经过变换所以需要把变换还原
以变量creddebt数据为例:B=0.44 EXP(B) = e^0.44=1.553 由于模型进行了logistic变换,因此解释起来需要进行变换
Paste_Image.png Paste_Image.png
②/①得到
Paste_Image.png所以exp(B)是x每增加1个单位的变化值
在指数e中幂<0起点为0,无需处理。如果幂>0,起点为1,那么就需要减去1让起点为0才能于幂<0的值有可比性。
由于解释增加值,e0=1,起点为1,0.44>0,所以e0.44-1=0.553,解释就是当信用卡贷款增加1(千元),信用卡违约的风险概率增加55.3%。
如果要衡量creddebt对是否违约的影响程度,需要做标准化处理,即(exp(B)-1)/(exp(B)+1) = 0.2<0.35说明creddebt对是否违约的影响程度不高
概率P的计算
Paste_Image.png Paste_Image.png垂直特异性
需要三个值计算:学生化残差;库克距离;杠杆值
①库克距离/杠杆值 ~ 服从卡方分布(卡方界值为100)
②学生化残差^2 ~ 服从卡方(卡方界值为8)
如果①②同时大于100和8的话可以认定为强影响点
spss案例
打开spss > 分析 > 回归 > 二元Logistic
Paste_Image.png
协变量:默认认为里面的变量是连续变量,分类变量也默认认为是连续变量
如果要区分分类变量需要点击“分类”
把分类变量选中,放入分类协变量框中
Paste_Image.png绘制roc曲线,评估模型好坏
Paste_Image.png检查模型的垂直特异性
案例
- 汽车金融信用违约预测模型案例
目标:根据申请人的资料预测他会不会违约,如果违约概率较高则拒绝
- 分类变量之间的描述使用列联表分析
- 构造逻辑回归
#随机抽样,建立训练集与测试集
set.seed(100)
select<-sample(1:nrow(accepts),length(accepts$application_id)*0.7)
train=accepts[select,]
test=accepts[-select,]
attach(train)
- R中的logit回归
lg<-glm(bad_ind ~fico_score+bankruptcy_ind+tot_derog+age_oldest_tr+rev_util+ltv+veh_mileage,family=binomial(link='logit'))
summary(lg)
lg_ms<-step(lg,direction = "both")
summary(lg_ms)
- 生成预测概率
train$p <- predict(lmg1,train,type = "response")
summary(train$p)
test$p<-predict(lmg1, test,type = "response")
网友评论