Введение в выбор признаков

В этом разделе приводится введение в алгоритмы выбора признаков и описываются функции выбора признаков, доступные в Statistics and Machine Learning Toolbox™.

Алгоритмы выбора признаков

Feature selection уменьшает размерность данных, выбирая только подмножество измеренных функций (переменные предиктора), чтобы создать модель. Алгоритмы выбора признаков ищут подмножество предикторов, которые оптимально моделируют измеренные отклики, удовлетворяющие ограничениям, таким как требуемые или исключенные признаки и размер подмножества. Основные преимущества выбора признаков заключаются в повышении эффективности предсказания, обеспечении более быстрых и экономичных предикторов и обеспечении лучшего понимания процесса генерации данных [1]. Использование слишком многих функций может снизить эффективность предсказания, даже когда все функции релевантны и содержат информацию о переменной отклика.

Можно классифицировать алгоритмы выбора признаков по трем типам:

  • Тип фильтра Выбор признаков - алгоритм выбора признаков типа фильтра измеряет важность функции на основе характеристик функций, таких как отклонение функции и релевантность функции к отклику. Вы выбираете важные функции как часть шага предварительной обработки данных, а затем обучаете модель с помощью выбранных функций. Поэтому тип выбора признаков фильтра некоррелирован с алгоритмом настройки.

  • Тип обертки Выбора признаков - алгоритм выбора признаков обертки начинает обучение с помощью подмножества функций и затем добавляет или удаляет функцию с помощью критерия выбора. Критерий выбора непосредственно измеряет изменение производительности модели, которое является результатом добавления или удаления функции. Алгоритм повторяет обучение и улучшение модели, пока не будут удовлетворены его критерий остановки.

  • Embedded Type Feature Selection - алгоритм выбора признаков встраиваемого типа учит значимость функции как часть процесса обучения модели. Когда вы обучаете модель, вы получаете важность функций в обученной модели. Этот тип алгоритма выбирает функции, которые хорошо работают с конкретным процессом обучения.

В сложение можно классифицировать алгоритмы выбора признаков в зависимости от того, функции ли алгоритм последовательно. Алгоритм максимальной релевантности минимальной избыточности (MRMR) и ступенчатая регрессия являются двумя примерами алгоритма последовательного выбора признаков. Для получения дополнительной информации см. раздел «Последовательный выбор признаков».

Можно сравнить важность переменных предиктора визуально, создав графики частичной зависимости (PDP) и отдельные графики условного ожидания (ICE). Для получения дополнительной информации см. plotPartialDependence.

Для задач классификации, после выбора функций, можно обучить две модели (для примера, полная модель и модель, обученная с подмножеством предикторов) и сравнить точности моделей с помощью compareHoldout, testcholdout, или testckfold функций.

Выбор признаков предпочтительнее преобразования признака, когда исходные функции и их модули важны, и цель моделирования состоит в том, чтобы идентифицировать влиятельное подмножество. Когда присутствуют категориальные функции и числовые преобразования неуместны, выбор признаков становится основным средством уменьшения размерности.

Функции выбора признаков

Statistics and Machine Learning Toolbox предлагает несколько функций для выбора признаков. Выберите соответствующую функцию выбора признаков на основе вашей задачи и типов данных функций.

Тип фильтра Выбора признаков

ФункцияПоддерживаемая задачаПоддерживаемый тип данныхОписание
fscchi2КлассификацияКатегориальные и непрерывные функции

Исследуйте, является ли каждая переменная предиктора независимой от переменной отклика, используя отдельные тесты хи-квадрат, и затем оцените функции с помощью p значений статистики теста хи-квадрат.

Для примеров смотрите страницу с описанием функции fscchi2.

fscmrmrКлассификацияКатегориальные и непрерывные функции

Оцените функции последовательно с помощью алгоритма минимальной избыточности максимальной релевантности (MRMR).

Для примеров смотрите страницу с описанием функции fscmrmr.

fscnca*КлассификацияНепрерывные функции

