Какие алгоритмы машинного обучения хороши для оценки того, какие функции важнее?

12

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

Особенности: A, B, C (всегда присутствует) и D, E, F, G, H (иногда присутствует)

A = 10, B = 10, C = 10                  outcome = 10
A = 8,  B = 7,  C = 8                   outcome = 8.5
A = 10, B = 5,  C = 11, D = 15          outcome = 178
A = 10, B = 10, C = 10, E = 10, G = 18  outcome = 19
A = 10, B = 8,  C = 9,  E = 8,  F = 4   outcome = 250
A = 10, B = 11, C = 13, E = 8,  F = 4   outcome = 320
...

Я хочу предсказать значение результата, и комбинация дополнительных параметров очень важна для определения результата. В этом примере присутствие E и F приводит к большому результату, тогда как присутствие E и G - нет. Какие алгоритмы или методы машинного обучения хороши, чтобы уловить это явление?

Бенджамин Крузье
источник
Под «иногда присутствующим» вы имеете в виду, что вы знаете их ценность лишь иногда? Или что они, как известно, не играют роли в большинстве случаев? Или, может быть, что-то еще?
Дэвид Дж. Харрис
@ DavidJ.Harris Под «иногда присутствует» я имею в виду, что конкретный пример обучения не обладает свойством. Это как если бы он был равен нулю. В моей задаче все мои функции будут положительными числами в заданном диапазоне (например, от 5 до 15 или от 100 до 1000).
Бенджамин Крузье
1
было бы неплохо посмотреть по этой ссылке eren.0fees.net/2012/10/22/…
erogol

Ответы:

14

Это одна из основных областей исследований в области машинного обучения, и она называется « Выбор функций» .

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

побитовое
источник
3

Насколько я понимаю, вы ищете меру переменной важности. Они имеют несколько разновидностей, основанных на нескольких различных теоретических подходах, но все они имеют сильные связи с методами, используемыми для оптимизации алгоритма, о котором вы говорите. Как правило, каждый алгоритм машинного обучения будет иметь метод канонической оптимизации; обратное распространение для нейронных сетей, последовательная минимальная оптимизация для SVM, различные информационные критерии и тесты статистической значимости для деревьев решений, включая значение хи-квадрат или примеси Джини. Конечно, для каждого из алгоритмов часто предлагаются другие более новые методы оптимизации.

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

  1. Сложность определения влияния данной переменной на выбор формы модели, учитывая, что выбор часто является самим стохастическим процессом. Переменные в некоторой степени влияют на выбор модели, так что даже если переменная не важна для окончательного прогноза в модели , это, возможно, решающим образом сформировало саму форму модели. Учитывая, что генерация самой модели часто является стохастической (оптимизируется с помощью оптимизации роя частиц или метода упаковки в мешки и т. Д.), Трудно понять, как именно данная переменная могла сформировать свою форму.

  2. Сложность выделения важности одной переменной, учитывая, что она может быть важна только в сочетании или взаимодействии с другой переменной.

  3. Некоторые переменные могут быть важны только для некоторых наблюдений. Отсутствие значимости в других наблюдениях может привести к путанице измерения общей важности, усредняя реальную разницу.

Также трудно получить непосредственно интерпретируемую метрику для переменной важности точно так, как это определено моделью, поскольку она может не давать единственного числа (особенно в случае упаковки в мешки). Вместо этого в этих случаях существует распределение важности для каждой переменной.

Одним из способов преодоления этих проблем может быть использование возмущения. Это способ анализа вашей окончательной модели путем добавления случайных шумов к вашим переменным, а затем проверки того, как это влияет на результаты. Преимущество состоит в том, что он позволяет вам находить, какие переменные наиболее важны эмпирически, путем моделирования - отвечая на вопрос, какие переменные больше всего разрушат предсказание, если его удалить. Недостатком является то, что существует высокая вероятность того, что даже если переменные были удалены / возмущены, модель (при повторном обучении) могла бы использовать другие переменные для воссоздания их эффекта, а это означает, что мера «важности переменной», которую вы выводите, все еще только истинно указывает на важность вашей обученной модели, но не общую важность для всех возможных моделей.

analystic
источник
3

Как упоминает @Bitwise, выбор объектов или извлечение функций сами по себе являются огромной областью исследований, и существует множество способов сделать это.

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

Множественная регрессия, вероятно, самая старая техника. Идея состоит в том, чтобы подобрать модель для описания ответа от предикторов и оставить только предикторы, которые имеют большое влияние на отклик (большой коэффициент пропорциональности). Здесь, вероятно , придется перекодировать отсутствие D, E, F и G , как D=0, E=0, F=0, G =0или что - то в этом роде.

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

gui11aume
источник
2

Я использую информационное усиление (также известное как взаимная информация). Мой консультант и я регулярно используем подход, описанный в этой статье Cohen, 2008, для анализа характеристик для классификации SVM.

Кайл.
источник
2

Случайные леса могут быть очень полезны для того, что вы хотите сделать. Пакет randomForest для R имеет функцию, которая вычисляет 2 показателя важности. Он также имеет возможность создавать некоторые графики частичной зависимости, чтобы вы могли визуально проверить предельное влияние, которое предиктор может оказать на ответ.

DCL
источник
1

Я здесь противный, но по причине. Задумывались ли вы о замене неоднородных наблюдений индикаторной переменной присутствует | not_present? Из вашего описания видно, что значение этого индикатора является допустимым признаком, поскольку наличие факторов от D до H неинформативно: то есть их наличие просто указывает на большие результаты.

JCB
источник