1

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

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

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

4

2 回答 2

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(..) 文档中找到这样做的示例

于 2013-11-13T09:09:19.687 回答
0

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

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

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

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

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

于 2013-11-11T11:26:00.317 回答