如何改善 ML 模型的结果?(垃圾邮件分类)

数据挖掘 逻辑回归 混淆矩阵
2022-03-15 05:33:08

我正在尝试建立一个模型来预测电子邮件是否为垃圾邮件/非垃圾邮件。建立逻辑回归模型后,我得到了以下结果:

          precision    recall  f1-score   support

         0.0       0.92      0.99      0.95       585
         1.0       0.76      0.35      0.48        74

    accuracy                           0.92       659
   macro avg       0.84      0.67      0.72       659
weighted avg       0.91      0.92      0.90       659

Confusion Matrix: 
 [[577   8]
 [ 48  26]]

Accuracy:  0.9150227617602428

F1 分数是我正在查看的指标。我很难解释结果:我认为结果非常糟糕!我可以问你如何改进它吗?我目前正在考虑一个查看电子邮件语料库(主题+语料库)的模型。

在尔万的回答之后:

我对数据集进行了过采样,这些是我的结果:

Logistic regression
              precision    recall  f1-score   support

         0.0       0.94      0.77      0.85       573
         1.0       0.81      0.96      0.88       598

    accuracy                           0.86      1171
   macro avg       0.88      0.86      0.86      1171
weighted avg       0.88      0.86      0.86      1171

Random Forest
              precision    recall  f1-score   support

         0.0       0.97      0.54      0.69       573
         1.0       0.69      0.98      0.81       598

    accuracy                           0.77      1171
   macro avg       0.83      0.76      0.75      1171
weighted avg       0.83      0.77      0.75      1171
1个回答

在您的结果中,您可以观察到数据不平衡的常见问题:分类器偏爱多数类 0(我假设这是类“ham”)。换句话说,它倾向于将“ham”分配给实际上是“垃圾邮件”(假阴性错误)的实例。你可以这样想:对于“简单”的实例,分类器给出正确的类,但对于困难的实例(分类器“不知道”),它选择多数类,因为它最有可能。

你可以做很多事情:

  • 对多数类进行欠采样或对少数类进行过采样是处理类不平衡的简单方法。
  • 更好的特征工程需要更多的工作,但通常是如何获得最佳改进。例如,我猜您将电子邮件中的所有单词都用作特征,对吗?所以你可能有太多的特征,这可能会导致过度拟合,尝试通过删除稀有词来降低维度。
  • 尝试不同的模型,例如朴素贝叶斯或决策树。顺便说一句,决策树是调查模型内部发生的事情的好方法。