В этом разделе описывается последовательный выбор элементов и приводится пример последовательного выбора элементов с использованием пользовательского критерия и sequentialfs функция.
Общим методом выбора элементов является последовательный выбор элементов. Этот метод имеет два компонента:
Целевая функция, называемая критерием, который метод стремится минимизировать по всем возможным подмножествам признаков. Общими критериями являются средняя квадратичная ошибка (для регрессионных моделей) и частота неправильной классификации (для классификационных моделей).
Алгоритм последовательного поиска, который добавляет или удаляет элементы из подмножества кандидатов при оценке критерия. Поскольку исчерпывающее сравнение значения критерия во всех 2n подмножествах набора данных n-признаков обычно неосуществимо (в зависимости от размера n и стоимости объективных вызовов), последовательные поиски движутся только в одном направлении, всегда увеличивая или всегда сокращая набор кандидатов.
Метод имеет два варианта:
Последовательный прямой выбор (SFS), в котором элементы последовательно добавляются в пустой набор кандидатов до тех пор, пока добавление дополнительных элементов не уменьшит критерий.
Последовательный обратный выбор (SBS), при котором элементы последовательно удаляются из полного набора кандидатов до тех пор, пока удаление других элементов не увеличит критерий.
Toolbox™ статистики и машинного обучения предлагает несколько последовательных функций выбора функций:
Пошаговая регрессия - это метод последовательного выбора элементов, разработанный специально для подгонки методом наименьших квадратов. Функции stepwiselm и stepwiseglm использовать оптимизации, которые возможны только с критериями наименьших квадратов. В отличие от других алгоритмов последовательного выбора элементов, пошаговая регрессия может удалять добавленные элементы или добавлять удаленные элементы на основе критерия, заданного 'Criterion' аргумент пары имя-значение.
sequentialfs выполняет последовательный выбор элемента с использованием пользовательского критерия. Входные аргументы включают в себя данные предиктора, данные ответа и дескриптор функции для файла, реализующего функцию критерия. Можно определить функцию критерия, которая измеряет характеристики данных или производительность обучающего алгоритма. Дополнительные входные данные позволяют указать SFS или SBS, обязательные или исключенные элементы, а также размер подмножества элементов. Вызов функции cvpartition и crossval для оценки критерия в различных наборах кандидатов.
fscmrmr ранжирует функции с использованием алгоритма максимальной релевантности минимальной избыточности (MRMR) для проблем классификации.
В этом примере выбирается подмножество элементов с использованием пользовательского критерия, который измеряет прогнозирующую мощность для обобщенной задачи линейной регрессии.
Рассмотрим набор данных со 100 наблюдениями 10 предикторов. Генерировать случайные данные из логистической модели с биномиальным распределением ответов при каждом наборе значений для предикторов. Некоторые коэффициенты устанавливаются равными нулю, так что не все предикторы влияют на ответ.
rng(456) % Set the seed for reproducibility
n = 100;
m = 10;
X = rand(n,m);
b = [1 0 0 2 .5 0 0 0.1 0 1];
Xb = X*b';
p = 1./(1+exp(-Xb));
N = 50;
y = binornd(N,p);Подбор логистической модели к данным с помощью fitglm.
Y = [y N*ones(size(y))]; model0 = fitglm(X,Y,'Distribution','binomial')
model0 =
Generalized linear regression model:
logit(y) ~ 1 + x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10
Distribution = Binomial
Estimated Coefficients:
Estimate SE tStat pValue
_________ _______ ________ __________
(Intercept) 0.22474 0.30043 0.74806 0.45443
x1 0.68782 0.17207 3.9973 6.408e-05
x2 0.2003 0.18087 1.1074 0.26811
x3 -0.055328 0.18871 -0.29319 0.76937
x4 2.2576 0.1813 12.452 1.3566e-35
x5 0.54603 0.16836 3.2432 0.0011821
x6 0.069701 0.17738 0.39294 0.69437
x7 -0.22562 0.16957 -1.3306 0.18334
x8 -0.19712 0.17317 -1.1383 0.25498
x9 -0.20373 0.16796 -1.213 0.22514
x10 0.99741 0.17247 5.7832 7.3296e-09
100 observations, 89 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 222, p-value = 4.92e-42
Отображение отклонения посадки.
dev0 = model0.Deviance
dev0 = 101.5648
Эта модель является полной моделью со всеми элементами и начальным постоянным термином. При последовательном выборе элементов выполняется поиск подмножества элементов в полной модели со сравнительной прогностической мощностью.
Перед выбором элемента необходимо указать критерий для выбора элементов. При этом критерием является отклонение аппроксимации (обобщение остаточной суммы квадратов). critfun функция (показанная в конце этого примера) вызывает fitglm и возвращает отклонение посадки.
Если для этого примера используется файл сценария в реальном времени, critfun функция уже включена в конец файла. В противном случае необходимо создать эту функцию в конце файла .m или добавить ее в качестве файла по пути MATLAB.
Выбор элемента. sequentialfs вызывает функцию критерия через дескриптор функции.
maxdev = chi2inv(.95,1); opt = statset('display','iter',... 'TolFun',maxdev,... 'TolTypeFun','abs'); inmodel = sequentialfs(@critfun,X,Y,... 'cv','none',... 'nullmodel',true,... 'options',opt,... 'direction','forward');
Start forward sequential feature selection: Initial columns included: none Columns that can not be included: none Step 1, used initial columns, criterion value 323.173 Step 2, added column 4, criterion value 184.794 Step 3, added column 10, criterion value 139.176 Step 4, added column 1, criterion value 119.222 Step 5, added column 5, criterion value 107.281 Final columns included: 1 4 5 10
Итеративное отображение показывает уменьшение значения критерия при добавлении каждого нового элемента в модель. Конечным результатом является уменьшенная модель, содержащая только четыре из десяти исходных элементов: столбцы 1, 4, 5, и 10 из X, как указано в логическом векторе inmodel возвращено sequentialfs.
Отклонение уменьшенной модели выше, чем отклонение полной модели. Однако добавление любого другого отдельного элемента не уменьшит значение критерия более чем на абсолютный допуск, maxdev, задайте в структуре опций. Добавление элемента без эффекта уменьшает отклонение на величину, которая имеет распределение хи-квадрат с одной степенью свободы. Добавление значительного элемента приводит к большему изменению отклонения. По настройке maxdev кому chi2inv(.95,1), вы даете указания sequentialfs продолжать добавлять функции при условии, что изменение отклонения больше, чем ожидаемое случайным образом изменение.
Создайте уменьшенную модель с начальным постоянным членом.
model = fitglm(X(:,inmodel),Y,'Distribution','binomial')
model =
Generalized linear regression model:
logit(y) ~ 1 + x1 + x2 + x3 + x4
Distribution = Binomial
Estimated Coefficients:
Estimate SE tStat pValue
__________ _______ _________ __________
(Intercept) -0.0052025 0.16772 -0.031018 0.97525
x1 0.73814 0.16316 4.5241 6.0666e-06
x2 2.2139 0.17402 12.722 4.4369e-37
x3 0.54073 0.1568 3.4485 0.00056361
x4 1.0694 0.15916 6.7191 1.8288e-11
100 observations, 95 error degrees of freedom
Dispersion: 1
Chi^2-statistic vs. constant model: 216, p-value = 1.44e-45
Этот код создает функцию critfun.
function dev = critfun(X,Y) model = fitglm(X,Y,'Distribution','binomial'); dev = model.Deviance; end
sequentialfs | stepwiseglm | stepwiselm