分类准确率低,下一步怎么办?

机器算法验证 分类 支持向量机 特征选择 随机森林
2022-02-16 02:09:18

所以,我是 ML 领域的新手,我尝试做一些分类。我的目标是预测体育赛事的结果。我收集了一些历史数据,现在尝试训练分类器。我得到了大约 1200 个样本,其中 0.2 个是我为了测试目的而分离出来的,其他的我用不同的分类器进行网格搜索(包括交叉验证)。到目前为止,我已经尝试过使用线性、rbf 和多项式内核以及随机森林的 SVM。不幸的是,我无法获得显着大于 0.5 的准确度(与随机选择类相同)。这是否意味着我无法预测如此复杂事件的结果?或者我可以获得至少 0.7-0.8 的准确度?如果可行,那么接下来我应该研究什么?

  • 获取更多数据?(我最多可以将数据集放大 5 倍)
  • 尝试不同的分类器?(逻辑回归、kNN 等)
  • 重新评估我的功能集?是否有任何 ML 工具可供分析,哪些特征有意义,哪些没有意义?也许,我应该减少我的功能集(目前我有 12 个功能)?
4个回答

首先,如果您的分类器没有比随机选择做得更好,则存在特征和类之间根本没有联系的风险。在这种情况下问自己的一个好问题是,您或领域专家是否可以根据给定的特征推断出类别(精度高于随机分类器)。如果不是,那么获取更多数据行或更改分类器将无济于事。您需要做的是使用不同的功能获取更多数据。

另一方面,如果您认为推断类别所需的信息已经在标签中,您应该检查您的分类器是否存在高偏差或高方差问题。

为此,将验证误差和训练集误差绘制为训练示例的函数。

如果这些线似乎收敛到相同的值并且最后接近,那么您的分类器具有高偏差并且添加更多数据将无济于事。在这种情况下,一个好主意是更改分类器以获得更高方差的分类器,或者简单地降低当前分类器的正则化参数。

另一方面,如果这些线相距很远,并且您的训练集误差较低但验证误差较高,那么您的分类器的方差太高。在这种情况下,获取更多数据很可能会有所帮助。如果在获取更多数据后方差仍然过高,则可以增加正则化参数。

这是我在遇到像您这样的问题时会使用的一般规则。

干杯。

我建议在尝试分类之前退后一步,做一些探索性的数据分析。值得单独检查您的特征,看看是否与感兴趣的结果有任何关系 - 您拥有的特征可能与类标签没有任何关联。你怎么知道你拥有的功能是否有用?

您可以先进行假设检验或相关性分析来检验关系。为特征生成类特定的直方图(即,为同一轴上的给定特征绘制每个类的数据直方图)也可以是显示特征是否在两个类之间很好地区分的好方法。

重要的是要记住,不要让探索性分析的结果影响您的分类选择。根据先前对相同数据的探索性分析选择分类特征可能会导致过度拟合和有偏差的性能估计(请参阅此处的讨论),但探索性分析至少会让您了解您正在尝试执行的任务是否均匀可能的。

最好将数据分成训练数据和测试数据。

训练时你的训练误差下降了吗?如果没有,那么您的训练算法中可能存在错误。您希望测试集上的误差大于训练集上的误差,因此如果您的训练集上出现不可接受的高误差,那么成功的希望很小。

摆脱特征可以避免某些类型的过度拟合。但是,它不应该改善您的训练集上的错误。训练集上的低错误和测试集上的高错误可能表明您使用过度灵活的特征集进行了过度拟合。但是,通过交叉验证来检查这一点比在测试集上更安全。一旦根据测试集选择了功能集,它就不再作为测试集有效。

为什么不遵循“先看数据图”的原则。您可以做的一件事是两个协变量的两类条件密度的二维散点图。如果您查看这些并发现几乎没有可能表明缺乏可预测性的分离,您可以对所有协变量进行此操作。这让您对使用这些协变量进行预测的能力有了一些想法。如果你看到一些希望这些变量可以分开一点,那么就开始考虑线性判别式、二次判别式、核判别、正则化、树分类、SVM 等。