Задача
Как монотонно преобразовать один числовой признак так, чтобы его эмпирическое распределение стало близким к равномерному на [0,1], а затем — близким к стандартному нормальному?
Равномерная шкала
Отсортируйте значения и замените наблюдение его нормированным рангом. Практический вариант, не достигающий точных границ:
u_i=(rank_i−1/2)/n.
Для непрерывного истинного распределения идеальная population-версия — U=F_X(X), которая имеет U[0,1].
Нормальная шкала
После этого примените обратную стандартную нормальную функцию распределения:
z_i=Φ^{-1}(u_i).
Полученные z имеют симметричную нормальную шкалу и сохраняют порядок исходных наблюдений.
Почему нельзя брать rank/(n−1) без оговорки
Если преобразование создаёт u=0 или u=1, Φ^{-1} даёт бесконечные значения. Поэтому используют внутренние plotting positions или clipping.
Связанные значения
При ties нужно выбрать соглашение: средние ранги сохраняют одинаковым исходным значениям одинаковый результат; случайное разбиение ties добавляет искусственный порядок. Transform, обученный на train-set, следует применять к test-set без повторного использования его меток или общей переразметки рангов, чтобы избежать утечки.
Борис Демешев и участники · mlearn_pro, задача 125 · CC BY 4.0. Идея rank/CDF-преобразования источника сохранена; граничные случаи дополнены.