Документация Engee

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

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

Стандартизация, или нормализация Z-оценки

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

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

Стандартная оценка, также называемая Z-оценкой, — это величина (со знаком) среднеквадратичного отклонения, на которую значение наблюдения или точки данных превышает среднее значение наблюдаемой или измеряемой характеристики.

Стандартизацию можно выполнить с помощью выражения t = fit(ZScoreTransform, ...), за которым следует вызов StatsBase.transform(t, ...) или StatsBase.transform!(t, ...). standardize(ZScoreTransform, ...) — это краткая форма записи для выполнения обеих операций за один вызов.

# StatsAPI.fitMethod

fit(ZScoreTransform, X; dims=nothing, center=true, scale=true)

Подгоняет параметры стандартизации к вектору или матрице X и возвращает объект преобразования ZScoreTransform.

Именованные аргументы

  • dims: при значении 1 параметры стандартизации подгоняются по столбцам; при значении 2 они подгоняются построчно. Значение по умолчанию — nothing, что эквивалентно dims=2 с выдачей предупреждения о выводе из использования.

  • center: при значении true (по умолчанию) данные центрируются так, чтобы их среднее значение было равно нулю.

  • scale: при значении true (по умолчанию) данные масштабируются так, чтобы их дисперсия была равна единице.

Примеры

julia> using StatsBase

julia> X = [0.0 -0.5 0.5; 0.0 1.0 2.0]
2×3 Matrix{Float64}:
 0.0  -0.5  0.5
 0.0   1.0  2.0

julia> dt = fit(ZScoreTransform, X, dims=2)
ZScoreTransform{Float64, Vector{Float64}}(2, 2, [0.0, 1.0], [0.5, 1.0])

julia> StatsBase.transform(dt, X)
2×3 Matrix{Float64}:
  0.0  -1.0  1.0
 -1.0   0.0  1.0

Нормализация по единичному диапазону

Нормализация по единичному диапазону, также называемая нормализацией по минимуму и максимуму, — это альтернативный способ преобразования данных: признаки масштабируются так, чтобы они лежали в интервале [0; 1].

Нормализацию по единичному диапазону можно выполнить с помощью выражения t = fit(UnitRangeTransform, ...), за которым следует вызов StatsBase.transform(t, ...) или StatsBase.transform!(t, ...). standardize(UnitRangeTransform, ...) — это краткая форма записи для выполнения обеих операций за один вызов.

# StatsAPI.fitMethod

fit(UnitRangeTransform, X; dims=nothing, unit=true)

Подгоняет масштабные параметры к вектору или матрице X и возвращает объект преобразования UnitRangeTransform.

Именованные аргументы

  • dims: при значении 1 параметры стандартизации подгоняются по столбцам;

при значении 2 они подгоняются построчно. По умолчанию используется nothing.

  • unit: при значении true (по умолчанию) минимальные данные сдвигаются к нулю.

Примеры

julia> using StatsBase

julia> X = [0.0 -0.5 0.5; 0.0 1.0 2.0]
2×3 Matrix{Float64}:
 0.0  -0.5  0.5
 0.0   1.0  2.0

julia> dt = fit(UnitRangeTransform, X, dims=2)
UnitRangeTransform{Float64, Vector{Float64}}(2, 2, true, [-0.5, 0.0], [1.0, 0.5])

julia> StatsBase.transform(dt, X)
2×3 Matrix{Float64}:
 0.5  0.0  1.0
 0.0  0.5  1.0

Методы

# StatsBase.transformFunction

transform(t::AbstractDataTransform, x)

Возвращает стандартизированную копию вектора или матрицы x с использованием преобразования t.

# StatsBase.transform!Function

transform!(t::AbstractDataTransform, x)

Применяет преобразование t к вектору или матрице x на месте.

# StatsBase.reconstructFunction

reconstruct(t::AbstractDataTransform, y)

Возвращает восстановленные данные на основе вектора или матрицы y, ранее масштабированных с использованием преобразования t.

# StatsBase.reconstruct!Function

reconstruct!(t::AbstractDataTransform, y)

Выполняет восстановление в исходном масштабе на месте для вектора или матрицы y, ранее масштабированных с использованием преобразования t.

# StatsBase.standardizeFunction

standardize(DT, X; dims=nothing, kwargs...)

Возвращает стандартизированную копию вектора или матрицы X по измерениям dims с использованием преобразования DT, которое является подтипом AbstractDataTransform:

  • ZScoreTransform

  • UnitRangeTransform

Пример

julia> using StatsBase

julia> standardize(ZScoreTransform, [0.0 -0.5 0.5; 0.0 1.0 2.0], dims=2)
2×3 Matrix{Float64}:
  0.0  -1.0  1.0
 -1.0   0.0  1.0

julia> standardize(UnitRangeTransform, [0.0 -0.5 0.5; 0.0 1.0 2.0], dims=2)
2×3 Matrix{Float64}:
 0.5  0.0  1.0
 0.0  0.5  1.0

Типы

# StatsBase.UnitRangeTransformType

Нормализация по единичному диапазону

# StatsBase.ZScoreTransformType

Стандартизация (преобразование Z-оценки)