【问题标题】:Machine Learning -- how to improve the classification of certain classes机器学习——如何改进某些类的分类
【发布时间】:2016-08-03 12:26:27
【问题描述】:

我正在使用随机森林来解决分类问题。响应有 5 个类。所有类在训练集中均匀分布,但在测试数据集中,两个特定类占绝大多数。使其具有挑战性的是,在验证集中,我可以看到这两个类的准确率也最差。所以我的问题是,有没有办法提高这两个特定类的分类准确率,从而提高我的整体预测?

任何意见将不胜感激!

【问题讨论】:

    标签: r machine-learning random-forest


    【解决方案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 节)和成本敏感型学习(herehere)的知识。

    【讨论】:

    • 感谢您的回复!我认为这是有道理的,但是我如何使用 R 中的 randomForest 包来实现这一点?
    • 我不是 R 专家。但是,请参阅这个 SE 问题和答案:stats.stackexchange.com/questions/46963/…。就个人而言,我将从第二个答案的解决方案 (1) 开始——“故意不平衡 [the] dataset”。
    猜你喜欢
    • 2020-05-04
    • 1970-01-01
    • 2023-04-04
    • 2021-04-14
    • 1970-01-01
    • 2011-10-04
    • 2020-06-28
    • 2017-09-28
    • 2012-03-14
    相关资源
    最近更新 更多