为简单起见 - 只需设置一个非常基本的逻辑回归
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'在一个方向。如果返回的概率保持不变,那么精度和不同阈值下的召回率是否也保持不变?
我一直用模型对此进行测试,并且发现当我改变拦截时精确度和召回率发生了巨大变化,但我不清楚这是否应该发生,如果是这样的话应该,为什么呢。
答案 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
,我的概率就会改变。