Вы когда-нибудь интересовались этой известной аксиомой: «Всегда масштабируйте свои функции»? Что ж, читайте дальше, чтобы получить быстрое графическое и интуитивно понятное объяснение!

Мотивация

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

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

Понимание на примере

Допустим, мы пытаемся предсказать ожидаемую продолжительность жизни человека (в годах), используя 2 числовые переменные / характеристики-предикторы: x1 и x2, где x1 - возраст человека, а x2 - его зарплата. Клири, x1 ‹< x2.

Это задача регрессии, в которой мы стремимся узнать веса theta1 и theta2 для x1 и x2 соответственно, минимизируя функцию стоимости - среднеквадратичную ошибку (MSE).

Если мы построим график theta1, theta2 и cost:

Рисунок слева: С масштабированием элементов
Функция стоимости представляет собой идеальный круг (в 2D) или полушарие (в 3D). Градиентный спуск может легко достичь минимумов (центра) за более короткое время.

Рисунок справа: Без масштабирования объекта
Функция стоимости превращается в эллипс, который растягивается / растягивается в направлении объекта меньшей величины.

️Расширенное направление ➡ Меньший уклон ➡ Для достижения минимума требуется больше шагов

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

В идеале мы хотели бы:
- быстро двигаться в направлении с небольшими градиентами и
- медленно двигаться в направлении с большими градиентами.

⭐️ Следовательно, для упрощения сходимости градиентного спуска требуется масштабирование элементов.

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

Резюме

Без масштабирования функций градиентный спуск потребует гораздо больше шагов для достижения минимумов. Другими словами, для схождения градиентного спуска потребуется много времени, что увеличит время обучения модели.
Чтобы этого избежать, всегда рекомендуется использовать масштабирование функций при работе с функциями стоимости на основе расстояния (такими как MSE, KMeans, SVM и т. д.).

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