使用提升算法进行不平衡数据分类

时间:2013-11-10 09:52:14

标签: classification

我正在研究二进制数据分类问题。数据集不平衡,由92%的'false'标签和8%'true'标签组成。功能的数量是18,我有少量650个数据点。我想在matlab中使用像'GentleBoost'这样的提升算法来解决这个问题。我按照以下方式为先前分配制服:

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

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

2 个答案:

答案 0 :(得分:0)

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

1)改变目标函数,使用两个类的平均分类精度(或一些加权精度),使用不同的分类器,例如SVM,J4.5等。

2)当一个分类器难以解决问题时,装袋(带平衡自举采样)往往能很好地工作。

3)已知adaboost + SMOTE在不平衡数据集上表现良好。

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

答案 1 :(得分:0)

由于您使用统一的事先调用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

找到
相关问题