我正在研究二进制数据分类问题。数据集不平衡,由92%的'false'标签和8%'true'标签组成。功能的数量是18,我有少量650个数据点。我想在matlab中使用像'GentleBoost'这样的提升算法来解决这个问题。我按照以下方式为先前分配制服:
ada = fitensemble(Xtrain,Ytrain,'GentleBoost',10,'Tree','LearnRate',0.1,'previous','uniform');
但表现一直很差。我该如何设置参数?是否有必要设定成本?我怎么能这样做?有没有比这更好的分类器?
答案 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
找到