Моя цель - классифицировать сигналы датчиков. Концепция моего решения на данный момент такова: i) Инженерные функции из необработанного сигнала ii) Выбор соответствующих функций с ReliefF и подходом кластеризации iii) Применение NN, Random Forest и SVM
Однако я попал в ловушку дилеммы. В ii) и iii) существуют гиперпараметры, такие как k-Nearest Neigbours для ReliefF или длина окна, для которой оценивается сигнал датчика, или количество скрытых единиц в каждом слое NN
Есть 3 проблемы, которые я вижу здесь: 1) Параметры выбора функции настройки будут влиять на производительность классификатора 2) Оптимизация гиперпараметров классификатора будет влиять на выбор функций. 3) Оценка каждой возможной комбинации конфигурации неразрешима.
Итак, мои вопросы: а) Могу ли я сделать упрощающее предположение, можно ли отделить параметры выбора функции настройки от параметров настройки классификатора? б) Есть ли другие возможные решения?
источник
Ответы:
Как вы уже сами наблюдали, ваш выбор функций (выбор функций) может повлиять на то, какие гиперпараметры для вашего алгоритма являются оптимальными, и какие гиперпараметры, выбранные для вашего алгоритма, могут повлиять на то, какой выбор функций будет оптимальным.
Так что, да, если вы действительно заботитесь о том, чтобы выжать каждый процент производительности из вашей модели, и вы можете позволить себе необходимый объем вычислений, лучшим решением, вероятно, будет выбор функций и настройка гиперпараметра «одновременно». Это, вероятно, не легко (в зависимости от того, как вы делаете выбор функции), хотя. То, как я представляю, как это работает, было бы похоже на использование различных наборов функций в качестве кандидатов и рассмотрение выбора одного набора функций из всех этих наборов кандидатов в качестве дополнительного гиперпараметра.
На практике это может быть неосуществимо. В общем, если вы не можете позволить себе оценить все возможные комбинации, я бы порекомендовал:
Слегка оптимизируйте гиперпараметры, просто чтобы убедиться, что вы не присваиваете слишком плохие значения некоторым гиперпараметрам. Часто это можно сделать вручную, если у вас есть хорошее интуитивное понимание ваших гиперпараметров, или с помощью очень короткой процедуры оптимизации гиперпараметров, использующей только набор функций, которые, как вы знаете, прилично хороши в противном случае.
Выбор функций с гиперпараметрами, которые, возможно, не оптимизированы на 100%, но, по крайней мере, не слишком ужасны Если у вас уже есть хотя бы несколько прилично настроенный алгоритм машинного обучения, наличие хороших функций будет значительно важнее для вашей производительности, чем микрооптимизирующие гиперпараметры. Экстремальные примеры: если у вас нет функций, вы не можете ничего предсказать. Если у вас есть функция мошенничества, которая содержит метку класса, вы можете отлично классифицировать все.
Оптимизируйте гиперпараметры с помощью функций, выбранных на шаге выше. Это должно быть хорошим набором функций сейчас, где, возможно, стоит немного оптимизировать гиперпарам.
Чтобы ответить на дополнительный вопрос, который Николас разместил в комментариях, рассматривая, как все эти вещи (выбор функций, оптимизация гиперпараметров) взаимодействуют с перекрестной проверкой в k-кратном размере: я бы сказал, что это зависит.
Всякий раз, когда вы используете данные в одном из сгибов для чего-либо вообще, а затем оцениваете производительность в этом же сгибе, вы получаете предвзятую оценку своей производительности (вы будете переоценивать производительность). Таким образом, если вы используете данные во всех сгибах для шага выбора функции, а затем оцениваете производительность для каждого из этих сгибов, вы получите смещенные оценки производительности для каждого из них (что не очень хорошо). Точно так же, если у вас есть оптимизация гиперпараметра на основе данных и вы используете данные из определенных сгибов (или всех сгибов), а затем оцениваете по этим же сгибам, вы снова получите необъективные оценки производительности. Возможные решения:
Повторите весь конвейер в каждом сгибе отдельно (например, в каждом сгибе, сделайте выбор функции + оптимизация гиперпараметра и модель обучения). Это означает, что перекрестная проверка в k-кратном режиме дает вам объективные оценки производительности этого полного конвейера .
Разделите ваш начальный набор данных на «набор данных предварительной обработки» и «набор данных train / test». Вы можете сделать свой выбор функции + оптимизацию гиперпараметра в '' наборе данных предварительной обработки ''. Затем вы исправляете выбранные функции и гиперпараметры и выполняете перекрестную проверку в k-кратном порядке в «наборе данных поезда / теста». Это означает, что перекрестная проверка в k-кратном размере дает вам объективные оценки производительности вашего алгоритма ML с учетом фиксированного набора функций и значений гиперпараметров .
Обратите внимание, что оба решения приводят к несколько разным оценкам производительности. Какой из них более интересен, зависит от вашего варианта использования, зависит от того, как вы планируете внедрять свои решения для машинного обучения на практике. Если вы, например, компания, которая намеревается иметь полный набор возможностей для выбора + оптимизация гиперпараметров + обучение, проводимое автоматически каждый день / неделю / месяц / год / что угодно, вы также будете заинтересованы в выполнении этого завершения. трубопровод, и вам нужно первое решение.
Если, с другой стороны, вы можете позволить себе выполнять выбор функции + оптимизацию гиперпараметра только один раз в своей жизни, а затем лишь несколько раз регулярно переучивать свой алгоритм (с фиксированными значениями набора функций и гиперпарама), тогда производительность только этот шаг будет то, что вас интересует, и вы должны пойти на второе решение
источник
Никто не упомянул подходы, которые делают настройку гиперпараметров и выбор функций одинаковыми, поэтому я буду говорить об этом. Для этого случая вы должны спроектировать все функции, которые вы хотите в самом начале, и включить их все.
Исследования, проводимые в настоящее время в статистическом сообществе, попытались сделать выбор характеристик критерием настройки. По сути, вы штрафуете модель таким образом, что у нее есть стимул выбирать только несколько функций, которые помогут ей сделать лучший прогноз. Но вы добавляете параметр настройки, чтобы определить, какой большой штраф вы должны понести.
Другими словами, вы позволяете модели выбирать функции для вас, и вы более или менее можете контролировать количество функций. Это фактически уменьшает объем вычислений, потому что вам больше не нужно решать, какие функции, а сколько функций и модель сделает все остальное.
Итак, когда вы выполняете перекрестную проверку параметров, тогда вы эффективно выполняете перекрестную проверку и при выборе объектов.
Уже есть много моделей ML, которые так или иначе включают этот выбор функций.
Короче говоря, люди пытались объединить настройку параметров и выбор функций одновременно, чтобы уменьшить сложность и иметь возможность выполнять перекрестную проверку
источник
Я думаю, что вы слишком много думаете об этом. Выбор функций, который является частью разработки функций, обычно полезен, но некоторые избыточные функции не слишком вредны на ранней стадии системы машинного обучения. Поэтому рекомендуется сначала создавать все значимые функции, а затем использовать их для выбора алгоритмов и моделей настройки. После настройки модели вы можете обрезать набор функций или принять решение об использовании новых функций.
Процедура машинного обучения на самом деле является итеративным процессом, в котором вы выполняете разработку функций, затем пробуете некоторые алгоритмы, затем настраиваете модели и возвращаетесь, пока вы не будете удовлетворены результатом.
источник