我有分类问题的数据集。我总共有50个班级。
nominee.acts_as_votable
我尝试使用SVM(线性和高斯内核)训练我的分类器。我对测试数据的准确性非常差65和72%。现在我想去一个神经网络。对于大型不平衡数据的任何机器学习模型和算法,您有什么建议吗?这对我非常有帮助
答案 0 :(得分:3)
您应该提供有关数据集功能和类分发的更多信息,这有助于其他人为您提供建议。 在任何情况下,我认为神经网络不适合这里,因为这个数据集太小了。
假设50%或更多的样本属于1类,那么我首先要寻找区分1类和非1类样本的分类器(二元分类)。该分类器应优于天真分类器(基准),该分类器随机选择具有对应于训练集类分布的先验的分类。 例如,假设有1,000个样本,其中700个属于1类,那么基准分类器将新样本分类为类别1,概率为700 / 1,000 = 0.7(就像不公平的抛硬币一样)。
一旦你找到一个具有良好准确性的分类器,下一阶段可以将非1类分类样本分类为其他49个类之一,假设这些类更平衡,那么我将从RF,NB和KNN开始。
答案 1 :(得分:0)
根据我的经验,处理不平衡类的最成功方法是:
更改输入分配:20000个样本(您拥有的示例的近似数量)不是一个很大的数字,因此您可以简单地使用频率较低的每个样本来更改数据集分布多次上课。根据许多类别,您可以设置从它们到例如的示例数量。训练集中各有6000或8000个。在这种情况下,请记住不要在测试和验证集上更改分发。
增加培训时间:在神经网络的情况下,当您无法改变输入分配时,我强烈建议您尝试长时间学习网络(例如1000个时期) )。在这种情况下,你必须记住正规化。我通常使用 dropout 和 l2 weight regulariser ,并通过随机搜索算法学习参数。
减少批量大小:在神经网络中减少批量大小的情况可能会提高不太频繁类别的性能。
更改您的损失功能 MAPE Crossentropy 也可以提高不太频繁的课程的准确性。
欢迎受邀测试不同的方法组合,例如随机搜索算法。