使用Matlab中的AdaboostM1进行高特征选择,以降低计算复杂性

时间:2014-02-07 21:48:35

标签: matlab machine-learning adaboost

我正在Matlab中实现一种算法,该算法测试修改图像的检测精度。精确度由SVM提供。但我的问题是如何选择adaboost的高级功能,以降低计算复杂性。

详细地说,我有一个图像的特征向量(1xN),我不确定我是否可以在adaboost中使用类似的向量。我在Matlab中使用fitensemble函数,将此向量作为Xnumberens= 30,50,75,100'tree'作为参数。我应该得到D维新的特征向量。 我的问题是,如果我的数据输入中的观察是特征,那么,我应该在列向量中转换行向量,还是我完全错了?

在哪里可以找到新的特征向量,或者如何在结果模型中获取它?ens?

详细说明: “Boosting Feature Selection可用于选择最佳特征以降低计算复杂度。在D迭代之后,我们可以得到D维新特征向量, 然后它们将用于最终分类。“ 我认为我的特征值可能是观察,我只有一列与该图像相关。 Adaboost应该返回一个维度为D的新特征向量。 例如:如果我的初始特征向量F的长度为256,那么在使用30次迭代的情况下,我是否应该获得大小为30的新特征向量? F包含许多零和一些值,其中最大值可以等于100000。

1 个答案:

答案 0 :(得分:0)

对于功能选择,您可以检查ClassificationTree.template'NVarToSample'属性。默认情况下,fitensemble使用'all'来提升,用于装袋的预测数量的平方根。我不确定AdaBoostM1是什么情况。您可以尝试将其设置为正值D,而不是默认值'all'

mdl1 = ClassificationTree.template('NVarToSample','all'); 
ens = fitensemble(features,classLabels,'AdaBoostM1',30,'tree',...
       mdl1,'type','classification');

请注意,在上面的代码中,features的每一列代表一个变量,每行代表一个观察。

您还可以查看mathworks中的一些示例(1)(2)以获取更多详细信息。