Определите веса функции с помощью диагональной адаптации анализа соседних компонентов (NCA). Этот алгоритм лучше всего работает для оценки важности функции для основанных на расстоянии контролируемых моделей, которые используют парные расстояния между наблюдениями, чтобы предсказать реакцию.

Для получения дополнительной информации см. страницу с описанием функции fscnca и следующие темы:

fsrftestРегрессКатегориальные и непрерывные функции

Исследуйте важность каждого предиктора индивидуально с помощью F-test, а затем оцените функции с помощью p-значений F-test статистики. Каждый F-тест проверяет гипотезу о том, что значения отклика, сгруппированные по значениям переменных предиктора, взяты из населений с тем же средним значением против альтернативной гипотезы о том, что средства населения не все одинаковые.

Для примеров смотрите страницу с описанием функции fsrftest.

fsrnca*РегрессНепрерывные функции

Определите веса функции с помощью диагональной адаптации анализа соседних компонентов (NCA). Этот алгоритм лучше всего работает для оценки важности функции для основанных на расстоянии контролируемых моделей, которые используют парные расстояния между наблюдениями, чтобы предсказать реакцию.

Для получения дополнительной информации см. страницу с описанием функции fsrnca и следующие темы:

fsulaplacianНеконтролируемое обучениеНепрерывные функции

Оцените функции с помощью Laplacian Score.

Для примеров смотрите страницу с описанием функции fsulaplacian.

relieffКлассификация и регрессияЛибо все категориальные, либо все непрерывные функции

Оцените функции, используя алгоритм ReliefF для классификации и алгоритм RReliefF для регрессии. Этот алгоритм лучше всего работает для оценки важности функции для основанных на расстоянии контролируемых моделей, которые используют парные расстояния между наблюдениями, чтобы предсказать реакцию.

Для примеров смотрите страницу с описанием функции relieff.

sequentialfsКлассификация и регрессияЛибо все категориальные, либо все непрерывные функции

Последовательно выберите функции с помощью пользовательского критерия. Задайте функцию, которая измеряет характеристики данных для выбора функций и передает указатель на функцию sequentialfs функция. Можно задать последовательный выбор вперед или последовательный выбор назад при помощи 'Direction' аргумент пары "имя-значение". sequentialfs оценивает критерий с помощью перекрестной проверки.

* Вы также можете рассмотретьfscnca и fsrnca как встроенный тип функции выбора признаков, потому что они возвращают обученный объект модели, и вы можете использовать функции объекта predict и loss. Однако обычно вы используете эти функции объекта, чтобы настроить параметр регуляризации алгоритма. После выбора функций с помощью fscnca или fsrnca функция как часть шага предварительной обработки данных, вы можете применить другой алгоритм классификации или регрессии для вашей задачи.

Выбор признаков типа обертки

ФункцияПоддерживаемая задачаПоддерживаемый тип данныхОписание
sequentialfsКлассификация и регрессияЛибо все категориальные, либо все непрерывные функции

Последовательно выберите функции с помощью пользовательского критерия. Задайте функцию, которая реализует алгоритм контролируемого обучения или функцию, которая измеряет эффективность алгоритма обучения и передает указатель на функцию sequentialfs функция. Можно задать последовательный выбор вперед или последовательный выбор назад при помощи 'Direction' аргумент пары "имя-значение". sequentialfs оценивает критерий с помощью перекрестной проверки.

Для примеров смотрите страницу с описанием функции sequentialfs и следующие темы:

Выбор признаков внедренного типа

ФункцияПоддерживаемая задачаПоддерживаемый тип данныхОписание
DeltaPredictor свойство ClassificationDiscriminant объект моделиКлассификация линейного дискриминантного анализаНепрерывные функции

Создайте классификатор линейного дискриминантного анализа при помощи fitcdiscr. Обученный классификатор, возвращенный как ClassificationDiscriminant, сохраняет коэффициент, величину в DeltaPredictor свойство. Можно использовать значения в DeltaPredictor как меры предикторной важности. Этот классификатор использует два параметра регуляризации Гамма и Дельта, чтобы идентифицировать и удалить избыточные предикторы. Можно получить соответствующие значения для этих параметров при помощи cvshrink функцию или 'OptimizeHyperparameters' аргумент пары "имя-значение".

