Последовательный выбор признаков с помощью пользовательского критерия
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
вектор-столбец значений отклика или меток класса для каждого наблюдения в X
X
и 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,...)
позволяет любое количество входных переменных X
Y
Z
, ... . sequentialfs
выбирает признаки (столбцы) только от X
, но в противном случае не налагает интерпретации на X
Y
Z
.... Все вводы данных, или вектор-столбцы или матрицы, должны иметь одинаковое число строк. sequentialfs
вызовы fun
с обучением и тестовыми подмножествами X
Y
Z
... можно следующим образом:
criterion = fun(XTRAIN,YTRAIN,ZTRAIN,..., XTEST,YTEST,ZTEST,...)
sequentialfs
создает XTRAIN
, YTRAIN
, ZTRAIN
..., XTEST
, YTEST
, ZTEST
... путем выбора подмножеств строк X
Y
Z
.... 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 0
crossval
| cvpartition
| fscmrmr
| fscnca
| fsrnca
| fsulaplacian
| relieff
| statset
| stepwiselm