了解如何评估一个LR模型的好坏 Mikezgzhao
LR简介 逻辑回归(英语:Logistic regression 或logit regression),即逻辑模型(英语:Logit model,也译作 “评定模型”、“分类评定模型”)是离散选择法模型之一,属于多重变量分析范畴,是社会学、生物统计学、 临床、数量心理学、计量经济学、市场营销等统计实证分析的 回归属于有监督学习中的一种方法。该方法的核心思想是从连续型统计数据中得到数学模型,然后将该数学模 型用于预测或者分类。该方法处理的数据可以是多维的。 线性模型对于输出的 y 没有界限,y 可以取任意大或者任意小(负数)的值,对于某些问题来说不够 adequate, 比如我们想得到 0 到 1 之间的 probability 输出,这时候就要用到比 linear regression 更加强大 的 logistic regression 了。 逻辑回归适用于因变量Y是两个结果(取值0,1), 因变量函数可以表示为: R中glm包(广义线性模型,Generalized Linear Models)提供了LR模型 > glm(response ~ explanantory_variables, family=binomial)
LR简介 logistic回归本质上是线性回归,只是在特征到结果的映射中加入了一层函数映射 一个机器学习的模型,实际上是把决策函数限定在某一组条件下,这组限定条件就决定了模型的假设空间。当然, 我们还希望这组限定条件简单而合理。而逻辑回归模型所做的假设是: 这里的 g(h)g(h) 是上边提到的 sigmoid 函数,相应的决策函数为: 选择0.5作为阈值是一个一般的做法,实际应用时特定的情况可以选择不同阈值,如果对正例的判别准确性要求高, 可以选择阈值大一些,对正例的召回要求高,则可以选择阈值小一些。
LR R使用 #s函数 f <- function(x) 1/(1+exp(-x)) curve(f, -10, 10) #准备数据 set.seed(1024) index <- which(iris$Species != 'setosa') data0 = iris[index,] data0 data0$group = ifelse(data0$Species == 'versicolor', 1, 0) data1 = data0[,-5] data1
LR R使用 #按照30%、70%来划分训练集和验证集 idx <- sample(x = 2, size = nrow(data1), replace = T, prob = c(.7, .3)) trans <- data1[idx == 1, ] test <- data1[idx == 2, ] lrdm <- glm(formula = group~., family=binomial(link=‘logit’), data = trans) ##模型建立 summary(lrdm) #模型参数:data.glm$coefficients #线性模型的预测数据:data.glm$linear.predictors #vip等于1的概率prob.vip: data.glm$fitted.values #线性拟合模型的残差:data.glm$residuals real<-test$group #验证集上运用模型 pre <- predict(lrdm, newdata = test, type = 'response') #计算测试集结果混淆矩阵 res <- data.frame(real,predict =ifelse(pre>0.5,1,0)) plot(res) #计算分类准确度 table(data.frame(predict =ifelse(pre>0.5,1,0), real))
模型评估一般方法 1.混淆矩阵 Confusion Matrix 1.1 准确率vs 错误率: accuracy = (TP+TN)/total error tate = (FP+FN)/total 1.2 召回率(覆盖率,正确预测的正样本/实际正样本) recall (sensitivity) = TP/AP 1.3 负例覆盖率 specificity = TN/AN
模型评估一般方法 2.ROC 和 AUC(AUC, Area Under the ROC Curve) 横轴 (1- specificity) = 1 - TN/AN = FP/AP 纵轴 recall (sensitivity) = TP/AP 最佳筛查界值(cut-off值)的确定, 一般选择似然比最大的阈值
模型评估一般方法 Lift(提升)和Gain(增益) K-S图 基尼系数
R语言LR模型评估 > summary(lrdm) Intercept 截距 Estimate 因子 std. Error就是标准差 Z value = estimate/std.error Pr P值 AIC值越小越好 Null deviance是在你估的系数(截 距项除外)都为0时的devuiance值 Residual deviance就是估计出的模 型的devuiance值 自由度为样本量n-你估计的系数个数
LR相关链接 线性分类器: https://zh.wikipedia.org/wiki/%E7%BA%BF%E6%80%A7%E5%88%86%E 7%B1%BB%E5%99%A8 逻辑回归链接: https://zh.wikipedia.org/wiki/%E9%82%8F%E8%BC%AF%E8%BF%B4%E 6%AD%B8 线性回归: https://zh.wikipedia.org/wiki/%E7%B7%9A%E6%80%A7%E5%9B%9E%E 6%AD%B8 模型评估: http://www.jianshu.com/p/41f434818ffc