数据集上的预期最佳性能

机器算法验证 机器学习
2022-03-20 01:46:22

假设我有一个简单的机器学习问题,比如分类。凭借视觉或音频识别方面的一些基准,作为人类,我是一个非常好的分类器。因此,我对分类器的性能有一个直觉。

但是有很多数据,有一点是我不知道我训练的分类器可以得到多好。这是我个人不是一个很好的分类器的数据(例如,从 EEG 数据中对一个人的情绪进行分类)。对我的问题有多难有一个直觉是不可能的。

现在,如果我遇到机器学习问题,我想知道我能做到多好。有什么原则性的方法吗?你会怎么做?

可视化数据?从简单的模型开始?从非常复杂的模型开始,看看我是否可以过拟合?如果你想回答这个问题,你在寻找什么?你什么时候停止尝试?

3个回答

我不知道这是否算作答案...

这是让你彻夜难眠的一个问题。你能建立一个更好的模型吗?Phd-comics 总结的很好(不知道能不能上传漫画,所以直接链接了)

根据我通过参加机器学习竞赛获得的个人经验,这是一条经验法则。

想象一下,给你一个分类任务。坐下来,用一个小时或更短的时间集思广益,看看你将如何解决这个问题,并了解该领域的最新技术。根据这项研究建立一个模型,最好是一个已知稳定且没有太多参数调整的模型。由此产生的性能将大约是最大可实现性能的 80%。

该规则基于所谓的帕累托原理,该原理也适用于优化。给定一个问题,您可以创建一个快速执行合理的解决方案,但从那时起,改进与时间努力的比率迅速下降。

最后的话:当我阅读有关新分类算法的论文时,我希望作者将他们的新品种与这种“帕累托优化”方法进行比较,即我希望他们花费合理的时间来使最先进的方法发挥作用(有些需要或多或少的参数优化)。不幸的是,许多人不这样做。

传统的方法是考虑 ROC 及其下的面积(AUC)。这种方法背后的基本原理是,特定假阳性率的真阳性率越高,分类器就越好。综合所有可能的误报率可以为您提供一个整体衡量标准。

如果有某种方法可以让您可视化您的数据,那是最好的方案,但并非所有数据都可以以相同的方式可视化,因此您可能需要找到自己的方式来投影可以帮助您理解数据的数据更好的。

但是,一般来说,我通常会抽取一小部分数据,将其转换为 ARFF,然后尝试来自 WEKA 的不同聚类算法。然后,我只是看看哪种算法给了我更好的混淆矩阵。它给了我一个关于类的分离程度的提示,并让我能够研究为什么该特定算法对这些数据做得更好。我还更改了集群的数量(即我不只使用 k = 2,我使用 k = 3、4 等)。它让我知道数据中是否存在碎片,或者一个类是否比另一个更碎片化。如果您将训练点和测试点混合在一起进行聚类,您还可以测量哪些聚类由您的训练点表示。一些集群可能被过度代表,一些可能被低估,两者都可能导致学习分类器的问题。

始终检查您的训练准确性。如果你的训练准确率看起来不太好,那么错误分类的训练点也是一个很大的提示。