Обсуждение участника:Imil Baltaniazov

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
 
(4 промежуточные версии не показаны)
Строка 1: Строка 1:
-
{{MediaWiki:NewUserMessage|Imil Baltaniazov}}
+
```
 +
{{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:56, 10 июля 2026 (MSD)}}
-
== Байесовская оптимизация ==
+
'''Нормализация признаков''' и '''стандартизация признаков''' (обобщённо — ''масштабирование признаков'', англ. ''feature scaling'') — методы [[Предобработка данных|предварительной обработки данных]], приводящие числовые [[Признак|признаки]] к сопоставимому диапазону значений или к сопоставимой статистической форме распределения. Масштабирование не меняет информативность признака в статистическом смысле (взаимную связь с целевой переменной), но существенно влияет на поведение многих алгоритмов [[Машинное обучение|машинного обучения]] — от скорости сходимости [[Градиентный спуск|градиентных методов]] до корректности работы [[Регуляризация|регуляризации]] и методов, основанных на расстояниях между объектами.
-
{{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:00, 10 июля 2026 (MSD)}}
+
В литературе термины употребляются не вполне единообразно. В узком смысле ''нормализацией'' называют приведение признака к фиксированному диапазону, чаще всего <tex>[0,1]</tex> (min-max scaling), а ''стандартизацией'' — приведение к нулевому среднему и единичной дисперсии (z-score). В широком смысле оба термина нередко используются как синонимы для обозначения любого масштабирования признаков; в данной статье эти понятия разграничиваются в узком, более строгом смысле. Наряду с ними рассматривается робастное масштабирование и ряд специализированных преобразований (MaxAbsScaler, PowerTransformer, QuantileTransformer), реализованных, в частности, в модуле <tt>sklearn.preprocessing</tt> библиотеки [[Scikit-learn|scikit-learn]].
-
'''''Байесовская оптимизация''''' ({{lang-en|Bayesian optimization}}) — метод глобальной оптимизации чёрных ящиков, основанный на построении вероятностной [[суррогатная модель|суррогатной модели]] целевой функции и последовательном выборе точек для оценки на основе так называемой [[функция приобретения|функции приобретения]]. Метод предназначен для задач, в которых целевая функция дорого стоит вычислительно или ресурсно, не имеет аналитического выражения и недоступна для дифференцирования.
+
== Постановка задачи ==
-
== Введение ==
+
Признаки, описывающие объекты реального мира, как правило, измерены в разных единицах и имеют разные диапазоны значений. Рассмотрим задачу [[Классификация|классификации]] клиентов банка, где каждый объект описывается двумя признаками — возрастом (в годах) и месячным доходом (в рублях):
-
Многие задачи в науке об анализе данных и инженерии сводятся к оптимизации функции, вычисление значения которой сопряжено с высокими затратами: запуск дорогостоящего эксперимента, длительное обучение [[нейронная сеть|нейронной сети]], симуляция физического процесса. В таких условиях классические методы оптимизации, требующие большого числа обращений к функции или знания её градиента, оказываются малопригодны. Байесовская оптимизация предлагает альтернативный подход: вместо того чтобы исследовать пространство параметров вслепую или по фиксированной сетке, метод на каждом шаге использует всю накопленную информацию о поведении функции, чтобы принять обоснованное решение о том, где провести следующее, потенциально самое информативное измерение.
+
{| class="wikitable"
 +
! Клиент !! Возраст, лет !! Доход, руб./мес.
 +
|-
 +
| Иванов || 25 || 45 000
 +
|-
 +
| Петров || 45 || 47 000
 +
|}
-
Наибольшую известность байесовская оптимизация получила как инструмент настройки [[гиперпараметр|гиперпараметров]] моделей машинного обучения, однако область её применения существенно шире: автоматизированное проектирование экспериментов, робототехника, разработка лекарственных препаратов, оптимизация промышленных процессов и архитектур нейронных сетей. Общей чертой всех этих задач является то, что каждое обращение к целевой функции это дорогостоящее действие, число которых должно быть минимизировано.
+
Возраст изменяется в диапазоне единиц-десятков, доход в диапазоне десятков тысяч. Если вычислить евклидово расстояние между объектами без предварительного масштабирования:
-
В основе метода лежит идея, восходящая к работам Й. Мокуса (J. Mockus) конца 1970-х годов и получившая широкое развитие с появлением алгоритма Efficient Global Optimization (EGO) в конце 1990-х. В последнее десятилетие байесовская оптимизация стала стандартным инструментом автоматического машинного обучения ([[AutoML]]) и лежит в основе многих популярных библиотек подбора гиперпараметров.
+
:: <tex>d = \sqrt{(45-25)^2 + (47000-45000)^2} = \sqrt{400 + 4\,000\,000} \approx 2000{,}1</tex>
-
== Постановка задачи ==
+
признак «возраст» практически не вносит вклада в итоговое расстояние: его слагаемое (400) на четыре порядка меньше слагаемого дохода (4 000 000). Для любого метода, опирающегося на расстояния между объектами — [[Метод ближайших соседей|метода ближайших соседей]], [[Метод опорных векторов|метода опорных векторов]], кластеризации методом k-средних, [[Метод главных компонент|метода главных компонент]] — это означает, что признак с большим численным диапазоном будет доминировать в решении независимо от его действительной значимости для задачи.
-
Рассматривается задача поиска глобального максимума функции <tex>f</tex>, заданной на компактном множестве <tex>\mathcal{X} \subseteq \mathbb{R}^d</tex>:
+
Аналогичная проблема возникает при обучении моделей [[Градиентный спуск|градиентными методами]]. Функция потерь как функция параметров модели образует в пространстве весов некоторую поверхность; при сильно различающихся масштабах признаков линии уровня этой поверхности превращаются в вытянутые эллипсы с большим числом обусловленности гессиана. Градиентный спуск на такой поверхности движется зигзагообразно, и для достижения минимума требуется существенно больше итераций либо очень малый шаг обучения. После масштабирования признаков линии уровня приближаются по форме к окружностям, направление антиградиента указывает более точно на минимум, и сходимость ускоряется — этот эффект хорошо задокументирован для [[Линейная регрессия|линейной]] и [[Логистическая регрессия|логистической регрессии]], а также для [[Нейронная сеть|нейронных сетей]].
-
:: <tex>x^{*} = \arg\max_{x \in \mathcal{X}} f(x)</tex>
+
== Нормализация (min-max scaling) ==
-
Без ограничения общности рассматривается задача максимизации; задача минимизации сводится к ней заменой <tex>f</tex> на <tex>-f</tex>. Функция <tex>f</tex> называется '''чёрным ящиком''' ({{lang-en|black box}}), если выполнены следующие условия:
+
'''Min-max scaling''' линейно преобразует признак так, чтобы его значения попали в заданный диапазон, чаще всего <tex>[0,1]</tex>:
-
* аналитическое выражение функции неизвестно, доступны только её значения в запрашиваемых точках («оракульный» доступ);
+
:: <tex>x' = \frac{x - x_{min}}{x_{max} - x_{min}}</tex>
-
* градиент <tex>\nabla f</tex> недоступен и не может быть эффективно вычислен;
+
-
* каждое обращение к функции требует значительных затрат времени, вычислительных ресурсов или денег;
+
-
* наблюдения могут быть зашумлены: <tex>y_i = f(x_i) + \varepsilon_i</tex>, где <tex>\varepsilon_i \sim \mathcal{N}(0,\sigma_n^2)</tex>.
+
-
Задача состоит в том, чтобы найти точку, максимально близкую к <tex>x^*</tex>, использовав как можно меньше обращений к <tex>f</tex>. Именно ограниченность бюджета оценок отличает постановку задачи байесовской оптимизации от классических задач непрерывной оптимизации, где число вычислений функции и градиента практически не ограничено.
+
где <tex>x_{min}</tex> и <tex>x_{max}</tex> — минимальное и максимальное значен
 +
ия признака на обучающей выборке. Для произвольного целевого диапазона <tex>[a,b]</tex> формула обобщается:
-
=== Сравнение с сеточным и случайным поиском ===
+
:: <tex>x' = a + \frac{(x - x_{min})(b-a)}{x_{max} - x_{min}}</tex>
-
Наиболее простые альтернативы байесовской оптимизации при подборе параметров [[сеточный поиск]] ({{lang-en|grid search}}) и [[случайный поиск]] ({{lang-en|random search}}). Их принципиальное отличие в том, что они не используют информацию о ранее полученных значениях функции при выборе следующей точки.
+
Метод сохраняет форму исходного распределения (все относительные расстояния между значениями пропорционально сжимаются или растягиваются), что удобно, когда диапазон признака имеет содержательный смысл например, для признаков, ограниченных по своей природе (доля, вероятность, пиксельная интенсивность 0–255), а также при подготовке входов для нейронных сетей с сигмоидными или иными ограниченными функциями активации.
 +
 
 +
Существенный недостаток — высокая чувствительность к выбросам, поскольку <tex>x_{min}</tex> и <tex>x_{max}</tex> определяются единственными экстремальными наблюдениями. Продемонстрируем это на выборке значений дохода (тыс. руб.): 30, 45, 50, 55, 60, 65, 400, где последнее значение — аномально высокий доход.
 +
 
 +
Здесь <tex>x_{min}=30</tex>, <tex>x_{max}=400</tex>, диапазон равен 370. После min-max масштабирования:
{| class="wikitable"
{| class="wikitable"
 +
! Исходное значение !! После Min-Max
|-
|-
-
! Критерий !! Сеточный поиск !! Случайный поиск !! Байесовская оптимизация
+
| 30 || 0,000
-
|-
+
-
| Использование истории наблюдений || Нет || Нет || Да
+
-
|-
+
-
| Стратегия выбора точек || Равномерная сетка || Случайная || На основе модели
+
|-
|-
-
| Масштабируемость по размерности || Плохая (экспонента) || Средняя || Хорошая (до ~20)
+
| 45 || 0,041
|-
|-
-
| Учёт неравнозначности параметров || Нет || Нет || Да
+
| 50 || 0,054
|-
|-
-
| Эффективность при малом бюджете || Низкая || Средняя || Высокая
+
| 55 || 0,068
|-
|-
-
| Теоретические гарантии сходимости || Нет || Нет || Да (GP-UCB)
+
| 60 || 0,081
|-
|-
-
| Возможность параллелизации || Да (тривиально) || Да (тривиально) || Ограничена
+
| 65 || 0,095
|-
|-
-
| Сложность реализации и настройки || Низкая || Низкая || Высокая
+
| 400 (выброс) || 1,000
|}
|}
-
Случайный поиск, как показали Бергстра и Бенжио (Bergstra, Bengio, 2012), как правило превосходит сеточный за счёт того, что не тратит ресурсы на менее значимые измерения пространства. Байесовская оптимизация идёт дальше: она направленно исследует область, руководствуясь текущими представлениями о форме функции, что даёт заметный выигрыш именно при малом бюджете вычислений.
+
Единственный выброс растянул диапазон настолько, что все «типичные» значения оказались сжаты в узкий интервал <tex>[0;\,0{,}095]</tex> и стали практически неразличимы для алгоритма. Это ключевое ограничение метода: перед его применением рекомендуется отдельно проверить данные на наличие выбросов (см. [[Выброс|выбросы]]).
-
== Интуитивная идея ==
+
В scikit-learn метод реализован классом <tt>MinMaxScaler</tt>:
-
Представим геодезиста, который ищет самую высокую точку неизвестной, покрытой туманом местности. Единственный доступный ему инструмент — дорогостоящее бурение: в произвольной точке можно пробурить скважину и точно узнать высоту рельефа именно в этой точке, но каждое бурение стоит времени и денег, поэтому число скважин строго ограничено.
+
<syntaxhighlight lang="python">
 +
from sklearn.preprocessing import MinMaxScaler
-
После нескольких первых, случайно расположенных скважин геодезист строит приближённую карту местности — не единственную «наиболее вероятную» поверхность, а целое семейство правдоподобных поверхностей, согласующихся с уже полученными измерениями. В точках рядом с уже пробуренными скважинами карта достаточно уверенная — рельеф там хорошо предсказывается. В удалённых, ещё не исследованных областях карта крайне неопределённа: там может скрываться как равнина, так и высочайшая вершина.
+
scaler = MinMaxScaler(feature_range=(0, 1))
 +
X_scaled = scaler.fit_transform(X)
 +
</syntaxhighlight>
-
Выбирая место следующей скважины, геодезист балансирует между двумя стратегиями. Он может бурить там, где карта предсказывает наибольшую высоту (эксплуатация уже накопленных знаний), либо там, где неопределённость максимальна и потенциально скрывается сюрприз (исследование). Именно эта комбинация — «бурить там, где, по нашим представлениям, скорее всего находится вершина, с поправкой на то, что неисследованные места могут преподнести неожиданность» — и есть суть байесовской оптимизации. Роль карты играет [[суррогатная модель]] (обычно [[гауссовский процесс]]), а роль правила выбора следующей скважины — [[функция приобретения]].
+
== Стандартизация (z-score) ==
-
== Компоненты метода ==
+
'''Стандартизация''' (z-score normalization) центрирует признак относительно среднего и масштабирует его по стандартному отклонению:
-
=== Суррогатная модель: гауссовский процесс ===
+
:: <tex>x' = \frac{x - \mu}{\sigma}</tex>
-
Наиболее распространённой суррогатной моделью в байесовской оптимизации выступает [[гауссовский процесс]] (Gaussian Process, GP) — распределение вероятностей на пространстве функций, полностью определяемое функцией среднего <tex>m(x)</tex> и ковариационной функцией (ядром) <tex>k(x,x')</tex>:
+
где
-
:: <tex>f(x) \sim \mathcal{GP}\big(m(x),\, k(x,x')\big)</tex>
+
:: <tex>\mu = \frac{1}{n}\sum_{i=1}^{n} x_i, \qquad \sigma = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(x_i - \mu)^2}</tex>
-
На практике часто принимают <tex>m(x)=0</tex>, а всю содержательную информацию о гладкости и масштабе изменчивости функции кодируют в ядре. Типичный выбор квадратично-экспоненциальное (гауссово) ядро
+
После преобразования признак имеет нулевое среднее и единичную дисперсию: <tex>\mathbb{E}[x']=0</tex>, <tex>\mathrm{Var}[x']=1</tex>. Величина <tex>x'</tex> показывает, на сколько стандартных отклонений исходное значение отстоит от среднего, что делает интерпретацию наглядной при приближённо [[Нормальное распределение|нормальном распределении]] признака: согласно правилу «трёх сигм» около 68 % значений попадают в интервал <tex>[-1,1]</tex>, около 95 % в <tex>[-2,2]</tex>. При этом сама по себе стандартизация не делает распределение нормальным — она лишь центрирует и масштабирует его, сохраняя исходную форму (асимметрию, эксцесс).
-
:: <tex>k(x,x') = \sigma_f^2 \exp\left(-\frac{\|x-x'\|^2}{2\ell^2}\right)</tex>
+
Продолжим пример с доходом. Для выборки {30, 45, 50, 55, 60, 65, 400} среднее <tex>\mu \approx 100{,}71</tex>, стандартное отклонение <tex>\sigma \approx 122{,}63</tex>. После стандартизации:
-
или семейство ядер Матерна, обеспечивающих менее жёсткое предположение о гладкости. Параметры ядра — длина корреляции <tex>\ell</tex>, дисперсия сигнала <tex>\sigma_f^2</tex> и дисперсия шума <tex>\sigma_n^2</tex> — подбираются максимизацией логарифма маргинального правдоподобия:
+
{| class="wikitable"
 +
! Исходное значение !! После Z-score
 +
|-
 +
| 30 || −0,577
 +
|-
 +
| 45 || −0,454
 +
|-
 +
| 50 || −0,414
 +
|-
 +
| 55 || −0,373
 +
|-
 +
| 60 || −0,332
 +
|-
 +
| 65 || −0,291
 +
|-
 +
| 400 (выброс) || 2,441
 +
|}
-
:: <tex>\log p(\mathbf{y}\mid X) = -\frac{1}{2}\mathbf{y}^\top (K+\sigma_n^2 I)^{-1}\mathbf{y} - \frac{1}{2}\log\left|K+\sigma_n^2 I\right| - \frac{t}{2}\log 2\pi</tex>
+
По сравнению с min-max масштабированием типичные значения распределены несколько шире (интервал <tex>[-0{,}58;\,-0{,}29]</tex> против <tex>[0;\,0{,}095]</tex>), однако среднее и стандартное отклонение по-прежнему вычисляются с учётом выброса, а значит, остаются им искажены.
-
Ключевое свойство гауссовского процесса состоит в том, что при условии на уже полученные наблюдения <tex>\mathcal{D}_t = \{(x_i,y_i)\}_{i=1}^{t}</tex> апостериорное распределение значения функции в произвольной точке <tex>x</tex> вновь является гауссовским, с явно выражаемыми параметрами:
+
Стандартизация — метод по умолчанию для линейных и логистических моделей с регуляризацией, [[Метод опорных векторов|метода опорных векторов]], [[Метод главных компонент|метода главных компонент]] и линейного дискриминантного анализа, а также для большинства архитектур нейронных сетей. В отличие от min-max scaling, результат не ограничен фиксированным диапазоном, что не создаёт проблем при появлении на этапе применения модели значений, выходящих за пределы диапазона обучающей выборки.
-
:: <tex>\mu_t(x) = \mathbf{k}_t(x)^\top \big(K_t + \sigma_n^2 I\big)^{-1} \mathbf{y}_{1:t}</tex>
+
<syntaxhighlight lang="python">
 +
from sklearn.preprocessing import StandardScaler
-
:: <tex>\sigma_t^2(x) = k(x,x) - \mathbf{k}_t(x)^\top \big(K_t + \sigma_n^2 I\big)^{-1} \mathbf{k}_t(x)</tex>
+
scaler = StandardSca
 +
ler()
 +
X_scaled = scaler.fit_transform(X)
 +
</syntaxhighlight>
-
где <tex>\mathbf{k}_t(x) = \big[k(x,x_1),\dots,k(x,x_t)\big]^\top</tex>, <tex>K_t</tex> — матрица Грама с элементами <tex>[K_t]_{ij}=k(x_i,x_j)</tex>, а <tex>\mathbf{y}_{1:t}=[y_1,\dots,y_t]^\top</tex>. Функция <tex>\mu_t(x)</tex> задаёт текущую наилучшую оценку значения функции, а <tex>\sigma_t^2(x)</tex> — меру неопределённости этой оценки, естественным образом убывающую вблизи уже исследованных точек.
+
Стоит отметить, что <tt>StandardScaler</tt> в scikit-learn по умолчанию вычисляет смещённую (population) дисперсию, то есть делит сумму квадратов отклонений на <tex>n</tex>, а не на <tex>n-1</tex>.
-
=== Функция приобретения ===
+
== Робастное масштабирование ==
-
Апостериорное распределение GP само по себе не указывает, куда направить следующее измерение. Эту роль играет [[функция приобретения]] <tex>a(x)</tex> — скалярная функция, вычисляемая из <tex>\mu_t(x)</tex> и <tex>\sigma_t(x)</tex>, значение которой велико в точках, перспективных для оценки. Следующая точка выбирается как
+
'''Робастное масштабирование''' (robust scaling) использует вместо среднего и стандартного отклонения статистики, устойчивые к выбросам, — [[Медиана|медиану]] и [[Квартиль|межквартильный размах]] (IQR):
-
:: <tex>x_{t+1} = \arg\max_{x \in \mathcal{X}} a(x \mid \mathcal{D}_t)</tex>
+
:: <tex>x' = \frac{x - Q_2}{Q_3 - Q_1}</tex>
-
Эта вспомогательная задача оптимизации сама по себе не является дорогостоящей (функция приобретения вычисляется аналитически из GP), поэтому её решают классическими методами многостартовым L-BFGS, CMA-ES или плотным перебором.
+
где <tex>Q_2</tex> — медиана (второй квартиль), <tex>Q_1</tex> и <tex>Q_3</tex> первый и третий квартили, а разность <tex>Q_3-Q_1</tex> — межквартильный размах (IQR), охватывающий центральные 50 % наблюдений.
-
Пусть <tex>f^{+}=\max_i y_i</tex> наилучшее из наблюдённых значений (инкумбент), а <tex>\Phi</tex> и <tex>\phi</tex> — функция распределения и плотность стандартного нормального распределения.
+
Медиана и квартили порядковые статистики, устойчивые к экстремальным значениям: смещение одного выброса в область бесконечности практически не меняет положение медианы или границ IQR, поскольку эти величины определяются не самими значениями, а их рангом в отсортированной выборке.
-
'''Вероятность улучшения''' (Probability of Improvement, PI), предложенная Кушнером (Kushner, 1964):
+
Завершим сквозной пример с доходом. Для выборки {30, 45, 50, 55, 60, 65, 400}: медиана <tex>Q_2=55</tex>, <tex>Q_1=45</tex>, <tex>Q_3=65</tex>, IQR <tex>=20</tex>. Сведём все три метода в одну таблицу:
-
 
+
-
:: <tex>\mathrm{PI}(x) = \Phi\!\left(\frac{\mu_t(x) - f^{+} - \xi}{\sigma_t(x)}\right)</tex>
+
-
 
+
-
'''Ожидаемое улучшение''' (Expected Improvement, EI), введённое Мокусом и популяризированное в алгоритме EGO (Jones, Schonlau, Welch, 1998):
+
-
 
+
-
:: <tex>\mathrm{EI}(x) = \begin{cases} \big(\mu_t(x)-f^{+}-\xi\big)\,\Phi(z) + \sigma_t(x)\,\phi(z), & \sigma_t(x)>0 \\ 0, & \sigma_t(x)=0 \end{cases}</tex>
+
-
 
+
-
где <tex>z = \dfrac{\mu_t(x)-f^{+}-\xi}{\sigma_t(x)}</tex>.
+
-
 
+
-
'''Верхняя доверительная граница''' (Upper Confidence Bound, GP-UCB), обоснованная теоретически Шринивасом с соавторами (Srinivas et al., 2010):
+
-
 
+
-
:: <tex>\mathrm{UCB}(x) = \mu_t(x) + \sqrt{\beta_t}\,\sigma_t(x)</tex>
+
-
 
+
-
Во всех формулах параметр <tex>\xi \geqslant 0</tex> (для PI и EI) или <tex>\beta_t</tex> (для UCB) управляет соотношением исследования и эксплуатации: увеличение параметра смещает предпочтение в сторону точек с высокой неопределённостью. При зашумлённых наблюдениях в качестве инкумбента <tex>f^{+}</tex> корректнее использовать не наилучшее наблюдённое значение <tex>y_i</tex>, а наилучшее значение апостериорного среднего <tex>\mu_t(x_i)</tex>.
+
{| class="wikitable"
{| class="wikitable"
 +
! Исходное значение !! Min-Max !! Z-score !! Robust
 +
|-
 +
| 30 || 0,000 || −0,577 || −1,25
 +
|-
 +
| 45 || 0,041 || −0,454 || −0,50
 +
|-
 +
| 50 || 0,054 || −0,414 || −0,25
|-
|-
-
! Функция !! Учитывает !! Склонность !! Параметр !! Теоретические гарантии
+
| 55 || 0,068 || −0,373 || 0,00
|-
|-
-
| PI || Вероятность превышения максимума || Эксплуатация || <tex>\xi</tex> || Нет
+
| 60 || 0,081 || −0,332 || 0,25
|-
|-
-
| EI || Вероятность и величину улучшения || Сбалансирована || <tex>\xi</tex> || Нет
+
| 65 || 0,095 || −0,291 || 0,50
|-
|-
-
| UCB || Среднее + бонус за неопределённость || Исследование || <tex>\beta_t</tex> || Да (сублинейный regret)
+
| 400 (выброс) || 1,000 || 2,441 || 17,25
|}
|}
-
== Математическая схема ==
+
Различие хорошо видно: под min-max и z-score основная масса «нормальных» значений сжата в узкий интервал из-за влияния выброса на <tex>x_{max}</tex>, <tex>\mu</tex> и <tex>\sigma</tex>. Робастное масштабирование, напротив, не изменило относительное расположение типичных значений (интервал <tex>[-1{,}25;\,0{,}5]</tex> пропорционален исходным различиям), а выброс получил большое по модулю, но не искажающее остальные данные значение — 17,25, что само по себе может служить сигналом об аномалии. Ценой этой устойчивости является то, что робастное масштабирование не гарантирует единичной дисперсии преобразованного признака и хуже подходит там, где важна именно эта статистическая интерпретация.
-
Байесовская оптимизация представляет собой последовательный процесс байесовского обновления. На шаге <tex>t</tex> апостериорное распределение <tex>p(f\mid \mathcal{D}_{t-1})</tex>, полученное по формулам предыдущего раздела, используется для выбора точки <tex>x_t</tex> максимизацией функции приобретения. После получения наблюдения <tex>y_t=f(x_t)+\varepsilon_t</tex> набор данных пополняется: <tex>\mathcal{D}_t = \mathcal{D}_{t-1}\cup\{(x_t,y_t)\}</tex>, и апостериорное распределение пересчитывается — это и есть байесовское обновление, применяемое последовательно T раз при бюджете в T измерений.
+
<syntaxhighlight lang="python">
 +
from sklearn.preprocessing import RobustScaler
-
Качество стратегии принято характеризовать величиной '''регрета'''. Простой регрет после <tex>T</tex> шагов:
+
scaler = RobustScaler(quantile_range=(25.0, 75.0))
 +
X_scaled = scaler.fit_transform(X)
 +
</syntaxhighlight>
-
:: <tex>r_T = f(x^{*}) - \max_{t\leqslant T} f(x_t)</tex>
+
== Другие методы ==
-
Кумулятивный регрет:
+
Помимо трёх базовых подходов, в scikit-learn реализован ряд специализированных преобразований.
-
:: <tex>R_T = \sum_{t=1}^{T} \big[f(x^{*}) - f(x_t)\big]</tex>
+
'''MaxAbsScaler''' делит значения признака на максимальный модуль:
-
Стратегия называется «безрегретной» ({{lang-en|no-regret}}), если <tex>R_T/T \to 0</tex> при <tex>T\to\infty</tex>, что влечёт сходимость простого регрета к нулю. Для GP-UCB Шринивас с соавторами (2010) доказали следующий результат: если для конечного (или дискретизированного) множества <tex>\mathcal{X}</tex> положить
+
:: <tex>x' = \frac{x}{|x_{max}|}</tex>
-
:: <tex>\beta_t = 2\log\!\left(\frac{|\mathcal{X}|\,t^2\pi^2}{6\delta}\right)</tex>
+
Результат попадает в диапазон <tex>[-1,1]</tex>. Важное свойство — преобразование не сдвигает данные (не вычитает среднее или минимум), поэтому нулевые значения остаются нулевыми. Это делает MaxAbsScaler предпочтительным для разреженных матриц (например, TF-IDF представлений текста), где сохранение разреженности критично для памяти и скорости вычислений.
-
то с вероятностью не менее <tex>1-\delta</tex> кумулятивный регрет ограничен как
+
'''PowerTransformer''' — семейство нелинейных степенных преобразований, приближающих распределение признака к нормальному и стабилизирующих дисперсию. Преобразование Бокса — Кокса (Box-Cox) определено только для строго положительных значений:
-
:: <tex>R_T \leqslant \sqrt{C_1\, T\, \beta_T\, \gamma_T}</tex>
+
:: <tex>x^{(\lambda)} = \begin{cases} \dfrac{x^{\lambda} - 1}{\lambda}, & \lambda \neq 0 \\[4pt] \ln x, & \lambda = 0 \end{cases}</tex>
-
где <tex>C_1 = 8/\log(1+\sigma_n^{-2})</tex>, а <tex>\gamma_T</tex> — максимальный информационный выигрыш ({{lang-en|maximum information gain}}), характеризующий сложность класса функций, порождаемого ядром GP. Для гауссова ядра <tex>\gamma_T = O\big((\log T)^{d+1}\big)</tex>, для ядра Матерна с параметром гладкости <tex>\nu</tex> <tex>\gamma_T = O\big(T^{\frac{d(d+1)}{2\nu+d(d+1)}}\log T\big)</tex>. Поскольку в обоих случаях <tex>\gamma_T</tex> растёт медленнее <tex>T</tex>, оценка гарантирует сублинейный рост <tex>R_T</tex> и, следовательно, сходимость GP-UCB к глобальному оптимуму.
+
Параметр <tex>\lambda</tex> подбирается по данным (обычно методом максимального правдоподобия). Преобразование Йео — Джонсона (Yeo-Johnson) — обобщение, допускающее нулевые и отрицательные значения:
-
== Алгоритм ==
+
:: <tex>x^{(\lambda)} = \begin{cases} \dfrac{(x+1)^{\lambda} - 1}{\lambda}, & \lambda \neq 0,\ x \geq 0 \\[4pt] \ln(x+1), & \lambda = 0,\ x \geq 0 \\[4pt] -\dfrac{(-x+1)^{2-\lambda} - 1}{2-\lambda}, & \lambda \neq 2,\ x < 0 \\[4pt] -\ln(-x+1), & \lambda = 2,\ x < 0 \end{cases}</tex>
-
Ниже приведена обобщённая псевдокодовая схема, справедливая для большинства реализаций байесовской оптимизации на основе гауссовского процесса.
+
Оба преобразования полезны для сильно асимметричных признаков (доход, число визитов, время
 +
ожидания), особенно для моделей, чувствительных к форме распределения.
-
<pre>
+
'''QuantileTransformer''' строит нелинейное отображение на основе эмпирической функции распределения признака, приводя его к равномерному либо нормальному распределению. Метод наиболее агрессивно устраняет влияние выбросов и асимметрии, поскольку опирается только на ранги наблюдений, но может исказить взаимосвязи между признаками (нелинейное преобразование не сохраняет корреляции) и чувствителен к объёму обучающей выборки.
-
Вход: чёрный ящик f, область поиска X, бюджет T,
+
-
размер начального плана n0, функция приобретения a
+
-
1. Сформировать начальный план {x_1, ..., x_n0}
+
<syntaxhighlight lang="python">
-
(например, латинский гиперкуб или последовательность Соболя)
+
from sklearn.preprocessing import MaxAbsScaler, PowerTransformer, QuantileTransformer
-
2. Для i = 1 .. n0: вычислить y_i = f(x_i)
+
-
3. D <- {(x_1,y_1), ..., (x_n0,y_n0)}
+
-
4. Для t = n0+1 .. T:
+
pt = PowerTransformer(method="yeo-johnson")
-
4.1 Обучить гауссовский процесс на D:
+
X_pt = pt.fit_transform(X)
-
подобрать гиперпараметры ядра максимизацией
+
-
маргинального правдоподобия
+
-
4.2 Вычислить апостериорные mu(x), sigma^2(x) по формулам GP
+
-
4.3 x_t <- argmax_{x in X} a(x | D) // вспомогательная оптимизация
+
-
4.4 y_t <- f(x_t) // дорогостоящее обращение к оракулу
+
-
4.5 D <- D U {(x_t, y_t)}
+
-
5. Вернуть x+ = argmax_{(x_i,y_i) in D} y_i
+
qt = QuantileTransformer(output_distribution="normal")
-
</pre>
+
X_qt = qt.fit_transform(X)
 +
</syntaxhighlight>
-
== Пример: настройка гиперпараметров градиентного бустинга для кредитного скоринга ==
+
== Влияние на алгоритмы ==
-
Рассмотрим типовую задачу [[кредитный скоринг|кредитного скоринга]]: построение бинарного классификатора, предсказывающего вероятность дефолта заёмщика, с использованием модели [[градиентный бустинг|градиентного бустинга]] (например, XGBoost, LightGBM или CatBoost). В качестве целевой метрики обычно выступает [[площадь под ROC-кривой]] (AUC), оцениваемая по [[кросс-валидация|кросс-валидации]]. Один запуск обучения с фиксированным набором гиперпараметров и последующей k-блочной кросс-валидацией может занимать от нескольких минут до часов — это и есть «дорогой чёрный ящик» в терминах задачи.
+
Чувствительность к масштабу признаков существенно различается между семействами алгоритмов.
{| class="wikitable"
{| class="wikitable"
 +
|+ Чувствительность алгоритмов машинного обучения к масштабу признаков
 +
! Алгоритм !! Чувствительность !! Обоснование
|-
|-
-
! Гиперпараметр !! Диапазон !! Тип !! Шкала
+
| [[Линейная регрессия|Линейная]] / [[Логистическая регрессия|логистическая регрессия]] с регуляризацией || Высокая || [[Регуляризация|Регуляризационный]] штраф зависит от масштаба коэффициентов, который, в свою очередь, зависит от масштаба признаков
|-
|-
-
| learning_rate (темп обучения) || [0.01, 0.3] || Непрерывный || Логарифмическая
+
| [[Метод опорных векторов|Метод опорных векторов]] (SVM) || Высокая || Построение разделяющей гиперплоскости и ядровые функции опираются на евклидово расстояние между объектами
|-
|-
-
| max_depth (глубина дерева) || [3, 10] || Целочисленный || Линейная
+
| [[Метод ближайших соседей|Метод ближайших соседей]] (KNN) || Высокая || Классификация непосредственно основана на расстояниях между объектами в признаковом пространстве
|-
|-
-
| n_estimators (число деревьев) || [100, 1000] || Целочисленный || Линейная
+
| [[Метод главных компонент|Метод главных компонент]] (PCA) || Высокая || Направления максимальной дисперсии определяются абсолютным масштабом признаков, а не их относительной значимостью
|-
|-
-
| subsample (доля объектов) || [0.5, 1.0] || Непрерывный || Линейная
+
| Кластеризация методом k-средних || Высокая || Формирование кластеров основано на расстояниях до центроидов
|-
|-
-
| colsample_bytree (доля признаков) || [0.5, 1.0] || Непрерывный || Линейная
+
| [[Нейронная сеть|Нейронные сети]] (градиентное обучение) || Высокая (влияет на скорость и устойчивость сходимости) || Разномасштабные входы приводят к вытянутому рельефу функции потерь и неравномерным градиентам по слоям
|-
|-
-
| min_child_weight || [1, 50] || Целочисленный || Линейная
+
| [[Дерево решений|Деревья решений]] || Низкая || Разбиения строятся по пороговым значениям одного признака независимо от масштаба остальных
|-
|-
-
| reg_lambda (L2-регуляризация) || [1e-3, 10] || Непрерывный || Логарифмическая
+
| [[Случайный лес|Случайный лес]] || Низкая || Ансамбль деревьев решений, наследует их инвариантность к монотонным преобразованиям признаков
|-
|-
-
| reg_alpha (L1-регуляризация) || [1e-3, 10] || Непрерывный || Логарифмическая
+
| [[Градиентный бустинг|Градиентный бустинг]] (XGBoost, LightGBM, CatBoost) || Низкая || Также опирается на пороговые разбиения по отдельным признакам
 +
|-
 +
| Наивный байесовский классификатор || Низкая / умеренная || Оценивает распределение каждого признака отдельно; масштаб не влияет на итоговую разделяющую способность
|}
|}
-
Целевая функция в этом случае — <tex>f(\theta) = \mathrm{AUC}_{\mathrm{CV}}(\theta)</tex>, где <tex>\theta</tex> — вектор из восьми перечисленных гиперпараметров, а оптимизация ведётся на максимум. Типичная схема запуска: начальный план из 10–15 точек по латинскому гиперкубу, далее 30–50 итераций байесовской оптимизации с GP-суррогатом (ядро Матерна 5/2) и функцией приобретения EI.
+
Общая закономерность: методы, основанные на пороговых разбиениях одного признака (деревья и их ансамбли), инвариантны к любому монотонному преобразованию масштаба, тогда как методы, использующие расстояния, скалярные произведения или градиентную оптимизацию, чувствительны к нему напрямую.
 +
 
 +
== Влияние на регуляризацию ==
 +
 
 +
[[Регуляризация|L1- и L2-регуляризация]] штрафуют величину коэффициентов модели. Для линейной регрессии с L2-штрафом (гребневая регрессия) функционал имеет вид:
 +
 
 +
:: <tex>L(\beta) = \sum_{i=1}^{n}\left(y_i - \beta_0 - \sum_{j=1}^{p}\beta_j x_{ij}\right)^2 + \lambda \sum_{j=1}^{p}\beta_j^2</tex>
 +
 
 +
а для L1-регуляризации (лассо) — соответственно с штрафом <tex>\lambda\sum_{j}|\beta_j|</tex>. В обоих случаях величина штрафа зависит исключительно от численного значения коэффициента <tex>\beta_j</tex>, а не от того, насколько признак <tex>x_j</tex> в действительности значим для предсказания.
 +
 
 +
Проблема в том, что масштаб коэффициента обратно пропорционален масштабу признака: если признак измерен в рублях с диапазоном значений порядка <tex>10^5</tex>–<tex>10^6</tex>, соответствующий ему коэффициент естественным образом окажется очень малым (порядка <tex>10^{-5}</tex>–<
 +
tex>10^{-6}</tex>) просто для того, чтобы вклад <tex>\beta_j x_j</tex> в предсказание оставался разумной величины. Признак же, измеренный в единицах (например, число визитов в месяц), потребует коэффициента на несколько порядков больше. Регуляризация в этом случае штрафует признаки неравномерно — не пропорционально их реальной значимости, а обратно пропорционально их естественному масштабу: крупномасштабные признаки получают заниженный (и потому слабо штрафуемый) коэффициент, тогда как мелкомасштабные — завышенный и, соответственно, сильнее подавляемый. Особенно чувствительно к этому L1-регуляризация: поскольку она способна обнулять коэффициенты полностью, отбор признаков при несогласованных масштабах оказывается смещённым в пользу признаков с большим численным диапазоном, а не в пользу признаков с наибольшей предсказательной силой.
 +
 
 +
Именно поэтому стандартизация признаков перед обучением регуляризованных линейных моделей считается стандартной практикой: приведение всех признаков к единичной дисперсии уравнивает условия, при которых регуляризационный штраф применяется к каждому из них, и делает итоговые коэффициенты сопоставимыми как меры относительной значимости признаков.
-
Ниже приведён иллюстративный пример типичной динамики, наблюдаемой при сравнении со случайным поиском на подобных задачах — конкретные числа условны и предназначены для демонстрации характера сходимости, а не воспроизводят результаты определённого эксперимента.
+
== Сравнение методов ==
{| class="wikitable"
{| class="wikitable"
 +
! Метод !! Формула !! Диапазон результата !! Устойчивость к выбросам !! Основные плюсы !! Основные минусы
|-
|-
-
! Число обращений к f !! Лучший AUC, случайный поиск !! Лучший AUC, байесовская оптимизация
+
| Min-Max || <tex>x'=\frac{x-x_{min}}{x_{max}-x_{min}}</tex> || <tex>[0,1]</tex> (настраиваемый) || Низкая || Фиксированный, интерпретируемый диапазон; сохраняет форму распределения || Сильно искажается единичными выбросами; новые данные вне обучающего диапазона выходят за границы
|-
|-
-
| 10 || 0,752 || 0,768
+
| Z-score || <tex>x'=\frac{x-\mu}{\sigma}</tex> || Теоретически не ограничен (практически [-3,3]) || Умеренная || Стандарт для линейных моделей, SVM, PCA, нейросетей; интерпретация в единицах стандартного отклонения || Среднее и дисперсия чувствительны к выбросам
|-
|-
-
| 25 || 0,769 || 0,784
+
| Robust || <tex>x'=\frac{x-Q_2}{Q_3-Q_1}</tex> || Не ограничен || Высокая || Устойчив к выбросам и асимметрии распределения || Не даёт единичной дисперсии; менее привычная интерпретация
|-
|-
-
| 50 || 0,778 || 0,791
+
| MaxAbs || <tex>x'=\frac{x}{|x_{max}|}</tex> || <tex>[-1,1]</tex> || Низкая || Сохраняет разреженность данных (нули остаются нулями) || Чувствителен к выбросам, как и Min-Max
|-
|-
-
| 100 || 0,784 || 0,793
+
| PowerTransformer || нелинейное степенное преобразование || Приближается к нормальному распределению || Умеренная || Снижает асимметрию, стабилизирует дисперсию || Box-Cox требует строго положительных значений; интерпретация затруднена
|-
|-
-
| 200 || 0,788 || 0,794
+
| QuantileTransformer || преобразование по эмпирической функции распределения || <tex>[0,1]</tex> либо нормальное || Высокая || Полностью устраняет влияние выбросов и асимметрии || Нелинейно; может исказить взаимосвязи между признаками, риск переобучения на малых выборках
|}
|}
-
Характерная картина: байесовская оптимизация достигает качества, сопоставимого с результатом случайного поиска при существенно большем бюджете, уже за первые несколько десятков итераций — это и есть проявление её выборочной эффективности ({{lang-en|sample efficiency}}), особенно ценной при дорогой целевой функции. Сходный вывод — превосходство байесовской оптимизации над случайным поиском при настройке гиперпараметров моделей машинного обучения — получен Снук с соавторами (Snoek, Larochelle, Adams, 2012).
+
== Пример: подготовка данных для логистической регрессии в задаче прогнозирования оттока клиентов ==
-
== Достоинства и ограничения ==
+
Рассмотрим упрощённый набор данных телекоммуникационной компании для задачи прогнозирования оттока (churn) с двумя признаками — стажем обслуживания (в месяцах) и ежемесячным платежом (в рублях):
-
'''Достоинства:'''
+
{| class="wikitable"
 +
! Клиент !! Стаж, мес. !! Платёж, руб./мес. !! Отток
 +
|-
 +
| 1 || 2 || 3 500 || 1
 +
|-
 +
| 2 || 34 || 1 200 || 0
 +
|-
 +
| 3 || 58 || 4 200 || 0
 +
|-
 +
| 4 || 4 || 900 || 1
 +
|-
 +
| 5 || 45 || 5 600 || 0
 +
|}
-
* высокая эффективность по числу обращений к целевой функции, особенно значимая при дорогих вычислениях;
+
Стаж имеет среднее <tex>\mu \approx 28{,}6</tex> и стандартное отклонение <tex>\sigma \approx 22{,}25</tex>; платёж — среднее <tex>\mu \approx 3080</tex> и стандартное отклонение <tex>\sigma \approx 1792{,}65</tex>. После стандартизации по формуле <tex>x' = (x-\mu)/\sigma</tex>:
-
* корректная работа с зашумлёнными наблюдениями благодаря вероятностной природе модели;
+
-
* явная количественная оценка неопределённости, позволяющая осмысленно управлять балансом исследования и эксплуатации;
+
-
* отсутствие требования к дифференцируемости или явной аналитической форме целевой функции;
+
-
* возможность включения априорных знаний через выбор ядра, функции среднего или ограничений;
+
-
* хорошая применимость к экспериментальным и симуляционным задачам, где каждое измерение стоит дорого.
+
-
'''Ограничения:'''
+
{| class="wikitable"
-
 
+
! Клиент !! Стаж (станд.) !! Платёж (станд.) !! Отток
-
* кубическая сложность обучения гауссовского процесса по числу наблюдений (<tex>O(t^3)</tex>), что без разреженных аппроксимаций ограничивает практический бюджет итераций несколькими сотнями–тысячами;
+
|-
-
* заметная деградация качества при высокой размерности пространства поиска (свыше примерно 15–20 непрерывных переменных без специальных приёмов);
+
| 1 || −1,196 || 0,234 || 1
-
* чувствительность к выбору ядра и способу настройки его гиперпараметров;
+
|-
-
* последовательная по своей природе процедура, затрудняющая тривиальную параллелизацию (хотя существуют пакетные, batch-модификации);
+
| 2 || 0,243 || −1,049 || 0
-
* нетривиальная работа с дискретными, категориальными и условными (conditional) параметрами без специальных модификаций ядра или кодирования;
+
|-
-
* вспомогательная задача максимизации функции приобретения сама может быть многоэкстремальной и требовать многостартовой оптимизации.
+
| 3 || 1,321 || 0,625 || 0
 +
|-
 +
| 4 || −1,106 || −1,216 || 1
 +
|-
 +
| 5 || 0,737 || 1,406 || 0
 +
|}
-
== Варианты расширений ==
+
До масштабирования диапазон платежа (900–5600) на два порядка превышает диапазон стажа (2–58). При обучении [[Логистическая регрессия|логистической регрессии]] градиентными методами это означа
 +
ет, что частная производная функции потерь по коэффициенту при платеже на несколько порядков отличается по величине от производной по коэффициенту при стаже, и без индивидуальной настройки шага обучения для каждого признака сходимость существенно замедляется. Кроме того, при использовании L2- или L1-регуляризации коэффициент при платеже, обученный на исходных данных, будет иметь порядок <tex>10^{-4}</tex>, а коэффициент при стаже — порядок <tex>10^{-2}</tex>–<tex>10^{-1}</tex>; сравнение таких коэффициентов напрямую ничего не говорит об относительной значимости признаков. После стандартизации оба признака приведены к общему масштабу (нулевое среднее, единичная дисперсия), их вклад в предсказание и в регуляризационный штраф сопоставим, а абсолютные значения обученных коэффициентов допустимо интерпретировать как меру относительной важности признака при фиксированной силе регуляризации.
-
; Многомерная оптимизация
+
<syntaxhighlight lang="python">
-
: При росте размерности пространства поиска стандартный GP-подход теряет эффективность. Для смягчения проблемы применяют случайные вложения меньшей размерности (метод REMBO), аддитивные модели GP, а также методы, сужающие область поиска до доверительного региона на каждой итерации (TuRBO).
+
from sklearn.preprocessing import StandardScaler
 +
from sklearn.linear_model import LogisticRegression
 +
from sklearn.pipeline import Pipeline
-
; Оптимизация с ограничениями
+
pipeline = Pipeline([
-
: Если помимо целевой функции присутствуют дорогостоящие ограничения <tex>c(x)\leqslant 0</tex>, применяется модификация функции приобретения — например, взвешивание EI вероятностью допустимости точки, оцениваемой отдельным GP-классификатором ограничения (constrained EI).
+
("scaler", StandardScaler()),
 +
("model", LogisticRegression(penalty="l2", C=1.0))
 +
])
 +
pipeline.fit(X_train, y_train)
 +
</syntaxhighlight>
-
; Многокритериальная оптимизация
+
Существен методический момент: параметры масштабирования (<tex>\mu</tex>, <tex>\sigma</tex>, <tex>x_{min}</tex>, <tex>x_{max}</tex>, <tex>Q_1</tex>, <tex>Q_2</tex>, <tex>Q_3</tex>) должны вычисляться исключительно на обучающей выборке методом <tt>fit</tt> и затем применяться к валидационной и тестовой выборкам методом <tt>transform</tt>, без повторного вычисления статистик на них. Нарушение этого правила приводит к утечке информации из тестовой выборки в процесс обучения (data leakage) и завышенной оценке качества модели.
-
: При нескольких одновременно оптимизируемых целях вместо единственной точки ищется [[множество Парето|множество Парето-оптимальных]] решений. Используются функции приобретения вроде ожидаемого прироста гиперобъёма (Expected Hypervolume Improvement, EHVI) или скаляризационные подходы (ParEGO).
+
-
; Мультифидельная оптимизация (BOHB)
+
== Практические рекомендации ==
-
: Когда доступны дешёвые приближённые оценки функции (например, обучение на подвыборке данных или при малом числе эпох), их можно использовать наряду с дорогими точными измерениями. Алгоритм BOHB (Falkner, Klein, Hutter, 2018) сочетает бандитскую схему распределения ресурсов Hyperband с байесовской моделью выбора конфигураций, ускоряя сходимость по сравнению с обычной GP-оптимизацией.
+
-
; Поиск архитектур нейронных сетей (NAS)
+
* Для '''линейных и логистических моделей с регуляризацией''' — стандартизация (z-score); при наличии выраженных выбросов — робастное масштабирование.
-
: Байесовская оптимизация применяется и для поиска архитектур [[нейронная сеть|нейронных сетей]] — здесь пространство поиска дискретно, комбинаторно велико, а оценка каждой точки (обучение сети) крайне дорога. Для работы с такими пространствами используют специальные ядра, определённые на графах архитектур (например, на основе расстояния оптимального переноса, как в NASBOT), либо комбинируют байесовскую оптимизацию с методами разделения весов и другими техниками ускорения оценки кандидатов.
+
* Для '''метода опорных векторов, метода ближайших соседей, k-средних и метода главных компонент''' — стандартизация практически обязательна, поскольку эти методы напрямую оперируют расстояниями или дисперсией.
 +
* Для '''деревьев решений, случайного леса и градиентного бустинга''' — масштабирование, как правило, не требуется, поскольку эти алгоритмы инвариантны к монотонным преобразованиям отдельных признаков.
 +
* Для '''нейронных сетей''' — стандартизация или min-max scaling к диапазону <tex>[0,1]</tex> либо <tex>[-1,1]</tex>, в зависимости от функций активации; для сверточных сетей, работающих с изображениями, min-max к <tex>[0,1]</tex> стандартная практика.
 +
* При '''наличии выбросов''', которые не являются ошибками измерения и должны быть сохранены в выборке, — робастное масштабирование или QuantileTransformer вместо min-max и z-score.
 +
* Для '''разреженных данных''' (например, TF-IDF, one-hot представления с большим числом признаков) — MaxAbsScaler, не разрушающий разреженность, в отличие от методов, включающих центрирование.
 +
* При '''сильной асимметрии распределения''' признака (доход, время ожидания, количество событий) — PowerTransformer перед стандартизацией.
 +
* Параметры масштабирования всегда вычисляются на обучающей выборке и фиксируются для последующего применения к новым данным; включение шага масштабирования в единый [[Конвейер обработки данных|конвейер]] (<tt>sklearn.pipeline.Pipeline</tt>) снижает риск утечки данных при кросс-валидации.
== См. также ==
== См. также ==
-
* [[Оптимизация]]
+
* [[Ослабление и усиление шкал признаков]]
-
* [[Гауссовский процесс]]
+
* [[Предобработка данных]]
-
* [[Гиперпараметр]]
+
-
* [[Кросс-валидация]]
+
-
* [[Градиентный бустинг]]
+
* [[Регуляризация]]
* [[Регуляризация]]
-
* [[Переобучение]]
+
* [[Логистическая регрессия]]
-
* [[Случайный поиск]]
+
* [[Метод главных компонент]]
-
* [[Сеточный поиск]]
+
-
* [[Автоматическое машинное обучение]]
+
== Литература ==
== Литература ==
-
* Mockus J. On Bayesian methods for seeking the extremum // Optimization Techniques IFIP Technical Conference. — 1975.
+
* Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. — 2nd ed. — Springer, 2009.
-
* Jones D. R., Schonlau M., Welch W. J. Efficient Global Optimization of Expensive Black-Box Functions // Journal of Global Optimization. — 1998. — Vol. 13. — P. 455–492.
+
* Bishop C. M. Pattern Recognition and Machine Learning. — Springer, 2006.
-
* Rasmussen C. E., Williams C. K. I. Gaussian Processes for Machine Learning. — MIT Press, 2006.
+
* Géron A. Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow. — 3rd ed. — O'Reilly, 2022.
-
* Brochu E., Cora V. M., de Freitas N. A Tutorial on Bayesian Optimization of Expensive Cost Functions, with Application to Active User Modeling and Hierarchical Reinforcement Learning. — arXiv:1012.2599, 2010.
+
* Zheng A., Casari A. Feature Engineering for Machine Learning.
-
* Srinivas N., Krause A., Kakade S., Seeger M. Gaussian Process Optimization in the Bandit Setting: No Regret and Experimental Design // Proceedings of ICML. — 2010.
+
Microsoft Azure Web App - Error 404
-
* Bergstra J., Bengio Y. Random Search for Hyper-Parameter Optimization // Journal of Machine Learning Research. — 2012. — Vol. 13. — P. 281–305.
+
pipeline.fit
-
* Snoek J., Larochelle H., Adams R. P. Practical Bayesian Optimization of Machine Learning Algorithms // Advances in Neural Information Processing Systems (NeurIPS). — 2012.
+
O'Reilly, 2018.
-
* Shahriari B., Swersky K., Wang Z., Adams R. P., de Freitas N. Taking the Human Out of the Loop: A Review of Bayesian Optimization // Proceedings of the IEEE. — 2016. — Vol. 104, № 1. — P. 148–175.
+
* Box G. E. P., Cox D. R. An Analysis of Transformations // Journal of the Royal Statistical Society, Series B. — 1964. — Vol. 26, No. 2.
-
* Falkner S., Klein A., Hutter F. BOHB: Robust and Efficient Hyperparameter Optimization at Scale // Proceedings of ICML. — 2018.
+
* Yeo I.-K., Johnson R. A. A New Family of Power Transformations to Improve Normality or Symmetry // Biometrika. — 2000. — Vol. 87, No. 4.
-
* Frazier P. I. A Tutorial on Bayesian Optimization. — arXiv:1807.02811, 2018.
+
* Ioffe S., Szegedy C. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift // Proceedings of the 32nd International Conference on Machine Learning (ICML). — 2015.
 +
* Scikit-learn developers. Preprocessing data // Scikit-learn User Guide. — [https://scikit-learn.org/stable/modules/preprocessing.html scikit-learn.org/stable/modules/preprocessing.html]
[[Категория:Машинное обучение]]
[[Категория:Машинное обучение]]
-
[[Категория:Методы оптимизации]]
+
[[Категория:Предобработка данных]]
-
[[Категория:Автоматическое машинное обучение]]
+
```
-
[[Категория:Байесовские методы]]
+
-
[[Категория:Настройка гиперпараметров]]
+

