Должны ли мы всегда делать резюме?

9

Мой вопрос: должен ли я делать резюме даже для относительно большого набора данных?

У меня относительно большой набор данных, и я буду применять алгоритм машинного обучения для набора данных.

Так как мой компьютер не быстрый, CV (и поиск по сетке) иногда занимает слишком много времени. В частности, SVM никогда не заканчивается из-за большого количества параметров настройки. Таким образом, если я делаю резюме, то мне нужно выбрать относительно небольшие данные.

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

Так что теперь у меня есть как минимум два варианта.

  1. сделать резюме на небольшой набор данных.
  2. используйте относительно большой обучающий набор и проверочный набор без резюме.
  3. другая идея.

Какая самая лучшая идея? Теоретические или практические мнения приветствуются.

Х. Синдо
источник
1
Этот вопрос, очевидно, должен быть CW.
Х. Синдо
1
Какой большой? Сколько наблюдений? Сколько функций / переменных / регрессоров?
Джим
1
Это зависит от ПК. А именно я не имею в виду "большие данные", которые требуют нескольких компьютеров.
Х. Синдо

Ответы:

3

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

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

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

Вот несколько вещей, которые вы можете рассмотреть, чтобы ускорить процесс:

  1. Тренируйте его с меньшим количеством функций. Используйте выбор функции и / или уменьшение размерности, чтобы уменьшить размер вашей проблемы
  2. Используйте предварительно кэшированное ядро ​​для SVM
  3. Используйте алгоритмы, которым не нужно выбирать гиперпараметры в сетке. Особенно линейные, такие как логистическая регрессия с штрафом гребня / лассо / эластичной сетки или даже линейный SVM. В зависимости от реализации эти классификаторы могут соответствовать моделям для всех гиперпараметров в выбранном пути за счет стоимости подгонки только одного
  4. использовать более быструю реализацию для вашего типа проблемы (вам придется гуглить это)

и даже с более медленным компьютером вы можете:

  1. Используйте больше ядер
  2. Использовать графический процессор
rep_ho
источник
2

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

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

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

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

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

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

oDDsKooL
источник