更改模型的拦截是否会改变其精度和召回?

时间:2017-01-04 01:21:26

标签: classification logistic-regression

为简单起见 - 只需设置一个非常基本的逻辑回归

P > 0

进行分析,为预测概率创建from sklearn.linear_model import SGDClassifier from sklearn.metrics import roc_auc_score, roc_curve, precision_recall_curve, classification_report train_grad_des = SGDClassifier(alpha=alpha_optimum, l1_ratio=l1_optimum, loss='log') train_grad_des.fit(train_x, train_y) 数组

score_y

如果我设置score_y = train_grad_des.predict_proba(test_x) precision, recall, thresholds = precision_recall_curve(test_y, score_y[:,1], pos_label=1) ,会改变train_grad_des.intercept_ = 100返回的概率吗?

似乎概率不应该改变,他们只会全部被移动' over'在一个方向。如果返回的概率保持不变,那么精度和不同阈值下的召回率是否也保持不变?

我一直用模型对此进行测试,并且发现当我改变拦截时精确度和召回率发生了巨大变化,但我不清楚这是否应该发生,如果是这样的话应该,为什么呢。

1 个答案:

答案 0 :(得分:1)

为什么概率不应该改变?如果我们剥离一些层并查看适合的模型(使用一个协变量的二元逻辑回归):

logit(p(y = 1|x)) = alpha + beta*x

其中logit是支持在第1类中的对数赔率,即:

logit(p(Y=1)) = log( p(Y=1)/p(Y=0) )

您可以将alpha(拦截)本身解释为属于某个类的先验概率。因此,如果您更改alpha,您可以预期更改日志赔率,以支持加入第1级。

另一种看待它的方式:

p(y=1|x) = 1 / (1 + e^(-(alpha + beta*x)))

显然,如果我改变alpha,我的概率就会改变。