Последовательный выбор признаков с помощью пользовательского критерия
inmodel = sequentialfs(fun,X,y)
inmodel = sequentialfs(fun,X,Y,Z,...)
[inmodel,history] = sequentialfs(fun,X,...)
[] = sequentialfs(...,param1,val1,param2,val2,...)
inmodel = sequentialfs(fun,X,y) выбирает подмножество функций от матрицы данных X тот лучше всего предсказывают данные в y путем последовательного выбора функций до нет никакого улучшения предсказания. Строки X соответствуйте наблюдениям; столбцы соответствуют переменным или функциям. y вектор-столбец значений отклика или меток класса для каждого наблюдения в XX и y должен иметь одинаковое число строк. fun указатель на функцию к функции, которая задает критерий, используемый, чтобы выбрать функции и определить, когда остановиться. Выход inmodel логический вектор, указывающий, какие признаки наконец выбраны.
Запуск с пустого набора функций, sequentialfs создает подмножества функции кандидата путем последовательного добавления каждой из опций, еще не выбранных. Поскольку каждый кандидат показывает подмножество, sequentialfs выполняет 10-кратную перекрестную проверку путем повторного вызова fun с различными учебными подмножествами X и y, XTRAIN и ytrain, и протестируйте подмножества X и y, XTEST и ytest, можно следующим образом:
criterion = fun(XTRAIN,ytrain,XTEST,ytest)
XTRAIN и ytrain содержите то же подмножество строк X и Y, в то время как XTEST и ytest содержите дополнительное подмножество строк. XTRAIN и XTEST содержите данные, взятые из столбцов X это соответствует текущему набору функций кандидата.
Каждый раз это называется, fun должен возвратить скалярное значение criterion. Как правило, fun использование XTRAIN и ytrain чтобы обучаться или подобрать модель, затем предсказывает значения для XTEST использование той модели, и наконец возвращает некоторую меру расстояния или loss, тех ожидаемых значений от ytest. В вычислении перекрестной проверки для данного набора функций кандидата, sequentialfs суммирует значения, возвращенные fun и делит ту сумму на общее количество тестовых наблюдений. Это затем использует то среднее значение, чтобы оценить каждое подмножество функции кандидата.
Типичные меры потерь включают сумму квадратичных невязок для моделей регрессии (sequentialfs вычисляет среднеквадратическую ошибку в этом случае), и количество неправильно классифицированных наблюдений для моделей классификации (sequentialfs вычисляет misclassification уровень в этом случае).
Примечание
sequentialfs делит сумму значений, возвращенных fun через все наборы тестов общим количеством тестовых наблюдений. Соответственно, fun не должен делить его выходное значение на количество тестовых наблюдений.
После вычисления среднего criterion значения для каждого кандидата показывают подмножество, sequentialfs выбирает подмножество функции кандидата, которое минимизирует среднее значение критерия. Этот процесс продолжается до добавления большего количества опций, не уменьшает критерий.
inmodel = sequentialfs(fun,X,Y,Z,...) позволяет любое количество входных переменных XYZ, ... . sequentialfs выбирает признаки (столбцы) только от X, но в противном случае не налагает интерпретации на XYZ.... Все вводы данных, или вектор-столбцы или матрицы, должны иметь одинаковое число строк. sequentialfs вызовы fun с обучением и тестовыми подмножествами XYZ... можно следующим образом:
criterion = fun(XTRAIN,YTRAIN,ZTRAIN,...,
XTEST,YTEST,ZTEST,...)sequentialfs создает XTRAIN, YTRAIN, ZTRAIN..., XTEST, YTEST, ZTEST... путем выбора подмножеств строк XYZ.... fun должен возвратить скалярное значение criterion, но может вычислить то значение в любом случае. Элементы логического векторного inmodel соответствуйте столбцам X и укажите, какие признаки наконец выбраны.
[inmodel,history] = sequentialfs(fun,X,...) возвращает информацию, на которой признак выбран на каждом шаге. history скалярная структура со следующими полями:
Crit — Вектор, содержащий значения критерия, вычисляется на каждом шаге.
In — Логическая матрица, в который строка i указывает на функции, выбранные на шаге i.
[] = sequentialfs(..., задает дополнительное название параметра / пары значения из следующей таблицы.param1,val1,param2,val2,...)
| Параметр | Значение |
|---|---|
'cv' | Метод валидации использовался для расчета критерия каждого подмножества функции кандидата.
Значением по умолчанию является Так называемое использование wrapper methods функциональный |
'mcreps' | Положительное целое число, указывающее на количество повторений Монте-Карло для перекрестной проверки. Значением по умолчанию является |
'direction' | Направление последовательного поиска. Значением по умолчанию является |
'keepin' | Логический вектор или вектор из номеров столбцов, задающих функции, которые должны быть включены. Значение по умолчанию пусто. |
'keepout' | Логический вектор или вектор из номеров столбцов, задающих функции, которые должны быть исключены. Значение по умолчанию пусто. |
'nfeatures' | Количество функций, в который |
'nullmodel' | Логическое значение, указывая, действительно ли пустая модель (содержащий функции от |
'options' | Структура опций для итеративного последовательного алгоритма поиска, как создано
Чтобы вычислить параллельно, вам нужен Parallel Computing Toolbox™. |
Выполните последовательный выбор признаков для классификации шумных функций:
load fisheriris
rng('default') % For reproducibility
X = randn(150,10);
X(:,[1 3 5 7])= meas;
y = species;
c = cvpartition(y,'k',10);
opts = statset('Display','iter');
fun = @(XT,yT,Xt,yt)loss(fitcecoc(XT,yT),Xt,yt);
[fs,history] = sequentialfs(fun,X,y,'cv',c,'options',opts)
Start forward sequential feature selection:
Initial columns included: none
Columns that can not be included: none
Step 1, added column 5, criterion value 0.00266667
Step 2, added column 7, criterion value 0.00222222
Step 3, added column 1, criterion value 0.00177778
Step 4, added column 3, criterion value 0.000888889
Final columns included: 1 3 5 7
fs =
1×10 logical array
1 0 1 0 1 0 1 0 0 0
history =
struct with fields:
In: [4×10 logical]
Crit: [0.0027 0.0022 0.0018 8.8889e-04]
history.In
ans =
4×10 logical array
0 0 0 0 1 0 0 0 0 0
0 0 0 0 1 0 1 0 0 0
1 0 0 0 1 0 1 0 0 0
1 0 1 0 1 0 1 0 0 0crossval | cvpartition | stepwiselm | statset | relieff | fsrnca | fscnca | fscmrmr | fsulaplacian