Я вижу, что многие алгоритмы машинного обучения работают лучше при средней отмене и выравнивании ковариации. Например, нейронные сети имеют тенденцию сходиться быстрее, а K-Means обычно дает лучшую кластеризацию с предварительно обработанными функциями. Я не вижу, что интуиция за этими этапами предварительной обработки приводит к повышению производительности. Может кто-нибудь объяснить это мне?
61
Это правда, что предварительная обработка в машинном обучении является в некоторой степени черным искусством. В статьях не так много написано, почему несколько шагов предварительной обработки необходимы для его работы. Я также не уверен, поняли ли это в каждом случае. Чтобы сделать вещи более сложными, это сильно зависит от метода, который вы используете, а также от проблемной области.
Например, некоторые методы являются инвариантами аффинного преобразования. Если у вас есть нейронная сеть и вы просто применяете аффинное преобразование к вашим данным, сеть не потеряет и не получит ничего в теории. На практике, однако, нейронная сеть работает лучше всего, если входы центрированы и белые. Это означает, что их ковариация диагональна, а среднее - это нулевой вектор. Почему это улучшает вещи? Это только потому, что оптимизация нейронной сети работает более изящно, поскольку скрытые функции активации не насыщают так быстро и, следовательно, не дают практически нулевых градиентов на ранних этапах обучения.
Другие методы, например, K-Means, могут дать вам совершенно разные решения в зависимости от предварительной обработки. Это связано с тем, что аффинное преобразование подразумевает изменение метрического пространства: евклидово расстояние между двумя выборками будет различным после этого преобразования.
В конце концов, вы хотите понять, что вы делаете с данными. Например, отбеливание в компьютерном зрении и выборочная нормализация - это то, что человеческий мозг делает так же хорошо в своем конвейере зрения.
источник
Некоторые идеи, ссылки и графики того, почему нормализация ввода может быть полезна для ANN и k-средних:
К-значит :
Пример в Matlab:
(К вашему сведению: как я могу определить, является ли мой набор данных кластеризованным или некластеризованным (т.е. образующим один кластер )
Распределенная кластеризация :
Искусственная нейронная сеть (входы) :
Искусственная нейронная сеть (входы / выходы)
Интересно, что изменение единиц измерения может даже привести к появлению совершенно другой структуры кластеризации: Кауфман, Леонард и Питер Дж. Руссеув. «Поиск групп в данных: введение в кластерный анализ». (2005).
Кауфман и соавт. Продолжаем с некоторыми интересными соображениями (стр. 11):
источник
Почему работает функция масштабирования? Я могу привести вам пример (из Quora )
источник
Есть две отдельные проблемы:
а) изучение правильной функции, например, k-означает: масштаб ввода в основном определяет сходство, поэтому найденные кластеры зависят от масштабирования. регуляризация - например, регуляризация весов l2 - вы предполагаете, что каждый вес должен быть «одинаково маленьким» - если ваши данные не масштабируются «надлежащим образом», это не будет иметь место
б) оптимизация, а именно путем градиентного спуска (например, большинство нейронных сетей). Для градиентного спуска вам нужно выбрать скорость обучения ... но хорошая скорость обучения (по крайней мере, на 1-м скрытом слое) зависит от масштабирования входных данных: для небольших [соответствующих] входных данных обычно требуется больший вес, поэтому вам нужно больше обучения скорость для этих весов (чтобы добраться быстрее), и vv для больших входов ... так как вы хотите использовать только одну скорость обучения, вы масштабируете свои входные данные. (и отбеливание, т. е. декорирование, также важно по той же причине)
источник
Я заканчиваю « Нейронные сети Джеффри Хинтона для машинного обучения на Coursera», и он объясняет это в лекции 6b: «Пакет трюков для мини-градиентного спуска». Вы можете просмотреть видео без регистрации или входа.
источник
Эта статья рассказывает только о k-средних, но она довольно хорошо объясняет и доказывает необходимость предварительной обработки данных.
,
,
Источник: http://maxwellsci.com/print/rjaset/v6-3299-3303.pdf
источник
Предварительная обработка часто работает, потому что она удаляет свойства данных, которые не связаны с проблемой классификации, которую вы пытаетесь решить. Подумайте, например, о классификации звуковых данных из разных динамиков. Колебания громкости (амплитуды) могут быть несущественными, тогда как частотный спектр является действительно важным аспектом. Таким образом, в этом случае нормализация амплитуды будет действительно полезна для большинства алгоритмов ML, потому что она удаляет аспект данных, который не имеет отношения к делу и может привести к тому, что нейронная сеть будет соответствовать паразитным паттернам.
источник
Я думаю, что это делается просто для того, чтобы функция с большим значением не заслоняла эффекты объекта с меньшим значением при изучении классификатора. Это становится особенно важным, если функция с меньшими значениями фактически способствует разделению классов. Классификаторам, таким как логистическая регрессия, будет трудно определить границу решения, например, если она существует на микроуровне объекта, и у нас есть другие функции порядка миллионов . Также помогает алгоритму лучше сходиться. Поэтому мы не рискуем при их кодировании в наши алгоритмы. Классификатору гораздо легче узнать вклад (вес) характеристик таким образом. Также верно для K означает при использовании евклидовых норм (путаница из-за масштаба). Некоторые алгоритмы также могут работать без нормализации.
источник