机器学习——如何改进某些类的分类
Posted
技术标签:
【中文标题】机器学习——如何改进某些类的分类【英文标题】:Machine Learning -- how to improve the classification of certain classes 【发布时间】:2016-08-03 12:26:27 【问题描述】:我正在使用随机森林来解决分类问题。响应有 5 个类。所有类在训练集中均匀分布,但在测试数据集中,两个特定类占绝大多数。使其具有挑战性的是,在验证集中,我可以看到这两个类的准确率也最差。所以我的问题是,有没有办法提高这两个特定类的分类准确率,从而提高我的整体预测?
任何意见将不胜感激!
【问题讨论】:
【参考方案1】:一种简单的方法是更改目标函数,以便在对某些类别进行错误分类时产生更多/更少的损失。例如,假设预测标记为 Y,ground-truth 标记为 T(两个向量),那么通常的损失函数就是:
total_loss(Y,T) == \sum_n loss(y_n, t_n)
如上,误分类的惩罚对所有类都是一样的,可以修改为:
total_loss(Y,T) == \sum_n C(t_n) * loss(y_n, t_n)
其中 C(t_n) 表示分配给类 t_n 的权重。
然后您可以调整 C 以最大限度地提高开发集的性能,并希望看到测试集的改进(假设开发集的标签分布与测试集的标签分布相似)。
如果这听起来是正确的方法,您可能需要阅读一些有关决策理论(Bishop 的 PRML 书中的第 1.5 节)和成本敏感型学习(here 和 here)的知识。
【讨论】:
感谢您的回复!我认为这是有道理的,但是我如何使用 R 中的 randomForest 包来实现这一点? 我不是 R 专家。但是,请参阅这个 SE 问题和答案:stats.stackexchange.com/questions/46963/…。就个人而言,我将从第二个答案的解决方案 (1) 开始——“故意不平衡 [the] dataset”。以上是关于机器学习——如何改进某些类的分类的主要内容,如果未能解决你的问题,请参考以下文章