Skip to content

Преобразования Данных

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

Нормализация.

Нормализация — это процесс преобразования числовых данных в стандартный диапазон значений. Обычно этот диапазон лежит в пределах [0, 1] или [-1, 1]. Уравнение для нормализации выглядит следующим образом: x_norm = (x – x_min) / (x_max – x_min), где x_norm — нормализованное значение, x — исходное значение, \(x_min\) — минимальное значение в столбце или списке данных, а x_max — максимальное значение в том же диапазоне. Нормализация служит двум основным целям: она ускоряет обработку данных и приводит все значения к одинаковому масштабу. Это особенно важно, поскольку различия в диапазоне значений в наборе данных могут значительно повлиять на оптимизацию, особенно на градиентный спуск.

Стандартизация

Стандартизация — это процесс преобразования числовых данных в значения, которые имеют нормальное распределение. В результате среднее значение этого диапазона будет равно 0, а стандартное отклонение — 1. Этот метод также известен как нормализация по z-баллам.

Уравнение для стандартизации выглядит следующим образом: x_std = (x – mu)/(sigma), где mu — это среднее значение столбца или списка значений, а sigma — стандартное отклонение того же столбца или списка.

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

Вот несколько практических правил, которые могут помочь вам сделать правильный выбор:

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

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

Реализация

python
from statistics import mean, stdev


def normalization(data: list, ndigits: int = 3) -> list:
    # (1)!
    x_min = min(data)
    x_max = max(data)
    return [round((x - x_min) / (x_max - x_min), ndigits) for x in data]


def standardization(data: list, ndigits: int = 3) -> list:
    # (2)!
    mu = mean(data)
    sigma = stdev(data)
    return [round((x - mu) / (sigma), ndigits) for x in data]
  1. Возвращает нормализованный список значений

  2. Возвращает стандартизированный список значений