【问题标题】:ROC Curve is convexROC 曲线是凸的
【发布时间】:2015-08-28 13:48:34
【问题描述】:

我正在使用带有一个多类分类器“sub_grade”的逻辑回归来绘制默认频率的 ROC 图(和 AUC 计算)。假设 lcd 是一个包含初始数据的数据框。

Xtrain, Xtest, ytrain, ytest  =  train_test_split(X,y,test_size=0.50,random_state=123)
# Assign only sub_grade as a feature, Default as response
X = lcd['sub_grade']
y = lcd['Default']

Xtrain, Xtest, ytrain, ytest  =  train_test_split(X,y,test_size=0.50,random_state=123)

logreg = lm.LogisticRegression()
logreg.fit(Xtrain, ytrain)
probas = logreg.predict_proba(Xtest)

# Get classification probabilities from log reg 
y_probas = logreg.predict_proba(Xtest)[:,1]
# Generate ROC Curve from ytest and y_probas
fpr, tpr, thresholds= roc_curve(ytest, y_probas)

结果 ROC 曲线是凸的,AUC 分数约为 0.35。为什么是这样?我认为 ROC 曲线根据频率对分类进行排序。结果将意味着违约率最高的类别具有最低的预测发生概率。

我的解释正确吗?

【问题讨论】:

    标签: python roc auc


    【解决方案1】:

    更新:问题在于我如何使用 lm 分类器。如果特征分类器的顺序颠倒,则系数会改变符号。我一定不明白这一点。

    【讨论】:

      【解决方案2】:

      ROC-AUC 分数低于 0.5 意味着您的分类器预测比随机差,即您从训练数据中学习到的模式与后来在测试数据中发现的模式相反。

      这种情况很少发生,可以通过预测概率1 - current_probability 轻松纠正。

      可能发生这种情况的原因:

      • 训练和测试数据模式差异很大,或者没有真正的全局模式。
      • 您的模型非常难以过度拟合。

      在您的情况下,由于您只使用一个特征,因此不太可能由于参数过多而过度拟合,我猜您的特征和目标之间没有全局相关性,因此您只拟合噪声。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-27
        • 2018-01-03
        • 2019-12-26
        • 2014-07-20
        • 2012-05-02
        • 2018-04-25
        • 2019-02-09
        • 1970-01-01
        相关资源
        最近更新 更多