Для примеров смотрите следующие темы:

fitcecoc с templateLinearЛинейная классификация для многоклассового обучения с высокомерными даннымиНепрерывные функции

Обучите линейную модель классификации при помощи fitcecoc и линейные двоичные ученики, заданные как templateLinear. Задайте 'Regularization' из templatelinear как 'lasso' использовать регуляризацию лассо.

Для получения примера смотрите Найти хороший штраф Лассо с помощью перекрестной валидации. Этот пример определяет хорошую силу лассо-штрафа путем оценки моделей с различными значениями прочности с помощью kfoldLoss. Можно также оценить модели, используя kfoldEdge, kfoldMargin, edge, loss, или margin.

fitclinearЛинейная классификация для двоичного обучения с высоко-размерными даннымиНепрерывные функции

Обучите линейную модель классификации при помощи fitclinear. Задайте 'Regularization' из fitclinear как 'lasso' использовать регуляризацию лассо.

Для получения примера смотрите Найти хороший штраф за лассо с использованием Cross-Validated AUC. Этот пример определяет хорошую силу лассо-штрафа путем оценки моделей с различными значениями прочности с помощью значений AUC. Вычислите перекрестно проверенные вероятности апостериорных классов при помощи kfoldPredict, и вычислить значения AUC при помощи perfcurve. Можно также оценить модели, используя kfoldEdge, kfoldLoss, kfoldMargin, edge, loss, margin, или predict.

fitrgpРегрессКатегориальные и непрерывные функции

Обучите модель регрессии Гауссова процесса (GPR) при помощи fitrgp. Установите 'KernelFunction' аргумент пары "имя-значение" для использования автоматического определения релевантности (ARD). Доступные опции 'ardsquaredexponential', 'ardexponential', 'ardmatern32', 'ardmatern52', и 'ardrationalquadratic'. Найдите веса предиктора, взяв экспоненциальную из отрицательных выученных шкал длины, сохраненных в KernelInformation свойство.

Для примеров смотрите следующие темы:

fitrlinearЛинейная регрессия с высоко-размерными даннымиНепрерывные функции

Обучите линейную регрессионую модель при помощи fitrlinear. Задайте 'Regularization' из fitrlinear как 'lasso' использовать регуляризацию лассо.

Для примеров смотрите следующие темы:

lassoЛинейная регрессияНепрерывные функции

Обучите линейную регрессионую модель с регуляризацией Лассо при помощи lasso. Можно задать вес оптимизации lasso в зависимости от гребня при помощи 'Alpha' аргумент пары "имя-значение".

Для примеров смотрите страницу с описанием функции lasso и следующие темы:

lassoglmОбобщенная линейная регрессияНепрерывные функции

Обучите обобщенную линейную регрессионую модель с регуляризацией Лассо при помощи lassoglm. Можно задать вес оптимизации lasso в зависимости от гребня при помощи 'Alpha' аргумент пары "имя-значение".

Для получения дополнительной информации см. страницу с описанием функции lassoglm и следующие темы:

oobPermutedPredictorImportance* * от ClassificationBaggedEnsembleКлассификация с ансамблем мешанных деревьев принятия решений (для примера, случайного леса)Категориальные и непрерывные функции

Обучите пакетированный классификационный ансамбль с учениками деревьев при помощи fitcensemble и определение 'Method' как 'bag'. Затем используйте oobPermutedPredictorImportance Вычисление внебасковых оценок важности предиктора путем сочетания. Функция измеряет, насколько влиятельны переменные предиктора в модели при прогнозировании отклика.

Для примеров смотрите страницу с описанием функции и тему oobPermutedPredictorImportance.

oobPermutedPredictorImportance* * от RegressionBaggedEnsembleРегрессия с ансамблем мешанных деревьев принятия решений (для примера, случайного леса)Категориальные и непрерывные функции

Обучите мешанный регрессионный ансамбль с учениками деревьев при помощи fitrensemble и определение 'Method' как 'bag'. Затем используйте oobPermutedPredictorImportance Вычисление внебасковых оценок важности предиктора путем сочетания. Функция измеряет, насколько влиятельны переменные предиктора в модели при прогнозировании отклика.

