Уровень статьи: начальный

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

В этой серии предварительной обработки:

Стандартизация данных — Краткое объяснение — для начинающих
Нормализация данных — Краткое объяснение — для начинающих
Горячее кодирование — Краткое объяснение — для начинающих
Порядковое кодирование — Краткое объяснение — для начинающих
Отсутствующие значения в предварительной обработке набора данных — Средний уровень
Токенизация и векторизация текста в НЛП — средний уровень

Обнаружение выбросов в предварительной обработке набора данных — средний уровень

Выбор функций в предварительной обработке данных —Дополнительно

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

Техника предварительной обработки — преобразование необработанных данных перед моделированием для повышения производительности.

rescale — изменение масштаба значений.

нормализация —масштабирование данных до общего диапазона.

функции —вводные переменные в модель.

Конвергенция —стабилизация параметров модели.

градиентный спуск –оптимизация путем выполнения градиентных шагов.

функция потерь — метрика, которую нужно минимизировать при обучении.

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

персептрон —ранняя модель одиночного нейрона.

Нормализация данных

Почему

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

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

B) Помощь в сходимости во время оптимизации градиентного спуска. Алгоритмы оптимизации, такие как градиентный спуск, делают «шаги», пропорциональные градиенту, чтобы минимизировать функцию потерь. Если функции сильно различаются по масштабу, это может привести к нестабильности обновлений. Нормализация помогает масштабировать градиенты, делая их более однородными, улучшая сходимость.

Как

Наиболее распространенным подходом является масштабирование минимум-максимум, при котором функции нормализуются в диапазоне 0–1 по следующей формуле:

x_normalized = (x — x_min) / (x_max — x_min)

Где x — исходное значение, а x_min и x_max — минимальное и максимальное значения. Это масштабируется пропорционально, чтобы соответствовать интервалу 0–1.

Некоторые другие методы нормализации, которые вы можете проверить: стандартизация Z-оценки, логарифмические преобразования и нормализация квантилей. Кроме того, вы также можете ознакомиться с моим интро стандартизация.

Дополнительные соображения

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

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

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

Полезный код Python

Использование MinMaxScaler библиотеки scikit-learn

import numpy as np
import pandas as pd
from sklearn.preprocessing import minmax_scale

# example df of 6 rows and 3 columns
df = pd.DataFrame(np.random.randn(6, 3))
normalized = minmax_scale(df)

print(normalized)

Это выведет следующее (фактические значения будут отличаться):

[[0.28577697 0.6581599  0.        ]
 [0.         1.         0.48624898]
 [0.17229142 0.49684344 0.57570335]
 [0.37777359 0.42279875 0.69525902]
 [1.         0.         0.08697903]
 [0.46528936 0.74879511 1.        ]]

И это все! Я оставлю вас с некоторыми «веселыми» мелочами 😊

Разное

  • «нормализация» относится к преобразованию данных, чтобы они были более регулярными, стандартизированными и согласованными со статистическими предположениями — следовательно, более «нормальными».
  • Нормализация используется в машинном обучении с моделей персептрона 1950-х годов. Первые пионеры нейронных сетей, такие как Фрэнк Розенблатт, осознали необходимость нормализации еще в 1950-х годах при разработке персептрона.