Масштабирование функций. Что мне использовать: НОРМАЛИЗАЦИЯ или СТАНДАРТИЗАЦИЯ?

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

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

Например. одна функция может быть в килограммах, а другая - в миллиграммах.

В этот момент нас постоянно забивает эта мысль; «Как быть с такими особенностями?»

Простым и эффективным решением этой проблемы было бы МАСШТАБИРОВАНИЕ ФУНКЦИЙ.

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

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

  • Алгоритмы на основе градиента, такие как линейная регрессия, логистическая регрессия, нейронные сети и т. д., использующие для оптимизации градиентный спуск, требуют масштабирования функций до этапа обучения. Другими словами, мы можем сказать, что наличие признаков в аналогичном масштабе помогает градиентному спуску быстрее сходиться к минимумам.
  • Алгоритмы, на которые серьезно влияет дисперсия масштаба, — это алгоритмы на основе расстояния, такие как k-nn, k-means и SVM. Это связано с тем, что внутри они используют такие расстояния, как евклидово расстояние, манхэттенское расстояние, косинусное расстояние и т. д. между двумя точками данных, чтобы определить их сходство. Следовательно, всегда рекомендуется масштабировать данные перед их вводом в алгоритмы, основанные на расстоянии, чтобы избежать ошибочных результатов.
  • Деревья решений, случайные леса, XGBoost и т. д., входящие в состав алгоритмов на основе деревьев, более или менее не зависят от масштабирования функций, поскольку дерево решений разбивает узел на основе одной функции, т. е. в данном случае решение, принятое для разделения, не зависит от других функций в наборе данных. Следовательно, если мы используем древовидные алгоритмы, применение масштабирования функций к нашему набору данных может не значительно улучшить производительность нашей модели.

Двумя наиболее часто используемыми методами масштабирования объектов являются Нормализация и Стандартизация.

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

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

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

Теперь слон в комнате: «Когда использовать нормализацию и когда использовать стандартизацию?»

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

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

  • Тип проблемы, которую вы пытаетесь решить.
  • Тип алгоритма, который вы используете для своей проблемы.

Итак, попробуйте подогнать свою модель к необработанным, нормализованным и стандартизированным данным по отдельности и сравните результаты.

ПРИМЕЧАНИЕ. Независимо от того, какой метод вы используете, всегда масштабируйте свои данные «после»разделения Train-Test, чтобы избежать проблемы утечки данных.

Удачного обучения, ура!