Для примеров смотрите страницу с описанием функции oobPermutedPredictorImportance и выберите предикторы для случайных лесов.

predictorImportance* * от ClassificationEnsembleКлассификация с ансамблем деревьев решенийКатегориальные и непрерывные функции

Обучите классификационный ансамбль с учениками деревьев при помощи fitcensemble. Затем используйте predictorImportance вычислить оценки значения предиктора для ансамбля путем суммирования изменений риска из-за дробей на каждом предикторе и деления суммы на количество узлов ветви.

Для примеров смотрите страницу с описанием функции predictorImportance.

predictorImportance* * от ClassificationTreeКлассификация с деревом решенийКатегориальные и непрерывные функции

Обучите дерево классификации при помощи fitctree. Затем используйте predictorImportance вычислить оценки Значения Предиктора для дерева путем суммирования изменений риска из-за разбиения на каждый предиктор и деления суммы на количество узлов ветви.

Для примеров смотрите страницу с описанием функции predictorImportance.

predictorImportance* * от RegressionEnsembleРегрессия с ансамблем деревьев решенийКатегориальные и непрерывные функции

Обучите регрессионный ансамбль с учениками деревьев при помощи fitrensemble. Затем используйте predictorImportance вычислить оценки значения предиктора для ансамбля путем суммирования изменений риска из-за дробей на каждом предикторе и деления суммы на количество узлов ветви.

Для примеров смотрите страницу с описанием функции predictorImportance.

predictorImportance* * от RegressionTreeРегрессия с деревом решенийКатегориальные и непрерывные функции

Обучите регрессионное дерево при помощи fitrtree. Затем используйте predictorImportance вычислить оценки Значения Предиктора для дерева путем суммирования изменений средней квадратичной невязки (MSE) из-за разбиений на каждом предикторе и деления суммы на количество узлов ветви.

Для примеров смотрите страницу с описанием функции predictorImportance.

stepwiseglm***Обобщенная линейная регрессияКатегориальные и непрерывные функции

Подгонка обобщенной линейной регрессионой модели с использованием ступенчатой регрессии при помощи stepwiseglm. Также можно подгонять линейную регрессионую модель при помощи fitglm а затем скорректируйте модель при помощи step. Ступенчатая регрессия является систематическим методом для добавления и удаления членов из модели на основе их статистической значимости в объяснении переменной отклика.

Для получения дополнительной информации см. страницу с описанием функции stepwiseglm и следующие темы:

stepwiselm***Линейная регрессияКатегориальные и непрерывные функции

Подгонка линейной регрессионой модели с использованием ступенчатой регрессии при помощи stepwiselm. Также можно подгонять линейную регрессионую модель при помощи fitlm а затем скорректируйте модель при помощи step. Ступенчатая регрессия является систематическим методом для добавления и удаления членов из модели на основе их статистической значимости в объяснении переменной отклика.

Для получения дополнительной информации см. страницу с описанием функции stepwiselm и следующие темы:

* * Для древовидного алгоритма задайте 'PredictorSelection' как 'interaction-curvature' чтобы использовать тест взаимодействия для выбора лучшего разделения предиктора. Тест взаимодействия полезен в идентификации важных переменных при наличии многих нерелевантных переменных. Кроме того, если обучающие данные включают много предикторов, задайте 'NumVariablesToSample' как 'all' для обучения. В противном случае программное обеспечение может не выбрать некоторые предикторы, недооценив их важность. Для получения дополнительной информации см. fitctree, fitrtree, и templateTree.

***stepwiseglm и stepwiselm не являются функциями типа оболочки, поскольку вы не можете использовать их в качестве оболочки для другой функции обучения. Однако эти две функции используют алгоритм типа оболочки, чтобы найти важные функции.

Ссылки

[1] Гийон, Изабель и А. Элиссефф. «Введение в переменные и выбор признаков». Журнал исследований машинного обучения. Том 3, 2003, стр. 1157-1182.

См. также

(Bioinformatics Toolbox)

Похожие темы