如何解释和研究不平衡数据中完美的准确性,精确度,召回率,F1和AUC(我不信任)

时间:2018-06-15 17:01:01

标签: python machine-learning scikit-learn svm logistic-regression

我有一个很不平衡的多标签数据集。

结果出现意想不到的事情。正如预期的那样,使用逻辑回归分类器,具有更高频率的标签实现了合理的f1分数和auc分数(即:0.6-0.7),并且那些数据中表示少于10%的标签预期为f-1和0.5的0。对于auc-score。

但是当我使用SVC和朴素贝叶斯分类器运行相同的东西时,这些低频标签中的一些(例如:7000个样本中的一个,次要类可能有10个样本)显示100%准确度,f-1 ,精确,召回和auc-score,我不明白。鉴于这种低培训样本,我不相信这些完美的结果。我还尝试了不同的随机种子来分割训练和测试集,并得到了相同的结果。

量词

Logistic regression classifier
Pipeline(memory=None,
     steps=[('tfidf', TfidfVectorizer(analyzer='word', binary=False, decode_error='strict',
        dtype=<class 'numpy.int64'>, encoding='utf-8', input='content',
        lowercase=True, max_df=1.0, max_features=None, min_df=1,
        ngram_range=(1, 1), norm='l2', preprocessor=None, smooth_idf=True,
 ..._state=None, solver='sag', tol=0.0001,
          verbose=0, warm_start=False),
          n_jobs=1))])

Naive Bayes classifier
Pipeline(memory=None,
     steps=[('tfidf', TfidfVectorizer(analyzer='word', binary=False, decode_error='strict',
        dtype=<class 'numpy.int64'>, encoding='utf-8', input='content',
        lowercase=True, max_df=1.0, max_features=None, min_df=1,
        ngram_range=(1, 1), norm='l2', preprocessor=None, smooth_idf=True,
 ...assifier(estimator=MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True),
          n_jobs=1))])

SVC classifier
Pipeline(memory=None,
     steps=[('tfidf', TfidfVectorizer(analyzer='word', binary=False, decode_error='strict',
        dtype=<class 'numpy.int64'>, encoding='utf-8', input='content',
        lowercase=True, max_df=1.0, max_features=None, min_df=1,
        ngram_range=(1, 1), norm='l2', preprocessor=None, smooth_idf=True,
 ...lti_class='ovr', penalty='l2', random_state=None, tol=0.0001,
     verbose=0),
          n_jobs=1))])

2 个答案:

答案 0 :(得分:0)

对我来说,你的结果似乎至少可信。 Logistic回归趋向于数据的中值表征,找到一个方程来表征类之间的差异。鉴于非平凡数量的数据,它寻找适合该等式的最小误差。

SVC和贝叶斯对可辨别的边界更加敏感,即使远离“主流数据”。这些算法更多地依赖于每个类别的“我们对抗世界”(又名“一对一”)。我不会感到惊讶的是,他们可以找到一种合理的方法来区分一组十个元素和“其他一切”。

您能找到一个有用的可视化工具来显示每种方法找到的边界吗?如果没有,您是否可以至少可视化数据集,并使用颜色编码的观察结果?如果你可以看到一组十个点的明显分离,那么我期望 SVC或朴素贝叶斯找到可比的东西。

答案 1 :(得分:0)

您是否检查过这些指标计算了多少个样本?如果存在,例如,考虑到测试样品的数量很少,那么仅两个样品进行100%的测试就不那么奇怪了。

此外,由于您的数据不平衡,您是否考虑过采用诸如平衡精度或Mathews相关系数(MCC)之类的方法来深入了解预测性能?模型可以具有很高的AUC,而完全忽略少数派。如果这也与例如测试集中的多数类样本相吻合,那么这也可能导致这些意外结果。