Текущая версия

```

Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:56, 10 июля 2026 (MSD)


Нормализация признаков и стандартизация признаков (обобщённо — масштабирование признаков, англ. feature scaling) — методы предварительной обработки данных, приводящие числовые признаки к сопоставимому диапазону значений или к сопоставимой статистической форме распределения. Масштабирование не меняет информативность признака в статистическом смысле (взаимную связь с целевой переменной), но существенно влияет на поведение многих алгоритмов машинного обучения — от скорости сходимости градиентных методов до корректности работы регуляризации и методов, основанных на расстояниях между объектами.

В литературе термины употребляются не вполне единообразно. В узком смысле нормализацией называют приведение признака к фиксированному диапазону, чаще всего [0,1] (min-max scaling), а стандартизацией — приведение к нулевому среднему и единичной дисперсии (z-score). В широком смысле оба термина нередко используются как синонимы для обозначения любого масштабирования признаков; в данной статье эти понятия разграничиваются в узком, более строгом смысле. Наряду с ними рассматривается робастное масштабирование и ряд специализированных преобразований (MaxAbsScaler, PowerTransformer, QuantileTransformer), реализованных, в частности, в модуле sklearn.preprocessing библиотеки scikit-learn.

Содержание

Постановка задачи

Признаки, описывающие объекты реального мира, как правило, измерены в разных единицах и имеют разные диапазоны значений. Рассмотрим задачу классификации клиентов банка, где каждый объект описывается двумя признаками — возрастом (в годах) и месячным доходом (в рублях):

Клиент Возраст, лет Доход, руб./мес.
Иванов 25 45 000
Петров 45 47 000

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

d = \sqrt{(45-25)^2 + (47000-45000)^2} = \sqrt{400 + 4\,000\,000} \approx 2000{,}1

признак «возраст» практически не вносит вклада в итоговое расстояние: его слагаемое (400) на четыре порядка меньше слагаемого дохода (4 000 000). Для любого метода, опирающегося на расстояния между объектами — метода ближайших соседей, метода опорных векторов, кластеризации методом k-средних, метода главных компонент — это означает, что признак с большим численным диапазоном будет доминировать в решении независимо от его действительной значимости для задачи.

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

Нормализация (min-max scaling)

Min-max scaling линейно преобразует признак так, чтобы его значения попали в заданный диапазон, чаще всего [0,1]:

x' = \frac{x - x_{min}}{x_{max} - x_{min}}

где x_{min} и x_{max} — минимальное и максимальное значен ия признака на обучающей выборке. Для произвольного целевого диапазона [a,b] формула обобщается:

x' = a + \frac{(x - x_{min})(b-a)}{x_{max} - x_{min}}

Метод сохраняет форму исходного распределения (все относительные расстояния между значениями пропорционально сжимаются или растягиваются), что удобно, когда диапазон признака имеет содержательный смысл — например, для признаков, ограниченных по своей природе (доля, вероятность, пиксельная интенсивность 0–255), а также при подготовке входов для нейронных сетей с сигмоидными или иными ограниченными функциями активации.

Существенный недостаток — высокая чувствительность к выбросам, поскольку x_{min} и x_{max} определяются единственными экстремальными наблюдениями. Продемонстрируем это на выборке значений дохода (тыс. руб.): 30, 45, 50, 55, 60, 65, 400, где последнее значение — аномально высокий доход.

Здесь x_{min}=30, x_{max}=400, диапазон равен 370. После min-max масштабирования:

Исходное значение После Min-Max
30 0,000
45 0,041
50 0,054
55 0,068
60 0,081
65 0,095
400 (выброс) 1,000

Единственный выброс растянул диапазон настолько, что все «типичные» значения оказались сжаты в узкий интервал [0;\,0{,}095] и стали практически неразличимы для алгоритма. Это ключевое ограничение метода: перед его применением рекомендуется отдельно проверить данные на наличие выбросов (см. выбросы).

В scikit-learn метод реализован классом MinMaxScaler:

<syntaxhighlight lang="python"> from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler(feature_range=(0, 1)) X_scaled = scaler.fit_transform(X) </syntaxhighlight>

Стандартизация (z-score)

Стандартизация (z-score normalization) центрирует признак относительно среднего и масштабирует его по стандартному отклонению:

x' = \frac{x - \mu}{\sigma}

где

\mu = \frac{1}{n}\sum_{i=1}^{n} x_i, \qquad \sigma = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(x_i - \mu)^2}

После преобразования признак имеет нулевое среднее и единичную дисперсию: \mathbb{E}[x']=0, \mathrm{Var}[x']=1. Величина x' показывает, на сколько стандартных отклонений исходное значение отстоит от среднего, что делает интерпретацию наглядной при приближённо нормальном распределении признака: согласно правилу «трёх сигм» около 68 % значений попадают в интервал [-1,1], около 95 % — в [-2,2]. При этом сама по себе стандартизация не делает распределение нормальным — она лишь центрирует и масштабирует его, сохраняя исходную форму (асимметрию, эксцесс).

Продолжим пример с доходом. Для выборки {30, 45, 50, 55, 60, 65, 400} среднее \mu \approx 100{,}71, стандартное отклонение \sigma \approx 122{,}63. После стандартизации:

Исходное значение После Z-score
30 −0,577
45 −0,454
50 −0,414
55 −0,373
60 −0,332
65 −0,291
400 (выброс) 2,441

По сравнению с min-max масштабированием типичные значения распределены несколько шире (интервал [-0{,}58;\,-0{,}29] против [0;\,0{,}095]), однако среднее и стандартное отклонение по-прежнему вычисляются с учётом выброса, а значит, остаются им искажены.

Стандартизация — метод по умолчанию для линейных и логистических моделей с регуляризацией, метода опорных векторов, метода главных компонент и линейного дискриминантного анализа, а также для большинства архитектур нейронных сетей. В отличие от min-max scaling, результат не ограничен фиксированным диапазоном, что не создаёт проблем при появлении на этапе применения модели значений, выходящих за пределы диапазона обучающей выборки.

<syntaxhighlight lang="python"> from sklearn.preprocessing import StandardScaler

scaler = StandardSca ler() X_scaled = scaler.fit_transform(X) </syntaxhighlight>

Стоит отметить, что StandardScaler в scikit-learn по умолчанию вычисляет смещённую (population) дисперсию, то есть делит сумму квадратов отклонений на n, а не на n-1.

Робастное масштабирование

Робастное масштабирование (robust scaling) использует вместо среднего и стандартного отклонения статистики, устойчивые к выбросам, — медиану и межквартильный размах (IQR):

x' = \frac{x - Q_2}{Q_3 - Q_1}

где Q_2 — медиана (второй квартиль), Q_1 и Q_3 — первый и третий квартили, а разность Q_3-Q_1 — межквартильный размах (IQR), охватывающий центральные 50 % наблюдений.

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

Завершим сквозной пример с доходом. Для выборки {30, 45, 50, 55, 60, 65, 400}: медиана Q_2=55, Q_1=45, Q_3=65, IQR =20. Сведём все три метода в одну таблицу:

Исходное значение Min-Max Z-score Robust
30 0,000 −0,577 −1,25
45 0,041 −0,454 −0,50
50 0,054 −0,414 −0,25
55 0,068 −0,373 0,00
60 0,081 −0,332 0,25
65 0,095 −0,291 0,50
400 (выброс) 1,000 2,441 17,25

Различие хорошо видно: под min-max и z-score основная масса «нормальных» значений сжата в узкий интервал из-за влияния выброса на x_{max}, \mu и \sigma. Робастное масштабирование, напротив, не изменило относительное расположение типичных значений (интервал [-1{,}25;\,0{,}5] пропорционален исходным различиям), а выброс получил большое по модулю, но не искажающее остальные данные значение — 17,25, что само по себе может служить сигналом об аномалии. Ценой этой устойчивости является то, что робастное масштабирование не гарантирует единичной дисперсии преобразованного признака и хуже подходит там, где важна именно эта статистическая интерпретация.

<syntaxhighlight lang="python"> from sklearn.preprocessing import RobustScaler

scaler = RobustScaler(quantile_range=(25.0, 75.0)) X_scaled = scaler.fit_transform(X) </syntaxhighlight>

Другие методы

Помимо трёх базовых подходов, в scikit-learn реализован ряд специализированных преобразований.

MaxAbsScaler делит значения признака на максимальный модуль:

x' = \frac{x}{|x_{max}|}

Результат попадает в диапазон [-1,1]. Важное свойство — преобразование не сдвигает данные (не вычитает среднее или минимум), поэтому нулевые значения остаются нулевыми. Это делает MaxAbsScaler предпочтительным для разреженных матриц (например, TF-IDF представлений текста), где сохранение разреженности критично для памяти и скорости вычислений.

PowerTransformer — семейство нелинейных степенных преобразований, приближающих распределение признака к нормальному и стабилизирующих дисперсию. Преобразование Бокса — Кокса (Box-Cox) определено только для строго положительных значений:

x^{(\lambda)} = \begin{cases} \dfrac{x^{\lambda} - 1}{\lambda}, & \lambda \neq 0 \\[4pt] \ln x, & \lambda = 0 \end{cases}

Параметр \lambda подбирается по данным (обычно методом максимального правдоподобия). Преобразование Йео — Джонсона (Yeo-Johnson) — обобщение, допускающее нулевые и отрицательные значения:

x^{(\lambda)} = \begin{cases} \dfrac{(x+1)^{\lambda} - 1}{\lambda}, & \lambda \neq 0,\ x \geq 0 \\[4pt] \ln(x+1), & \lambda = 0,\ x \geq 0 \\[4pt] -\dfrac{(-x+1)^{2-\lambda} - 1}{2-\lambda}, & \lambda \neq 2,\ x < 0 \\[4pt] -\ln(-x+1), & \lambda = 2,\ x < 0 \end{cases}

Оба преобразования полезны для сильно асимметричных признаков (доход, число визитов, время ожидания), особенно для моделей, чувствительных к форме распределения.

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

<syntaxhighlight lang="python"> from sklearn.preprocessing import MaxAbsScaler, PowerTransformer, QuantileTransformer

pt = PowerTransformer(method="yeo-johnson") X_pt = pt.fit_transform(X)

qt = QuantileTransformer(output_distribution="normal") X_qt = qt.fit_transform(X) </syntaxhighlight>

Влияние на алгоритмы

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

Чувствительность алгоритмов машинного обучения к масштабу признаков
Алгоритм Чувствительность Обоснование
Линейная / логистическая регрессия с регуляризацией Высокая Регуляризационный штраф зависит от масштаба коэффициентов, который, в свою очередь, зависит от масштаба признаков
Метод опорных векторов (SVM) Высокая Построение разделяющей гиперплоскости и ядровые функции опираются на евклидово расстояние между объектами
Метод ближайших соседей (KNN) Высокая Классификация непосредственно основана на расстояниях между объектами в признаковом пространстве
Метод главных компонент (PCA) Высокая Направления максимальной дисперсии определяются абсолютным масштабом признаков, а не их относительной значимостью
Кластеризация методом k-средних Высокая Формирование кластеров основано на расстояниях до центроидов
Нейронные сети (градиентное обучение) Высокая (влияет на скорость и устойчивость сходимости) Разномасштабные входы приводят к вытянутому рельефу функции потерь и неравномерным градиентам по слоям
Деревья решений Низкая Разбиения строятся по пороговым значениям одного признака независимо от масштаба остальных
Случайный лес Низкая Ансамбль деревьев решений, наследует их инвариантность к монотонным преобразованиям признаков
Градиентный бустинг (XGBoost, LightGBM, CatBoost) Низкая Также опирается на пороговые разбиения по отдельным признакам
Наивный байесовский классификатор Низкая / умеренная Оценивает распределение каждого признака отдельно; масштаб не влияет на итоговую разделяющую способность

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

Влияние на регуляризацию

L1- и L2-регуляризация штрафуют величину коэффициентов модели. Для линейной регрессии с L2-штрафом (гребневая регрессия) функционал имеет вид:

L(\beta) = \sum_{i=1}^{n}\left(y_i - \beta_0 - \sum_{j=1}^{p}\beta_j x_{ij}\right)^2 + \lambda \sum_{j=1}^{p}\beta_j^2

а для L1-регуляризации (лассо) — соответственно с штрафом \lambda\sum_{j}|\beta_j|. В обоих случаях величина штрафа зависит исключительно от численного значения коэффициента \beta_j, а не от того, насколько признак x_j в действительности значим для предсказания.

Проблема в том, что масштаб коэффициента обратно пропорционален масштабу признака: если признак измерен в рублях с диапазоном значений порядка 10^510^6, соответствующий ему коэффициент естественным образом окажется очень малым (порядка 10^{-5}–< tex>10^{-6}</tex>) просто для того, чтобы вклад \beta_j x_j в предсказание оставался разумной величины. Признак же, измеренный в единицах (например, число визитов в месяц), потребует коэффициента на несколько порядков больше. Регуляризация в этом случае штрафует признаки неравномерно — не пропорционально их реальной значимости, а обратно пропорционально их естественному масштабу: крупномасштабные признаки получают заниженный (и потому слабо штрафуемый) коэффициент, тогда как мелкомасштабные — завышенный и, соответственно, сильнее подавляемый. Особенно чувствительно к этому L1-регуляризация: поскольку она способна обнулять коэффициенты полностью, отбор признаков при несогласованных масштабах оказывается смещённым в пользу признаков с большим численным диапазоном, а не в пользу признаков с наибольшей предсказательной силой.

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

Сравнение методов

Метод Формула Диапазон результата Устойчивость к выбросам Основные плюсы Основные минусы
Min-Max x'=\frac{x-x_{min}}{x_{max}-x_{min}} [0,1] (настраиваемый) Низкая Фиксированный, интерпретируемый диапазон; сохраняет форму распределения Сильно искажается единичными выбросами; новые данные вне обучающего диапазона выходят за границы
Z-score x'=\frac{x-\mu}{\sigma} Теоретически не ограничен (практически [-3,3]) Умеренная Стандарт для линейных моделей, SVM, PCA, нейросетей; интерпретация в единицах стандартного отклонения Среднее и дисперсия чувствительны к выбросам
Robust x'=\frac{x-Q_2}{Q_3-Q_1} Не ограничен Высокая Устойчив к выбросам и асимметрии распределения Не даёт единичной дисперсии; менее привычная интерпретация
MaxAbs x'=\frac{x}{|x_{max}|} [-1,1] Низкая Сохраняет разреженность данных (нули остаются нулями) Чувствителен к выбросам, как и Min-Max
PowerTransformer нелинейное степенное преобразование Приближается к нормальному распределению Умеренная Снижает асимметрию, стабилизирует дисперсию Box-Cox требует строго положительных значений; интерпретация затруднена
QuantileTransformer преобразование по эмпирической функции распределения [0,1] либо нормальное Высокая Полностью устраняет влияние выбросов и асимметрии Нелинейно; может исказить взаимосвязи между признаками, риск переобучения на малых выборках

Пример: подготовка данных для логистической регрессии в задаче прогнозирования оттока клиентов

Рассмотрим упрощённый набор данных телекоммуникационной компании для задачи прогнозирования оттока (churn) с двумя признаками — стажем обслуживания (в месяцах) и ежемесячным платежом (в рублях):

Клиент Стаж, мес. Платёж, руб./мес. Отток
1 2 3 500 1
2 34 1 200 0
3 58 4 200 0
4 4 900 1
5 45 5 600 0

Стаж имеет среднее \mu \approx 28{,}6 и стандартное отклонение \sigma \approx 22{,}25; платёж — среднее \mu \approx 3080 и стандартное отклонение \sigma \approx 1792{,}65. После стандартизации по формуле x' = (x-\mu)/\sigma:

Клиент Стаж (станд.) Платёж (станд.) Отток
1 −1,196 0,234 1
2 0,243 −1,049 0
3 1,321 0,625 0
4 −1,106 −1,216 1
5 0,737 1,406 0

До масштабирования диапазон платежа (900–5600) на два порядка превышает диапазон стажа (2–58). При обучении логистической регрессии градиентными методами это означа ет, что частная производная функции потерь по коэффициенту при платеже на несколько порядков отличается по величине от производной по коэффициенту при стаже, и без индивидуальной настройки шага обучения для каждого признака сходимость существенно замедляется. Кроме того, при использовании L2- или L1-регуляризации коэффициент при платеже, обученный на исходных данных, будет иметь порядок 10^{-4}, а коэффициент при стаже — порядок 10^{-2}10^{-1}; сравнение таких коэффициентов напрямую ничего не говорит об относительной значимости признаков. После стандартизации оба признака приведены к общему масштабу (нулевое среднее, единичная дисперсия), их вклад в предсказание и в регуляризационный штраф сопоставим, а абсолютные значения обученных коэффициентов допустимо интерпретировать как меру относительной важности признака при фиксированной силе регуляризации.

<syntaxhighlight lang="python"> from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.pipeline import Pipeline

pipeline = Pipeline([

   ("scaler", StandardScaler()),
   ("model", LogisticRegression(penalty="l2", C=1.0))

]) pipeline.fit(X_train, y_train) </syntaxhighlight>

Существен методический момент: параметры масштабирования (\mu, \sigma, x_{min}, x_{max}, Q_1, Q_2, Q_3) должны вычисляться исключительно на обучающей выборке методом fit и затем применяться к валидационной и тестовой выборкам методом transform, без повторного вычисления статистик на них. Нарушение этого правила приводит к утечке информации из тестовой выборки в процесс обучения (data leakage) и завышенной оценке качества модели.

Практические рекомендации

  • Для линейных и логистических моделей с регуляризацией — стандартизация (z-score); при наличии выраженных выбросов — робастное масштабирование.
  • Для метода опорных векторов, метода ближайших соседей, k-средних и метода главных компонент — стандартизация практически обязательна, поскольку эти методы напрямую оперируют расстояниями или дисперсией.
  • Для деревьев решений, случайного леса и градиентного бустинга — масштабирование, как правило, не требуется, поскольку эти алгоритмы инвариантны к монотонным преобразованиям отдельных признаков.
  • Для нейронных сетей — стандартизация или min-max scaling к диапазону [0,1] либо [-1,1], в зависимости от функций активации; для сверточных сетей, работающих с изображениями, min-max к [0,1] — стандартная практика.
  • При наличии выбросов, которые не являются ошибками измерения и должны быть сохранены в выборке, — робастное масштабирование или QuantileTransformer вместо min-max и z-score.
  • Для разреженных данных (например, TF-IDF, one-hot представления с большим числом признаков) — MaxAbsScaler, не разрушающий разреженность, в отличие от методов, включающих центрирование.
  • При сильной асимметрии распределения признака (доход, время ожидания, количество событий) — PowerTransformer перед стандартизацией.
  • Параметры масштабирования всегда вычисляются на обучающей выборке и фиксируются для последующего применения к новым данным; включение шага масштабирования в единый конвейер (sklearn.pipeline.Pipeline) снижает риск утечки данных при кросс-валидации.

См. также

Литература

  • Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. — 2nd ed. — Springer, 2009.
  • Bishop C. M. Pattern Recognition and Machine Learning. — Springer, 2006.
  • Géron A. Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow. — 3rd ed. — O'Reilly, 2022.
  • Zheng A., Casari A. Feature Engineering for Machine Learning.

Microsoft Azure Web App - Error 404 pipeline.fit — O'Reilly, 2018.

  • Box G. E. P., Cox D. R. An Analysis of Transformations // Journal of the Royal Statistical Society, Series B. — 1964. — Vol. 26, No. 2.
  • Yeo I.-K., Johnson R. A. A New Family of Power Transformations to Improve Normality or Symmetry // Biometrika. — 2000. — Vol. 87, No. 4.
  • Ioffe S., Szegedy C. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift // Proceedings of the 32nd International Conference on Machine Learning (ICML). — 2015.
  • Scikit-learn developers. Preprocessing data // Scikit-learn User Guide. — scikit-learn.org/stable/modules/preprocessing.html

```

Личные инструменты