1 有没有办法处理数据不平衡?即,如果每个类中用于训练的数据不平衡,比如有些类有 50 个文档,而另一些有 200 个文档。如何处理?
2 如何处理大量类的分类问题?我有大约 50 多个课程(一旦有更多可用数据可能会增加)要学习。我正在尝试不同的算法和功能。有没有办法处理大量类的分类问题?
1 有没有办法处理数据不平衡?即,如果每个类中用于训练的数据不平衡,比如有些类有 50 个文档,而另一些有 200 个文档。如何处理?
2 如何处理大量类的分类问题?我有大约 50 多个课程(一旦有更多可用数据可能会增加)要学习。我正在尝试不同的算法和功能。有没有办法处理大量类的分类问题?
人们经常谈论数据不平衡,但总的来说,我认为您无需担心,除非您的数据确实不平衡(例如 <1% 的标签)。50/200 没问题。如果您在该数据集上构建逻辑回归模型,该模型将偏向多数类 - 但如果您没有给我有关要分类的输入的信息,则先验概率是新输入无论如何都是多数类的成员.
您希望能够回答的问题是您是否可以很好地区分班级 - 因此,如果您确实有少数班级,请不要使用“准确性”作为衡量标准。改用 ROC 曲线下的面积(通常称为 AUC)。
如果您的数据真的非常不平衡,您可以对少数类进行过度采样,或者使用称为“SMOTE”的东西来表示“Synthetic Minority Over-Sampling Technique”,这是同一事物的更高级版本。一些算法还允许您对少数类设置更高的权重,这实质上通过使少数类错误成本更高来激励模型关注少数类。
为了学会区分很多类,我认为(a)你需要有大量的例子来学习,(b)一个表达能力足以捕捉类差异的模型(比如深度神经网络,或增强的决策树) , 和 (c) 使用 softmax 输出。如果这些仍然不起作用,您可以尝试像 K-nearest-neighbors 这样的“无模型”方法,它将每个输入与最相似的标记数据进行匹配。但是,要使 kNN 起作用,您需要有一个非常合理的距离度量。