模型评价:model.score 比。 ROC曲线(AUC指标)
Model evaluation : model.score Vs. ROC curve (AUC indicator)
我想使用两种度量来评估逻辑回归模型(二元事件):
1. model.score 和混淆矩阵,分类准确率达到 81%
2. ROC 曲线(使用 AUC)返回 50% 的值
这两个结果矛盾吗?那可能吗
我遗漏了一些东西,但仍然找不到
y_pred = log_model.predict(X_test)
accuracy_score(y_test , y_pred)
cm = confusion_matrix( y_test,y_pred )
y_test.count()
print (cm)
tpr , fpr, _= roc_curve( y_test , y_pred, drop_intermediate=False)
roc = roc_auc_score( y_test ,y_pred)
enter image description here
准确度分数的计算基于以下假设:如果预测概率超过 50%,则选择 class。这意味着您只查看众多案例中的 1 个案例(一个工作点)。假设您希望 class 将一个实例指定为“0”,即使它的概率大于 30%(如果您的 class 中的一个对您来说更重要,则可能会发生这种情况,并且它的先验概率非常低)。在这种情况下 - 你将有一个非常不同的混淆矩阵,具有不同的精度 ([TP+TN]/[ALL])。 ROC auc 分数检查所有这些工作点,并为您提供对整体模型的估计。 50% 的分数意味着该模型等于根据 classes 的先验概率随机选择 classes。您希望 ROC 高得多,说明您有一个好的模型。
所以在上面的例子中——你可以说你的模型没有很好的预测强度。事实上 - 更好的预测是将所有内容都预测为“1” - 在您的情况下,这将导致准确度超过 99%。
我想使用两种度量来评估逻辑回归模型(二元事件): 1. model.score 和混淆矩阵,分类准确率达到 81% 2. ROC 曲线(使用 AUC)返回 50% 的值
这两个结果矛盾吗?那可能吗 我遗漏了一些东西,但仍然找不到
y_pred = log_model.predict(X_test)
accuracy_score(y_test , y_pred)
cm = confusion_matrix( y_test,y_pred )
y_test.count()
print (cm)
tpr , fpr, _= roc_curve( y_test , y_pred, drop_intermediate=False)
roc = roc_auc_score( y_test ,y_pred)
enter image description here
准确度分数的计算基于以下假设:如果预测概率超过 50%,则选择 class。这意味着您只查看众多案例中的 1 个案例(一个工作点)。假设您希望 class 将一个实例指定为“0”,即使它的概率大于 30%(如果您的 class 中的一个对您来说更重要,则可能会发生这种情况,并且它的先验概率非常低)。在这种情况下 - 你将有一个非常不同的混淆矩阵,具有不同的精度 ([TP+TN]/[ALL])。 ROC auc 分数检查所有这些工作点,并为您提供对整体模型的估计。 50% 的分数意味着该模型等于根据 classes 的先验概率随机选择 classes。您希望 ROC 高得多,说明您有一个好的模型。 所以在上面的例子中——你可以说你的模型没有很好的预测强度。事实上 - 更好的预测是将所有内容都预测为“1” - 在您的情况下,这将导致准确度超过 99%。