0

我正在使用带有一个多类分类器“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 曲线根据频率对分类进行排序。结果将意味着违约率最高的类别具有最低的预测发生概率。

我是否正确解释了这一点?

4

2 回答 2

0

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

于 2015-06-12T15:50:02.913 回答
0

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

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

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

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

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

于 2016-07-17T11:14:18.643 回答