Говорят, что Господь Хануман увеличился до размеров горы и перелетел через узкий канал на Ланку. Приземлившись, он обнаруживает город, населенный королем Раваной и его последователями-демонами, поэтому он уменьшается до размеров муравья и пробирается в город; согласно индуистской мифологии. Это ясно указывает на актуальность масштабирования, и это то, что мы собираемся обсудить сегодня. «Масштабирование функций и его важность в машинном обучении».

Что, черт возьми, такое масштабирование функций?

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

Прежде чем мы продолжим изучение того, как, я думаю, более важно почувствовать интуицию и прояснить «почему».

Почему мы масштабируем функции?

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

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

Когда масштабировать функции?

Некоторые алгоритмы, такие как SVM, логистическая регрессия и KNN, которые используют метрику на основе расстояния (например, евклидово расстояние), требуют масштабирования признаков для обеспечения правильного прогноза. В то время как алгоритм на основе дерева, такой как дерево решений, случайный лес, XG-Boost не требует масштабирования функций.

Как вы можете масштабировать функции?

Есть три основных типа скейлеров, которые в значительной степени справляются со своей задачей (подробнее читайте здесь или здесь — отличные статьи)

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

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

3. Надежный масштабатор: этот масштабатор удаляет медиану и масштабирует данные в соответствии с диапазоном квантилей (Q3, значение 75% — Q1, значение 25%). Это уменьшает влияние выбросов.

Ссылка на API предварительной обработки Sklearn (стандартная библиотека машинного обучения Python)

Заключительное замечание

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

Надеюсь, что этот пост даст вам краткое описание того, что такое масштабирование, зачем и как его использовать. Я старался говорить простыми словами, предоставляя внешние ссылки на ресурсы там, где это необходимо. Спасибо за чтение.

Для тех, кто хочет попробовать на практике, проверьте https://www.kaggle.com/rtatman/data-cleaning-challenge-scale-and-normalize-data.