2014-02-07 7 views
1

Я реализую алгоритм в Matlab, который проверяет точность обнаружения измененных изображений. Точность обеспечивается SVM. Но моя проблема заключается в том, как выбирать высокие функции с помощью adaboost с целью снижения вычислительной сложности.Высокий выбор функции с AdaboostM1 в Matlab для уменьшения вычислительной сложности

Подробно, у меня есть вектор-функция (1xN) для изображения, и я не уверен, что могу использовать аналогичный вектор в adaboost. Я использую функцию fitensemble в Matlab с этим вектором как X, numberens= 30,50,75,100, 'tree' как параметры. Я должен получить D-мерные новые векторы признаков. Мой вопрос в том, являются ли наблюдения в моем вводе данных функциями, и поэтому я должен преобразовать вектор строки в вектор-столбец, или я совершенно не прав?

Где я могу найти новый вектор или как его получить в полученной модели?

Деталь: «Активизации Выбор компонентов может быть использовано для выбора оптимальных возможностей для уменьшения вычислительной сложности После итераций D, мы можем получить D-мерный новые векторов признаков, , то они будут использоваться для окончательной классификации.» Я думаю, что мои значения функций могут быть наблюдениями, и у меня есть только один столбец, относящийся к этому изображению. Adaboost должен вернуть мне новый вектор признаков с размером D. Например: если длина моего начального векторного объекта F равна 256, должен ли я получить новый вектор функции размера 30 в случае использования 30 итераций? F содержит много нулей и некоторые значения, где максимум может быть чем-то равным 100000.

ответ

0

Для выбора функции вы можете проверить 'NVarToSample' объект ClassificationTree.template. По умолчанию fitensemble использует 'all' для повышения, квадратный корень из числа предикторов для мешков. Я не уверен, что происходит с AdaBoostM1. Вы можете попробовать и установить его положительное значение D вместо стандартного 'all':

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

Примечание в коде выше, каждый столбец features представляет собой одну переменную, и каждая строка представляет одно наблюдение.

Вы также можете ознакомиться с некоторыми примерами (1) и (2) из mathworks для получения более подробной информации.

+0

Большое спасибо, но это не решит проблему. Я стараюсь быть более ясным. –