如果成功和失败的概率恰好为 0.5,逻辑回归模型将如何反应?
How a Logistic Regression model reacts if the probability of success and failure are exactly 0.5?
我们知道逻辑回归模型的二元分类成功的默认阈值是 > 0.5.
如果成功和失败的预测概率恰好为 0.5,我很想知道该模型的输出。有人可以解释一下吗?
简单来说,就是模型对做决定没有信心。您可以根据您的问题选择 class 标签中的任何一个 - 您想要高精度还是高召回率?然而更系统的方法是使用ROC曲线来找到最佳阈值。
从理论的角度 - 你可以决定如何考虑这些样本 p = 0.5.
如果你问sklearn逻辑回归实现的决策边界 -
这是源码中的predict方法:
def predict(self, X):
"""
Predict class labels for samples in X.
Parameters
----------
X : array_like or sparse matrix, shape (n_samples, n_features)
Samples.
Returns
-------
C : array, shape [n_samples]
Predicted class label per sample.
"""
scores = self.decision_function(X)
if len(scores.shape) == 1:
indices = (scores > 0).astype(np.int)
else:
indices = scores.argmax(axis=1)
return self.classes_[indices]
你可以看到他们使用了argmax:indices = scores.argmax(axis=1)
--
这意味着如果有 2 个 class 概率为 0.5 则取第一个 (class 0);这就是 argmax 的工作方式。
scores = np.array([[0.5, 0.5]])
scores.argmax(axis=1)
Out[5]: array([0])
我们知道逻辑回归模型的二元分类成功的默认阈值是 > 0.5.
如果成功和失败的预测概率恰好为 0.5,我很想知道该模型的输出。有人可以解释一下吗?
简单来说,就是模型对做决定没有信心。您可以根据您的问题选择 class 标签中的任何一个 - 您想要高精度还是高召回率?然而更系统的方法是使用ROC曲线来找到最佳阈值。
从理论的角度 - 你可以决定如何考虑这些样本 p = 0.5.
如果你问sklearn逻辑回归实现的决策边界 -
这是源码中的predict方法:
def predict(self, X):
"""
Predict class labels for samples in X.
Parameters
----------
X : array_like or sparse matrix, shape (n_samples, n_features)
Samples.
Returns
-------
C : array, shape [n_samples]
Predicted class label per sample.
"""
scores = self.decision_function(X)
if len(scores.shape) == 1:
indices = (scores > 0).astype(np.int)
else:
indices = scores.argmax(axis=1)
return self.classes_[indices]
你可以看到他们使用了argmax:indices = scores.argmax(axis=1)
--
这意味着如果有 2 个 class 概率为 0.5 则取第一个 (class 0);这就是 argmax 的工作方式。
scores = np.array([[0.5, 0.5]])
scores.argmax(axis=1)
Out[5]: array([0])