【发布时间】:2016-08-03 12:26:27
【问题描述】:
我正在使用随机森林来解决分类问题。响应有 5 个类。所有类在训练集中均匀分布,但在测试数据集中,两个特定类占绝大多数。使其具有挑战性的是,在验证集中,我可以看到这两个类的准确率也最差。所以我的问题是,有没有办法提高这两个特定类的分类准确率,从而提高我的整体预测?
任何意见将不胜感激!
【问题讨论】:
标签: r machine-learning random-forest
我正在使用随机森林来解决分类问题。响应有 5 个类。所有类在训练集中均匀分布,但在测试数据集中,两个特定类占绝大多数。使其具有挑战性的是,在验证集中,我可以看到这两个类的准确率也最差。所以我的问题是,有没有办法提高这两个特定类的分类准确率,从而提高我的整体预测?
任何意见将不胜感激!
【问题讨论】:
标签: r machine-learning random-forest
一种简单的方法是更改目标函数,以便在对某些类别进行错误分类时产生更多/更少的损失。例如,假设预测标记为 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)的知识。
【讨论】: