【问题标题】:imbalanced data classification with boosting algorithms使用提升算法的不平衡数据分类
【发布时间】:2013-11-22 04:35:16
【问题描述】:

我正在研究二进制数据分类问题。数据集是不平衡的,它由 92% 的“假”标签和 8% 的“真”标签组成。特征数量为 18,我有少量 650 个数据点。我想在 matlab 中使用像“GentleBoost”这样的增强算法来解决这个问题。我为之前分配制服如下:

ada = fitensemble(Xtrain,Ytrain,'GentleBoost',10,'Tree','LearnRate',0.1, 'prior', 'uniform');

但性能一直很差。我应该如何设置参数?是否需要设定成本?我该怎么做?有没有比这更好的分类器?

【问题讨论】:

    标签: classification


    【解决方案1】:

    由于您使用统一的先验调用 GentleBoost,因此所有样本都被同等对待。您应该使用经验先验,它根据类频率确定类概率。您应该按以下方式调用 fitensemble:

    ada = fitensemble(Xtrain,Ytrain,'GentleBoost',10,'Tree','LearnRate',0.1, 'prior', 'empirical');
    

    或者仅仅是因为经验先验是默认值:

    ada = fitensemble(Xtrain,Ytrain,'GentleBoost',10,'Tree','LearnRate',0.1);
    

    您还应该尝试找到最佳的学习者数量,10 不一定是最佳的。 可以在fitensemble(..) documentation

    找到这样做的示例

    【讨论】:

      【解决方案2】:

      根据经验,我发现更简单的方法通常效果最好。您是否首先尝试了以下方法(增加了复杂性),而不是尝试调整您的提升参数:

      1) 改变目标函数以使用两个类的平均分类准确率(或某些加权准确率),使用不同的分类器,例如 SVM、J4.5 等。

      2) 当问题太难由单个分类器解决时,装袋(使用平衡引导采样)往往工作得很好。

      3) 众所周知,adaboost + SMOTE 在不平衡的数据集上表现良好。

      PS:如果需要,我可以分享一些有用的参考资料 - 只有我知道。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-27
        • 1970-01-01
        • 2021-09-18
        • 2015-01-28
        • 2017-04-19
        • 2019-11-05
        • 2019-06-17
        • 2021-08-24
        相关资源
        最近更新 更多