R中glm逻辑回归模型的确定阈值

use*_*594 6 r predict glm logistic-regression

我有一些预测变量和二进制目标的数据.例如:

df <- data.frame(a=sort(sample(1:100,30)), b= sort(sample(1:100,30)), 
                 target=c(rep(0,11),rep(1,4),rep(0,4),rep(1,11)))
Run Code Online (Sandbox Code Playgroud)

我使用了一个logistic regresion模型 glm()

model1 <- glm(formula= target ~ a + b, data=df, family=binomial)
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试预测输出(例如,相同的数据应该足够)

predict(model1, newdata=df, type="response")
Run Code Online (Sandbox Code Playgroud)

这生成概率数的向量.但我想预测实际的课程.我可以在概率数上使用round(),但这假设低于0.5的任何东西都是'0'类,而上面的任何东西都是'1'类.这是正确的假设吗?即使每个阶级的人口可能不相等(或接近相等)?或者有没有办法估算这个门槛?

Err*_*404 6

在glm模型中使用的最佳阈值(或截止)点是最大化特异性和灵敏度的点.此阈值点可能不会在模型中给出最高预测值,但不会偏向正面或负面.该ROCR软件包包含可以帮助您执行此操作的功能.检查performance()此包中的功能.它会让你得到你想要的东西.这是您期望获得的图片:

在此输入图像描述

在找到截止点之后,我通常自己编写一个函数来查找具有高于截止值的预测值的数据点的数量,并将其与它们所属的组匹配.

  • 你能提供一个更具体的代码来生成上面的图表吗?此外,对于取值介于0和1之间的概率,截止值如何在0到14之间? (5认同)

mer*_*011 4

确定良好模型参数(包括逻辑回归的“我应该设置什么阈值”)的黄金标准是交叉验证

总体思路是保留训练集的一个或多个部分,并选择最大化该保留集上正确分类数量的阈值,但维基百科可以为您提供更多详细信息。