Как упорядочить выбор функций и оптимизацию гиперпараметров в конвейере машинного обучения?


14

Моя цель - классифицировать сигналы датчиков. Концепция моего решения на данный момент такова: i) Инженерные функции из необработанного сигнала ii) Выбор соответствующих функций с ReliefF и подходом кластеризации iii) Применение NN, Random Forest и SVM

Однако я попал в ловушку дилеммы. В ii) и iii) существуют гиперпараметры, такие как k-Nearest Neigbours для ReliefF или длина окна, для которой оценивается сигнал датчика, или количество скрытых единиц в каждом слое NN

Есть 3 проблемы, которые я вижу здесь: 1) Параметры выбора функции настройки будут влиять на производительность классификатора 2) Оптимизация гиперпараметров классификатора будет влиять на выбор функций. 3) Оценка каждой возможной комбинации конфигурации неразрешима.

Итак, мои вопросы: а) Могу ли я сделать упрощающее предположение, можно ли отделить параметры выбора функции настройки от параметров настройки классификатора? б) Есть ли другие возможные решения?


Я думаю, что настройка выбора функции развязки и настройки классификатора является действительной, поскольку эвристика дляiefF стремится максимизировать межклассовую дисперсию и минимизировать внутриклассовую дисперсию, что также указывает на хороший классификатор. Таким образом, настройка оптимальных параметров для рельефа F также делает «хороший классификатор» более «вероятным». Однако иметь математическую формулировку, подтверждающую эту идею, было бы очень хорошо.
Grunwalski

Конкретный вариант этого вопроса: должен ли выбор объектов быть частью процедуры кросс-валидации (как в: # для каждого набора гиперпараметров классификатора: # для каждого прогона резюме в k-кратном порядке: 1) выбор функции, 2) масштабирование функции, 3) подбор классификатора 4) прогнозировать на тестовом наборе?
Николас Рибл

1
@NikolasRieble Я только что написал ответ на первоначальный вопрос, а также включил в него ваш вопрос
Деннис Соемерс

Ответы:


14

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

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

На практике это может быть неосуществимо. В общем, если вы не можете позволить себе оценить все возможные комбинации, я бы порекомендовал:

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

  2. Выбор функций с гиперпараметрами, которые, возможно, не оптимизированы на 100%, но, по крайней мере, не слишком ужасны Если у вас уже есть хотя бы несколько прилично настроенный алгоритм машинного обучения, наличие хороших функций будет значительно важнее для вашей производительности, чем микрооптимизирующие гиперпараметры. Экстремальные примеры: если у вас нет функций, вы не можете ничего предсказать. Если у вас есть функция мошенничества, которая содержит метку класса, вы можете отлично классифицировать все.

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


Чтобы ответить на дополнительный вопрос, который Николас разместил в комментариях, рассматривая, как все эти вещи (выбор функций, оптимизация гиперпараметров) взаимодействуют с перекрестной проверкой в ​​k-кратном размере: я бы сказал, что это зависит.

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

  1. Повторите весь конвейер в каждом сгибе отдельно (например, в каждом сгибе, сделайте выбор функции + оптимизация гиперпараметра и модель обучения). Это означает, что перекрестная проверка в k-кратном режиме дает вам объективные оценки производительности этого полного конвейера .

  2. Разделите ваш начальный набор данных на «набор данных предварительной обработки» и «набор данных train / test». Вы можете сделать свой выбор функции + оптимизацию гиперпараметра в '' наборе данных предварительной обработки ''. Затем вы исправляете выбранные функции и гиперпараметры и выполняете перекрестную проверку в k-кратном порядке в «наборе данных поезда / теста». Это означает, что перекрестная проверка в k-кратном размере дает вам объективные оценки производительности вашего алгоритма ML с учетом фиксированного набора функций и значений гиперпараметров .

Обратите внимание, что оба решения приводят к несколько разным оценкам производительности. Какой из них более интересен, зависит от вашего варианта использования, зависит от того, как вы планируете внедрять свои решения для машинного обучения на практике. Если вы, например, компания, которая намеревается иметь полный набор возможностей для выбора + оптимизация гиперпараметров + обучение, проводимое автоматически каждый день / неделю / месяц / год / что угодно, вы также будете заинтересованы в выполнении этого завершения. трубопровод, и вам нужно первое решение.

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


Можете ли вы предоставить ссылки также?
Николас Рибл

1
В этом посте есть несколько фотографий известной книги: nodalpoint.com/not-perform-feature-selection . Те, кажется, согласны с моим «возможным решением 1». У меня нет ссылки обязательно для другого случая, кроме ... я? Я предоставил свои аргументы и мотивы, которые, на мой взгляд, подтверждаются, так что это ссылка: D
Деннис Соемерс

1
Эта глава ESL должна быть на 100% обязательной для чтения для любого прогнозирующего моделиста.
Мэтью Друри

Итак, что касается Soln 1, как вы получаете свой окончательный набор функций и гиперпараметры модели после выполнения выбора функций (fs) и оптимизации гиперпарама (ho) в несколько итераций cv? Кроме того, когда мы выполняем их в конце cv, запускаем ли мы сначала fs, а затем используем эти функции?
СМА

1
К-1

4

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

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

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

Итак, когда вы выполняете перекрестную проверку параметров, тогда вы эффективно выполняете перекрестную проверку и при выборе объектов.

Уже есть много моделей ML, которые так или иначе включают этот выбор функций.

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


0

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

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


Ты имеешь в виду, что он пытается до тех пор, пока не
сработает

Попытка в процедуре ML, а не случайно. На самом деле ML на самом деле немного хакерства как такового.
17
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.