我有一个用于分类问题的数据库。总共有50个类别。
Class1: 10,000 个样本 Class2: 10 个样本 Class3: 5 个样本 Class4: 35 个样本 . . . 以此类推。
我尝试使用SVM(线性和高斯核)来训练我的分类器。在测试数据上的准确率分别为65%和72%,非常差。现在我在考虑使用神经网络。您对处理大规模不平衡数据的机器学习模型和算法有什么建议吗?这对我来说将非常有帮助。
回答:
您应该提供更多关于数据集特征和类别分布的信息,这将有助于其他人为您提供建议。无论如何,我认为神经网络在这里不合适,因为这个数据集对于神经网络来说太小了。
假设50%或更多的样本属于类别1,那么我首先会寻找一个能够区分类别1和非类别1样本的分类器(二元分类)。这个分类器应该优于一个简单的分类器(基准),后者随机选择分类,其先验概率对应于训练集的类别分布。例如,假设有1,000个样本,其中700个属于类别1,那么基准分类器会以700/1,000=0.7的概率将新样本分类为类别1(就像不公平的抛硬币)。
一旦找到一个准确率较好的分类器,接下来可以将非类别1的样本分类为其他49个类别之一,假设这些类别更加平衡,那么我会从随机森林(RF)、朴素贝叶斯(NB)和K近邻(KNN)开始尝试。