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

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

(Различия между версиями)
Перейти к: навигация, поиск
 
(3 промежуточные версии не показаны)
Строка 1: Строка 1:
-
```wikitext
+
```
-
{{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:00, 10 июля 2026 (MSD)}}
+
{{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:56, 10 июля 2026 (MSD)}}
-
'''Контрастивное обучение''' (''contrastive learning'') — семейство методов [[Самообучение|самообучения]] (self-supervised learning), в которых модель обучается строить представления (embeddings) объектов исходя не из явных меток класса, а из отношений сходства между парами или наборами объектов. Основной принцип формулируется коротко: похожие объекты должны иметь близкие представления, непохожие — далёкие. Эта идея легла в основу современных методов предобучения в [[Компьютерное зрение|компьютерном зрении]], [[Обработка естественного языка|обработке естественного языка]] и мультимодальном обучении, включая модели типа [[CLIP]].
+
'''Нормализация признаков''' и '''стандартизация признаков''' (обобщённо — ''масштабирование признаков'', англ. ''feature scaling'') — методы [[Предобработка данных|предварительной обработки данных]], приводящие числовые [[Признак|признаки]] к сопоставимому диапазону значений или к сопоставимой статистической форме распределения. Масштабирование не меняет информативность признака в статистическом смысле (взаимную связь с целевой переменной), но существенно влияет на поведение многих алгоритмов [[Машинное обучение|машинного обучения]] — от скорости сходимости [[Градиентный спуск|градиентных методов]] до корректности работы [[Регуляризация|регуляризации]] и методов, основанных на расстояниях между объектами.
-
== Введение ==
+
В литературе термины употребляются не вполне единообразно. В узком смысле ''нормализацией'' называют приведение признака к фиксированному диапазону, чаще всего <tex>[0,1]</tex> (min-max scaling), а ''стандартизацией'' — приведение к нулевому среднему и единичной дисперсии (z-score). В широком смысле оба термина нередко используются как синонимы для обозначения любого масштабирования признаков; в данной статье эти понятия разграничиваются в узком, более строгом смысле. Наряду с ними рассматривается робастное масштабирование и ряд специализированных преобразований (MaxAbsScaler, PowerTransformer, QuantileTransformer), реализованных, в частности, в модуле <tt>sklearn.preprocessing</tt> библиотеки [[Scikit-learn|scikit-learn]].
-
Идея обучения по парам «похоже/непохоже» восходит к работам по метрическому обучению начала 1990-х годов, где сиамские нейронные сети применялись для верификации подписей (Bromley et al., 1993). Формальный вид современного контрастивного лосса был предложен в работе Hadsell, Chopra и LeCun (2006) «Dimensionality Reduction by Learning an Invariant Mapping», где для задачи снижения размерности использовалась функция потерь, притягивающая пары точек с одинаковой меткой окрестности и отталкивающая пары с разными метками — с использованием отступа (margin), аналогично более поздним триплет-лоссам.
+
== Постановка задачи ==
-
Второй важный этап — работа ван ден Оорда и соавторов (Oord et al., 2018) «Representation Learning with Contrastive Predictive Coding», введшая функцию потерь InfoNCE и связавшая контрастивное обучение с оценкой взаимной информации между связанными фрагментами данных (например, соседними отрезками аудиосигнала). Это дало теоретическое обоснование того, почему контрастивные цели вообще позволяют извлекать полезные представления без разметки.
+
Признаки, описывающие объекты реального мира, как правило, измерены в разных единицах и имеют разные диапазоны значений. Рассмотрим задачу [[Классификация|классификации]] клиентов банка, где каждый объект описывается двумя признаками — возрастом (в годах) и месячным доходом (в рублях):
-
Третий, решающий для практики этап — статья Chen et al. (2020) «A Simple Framework for Contrastive Learning of Visual Representations» (SimCLR), показавшая, что при достаточно сильных аугментациях, большом размере батча и добавлении небольшой проекционной головки простая контрастивная цель на изображениях позволяет получить представления, по качеству приближающиеся к представлениям, полученным при обучении с учителем на ImageNet. После этой работы контрастивное обучение стало одним из основных подходов к предобучению без разметки, породив линейку методов — MoCo, BYOL, SimSiam — и в дальнейшем — мультимодальные модели вроде CLIP.
+
{| class="wikitable"
 +
! Клиент !! Возраст, лет !! Доход, руб./мес.
 +
|-
 +
| Иванов || 25 || 45 000
 +
|-
 +
| Петров || 45 || 47 000
 +
|}
-
== Постановка задачи ==
+
Возраст изменяется в диапазоне единиц-десятков, доход — в диапазоне десятков тысяч. Если вычислить евклидово расстояние между объектами без предварительного масштабирования:
-
Формально задача ставится так: имеется набор немаркированных данных <tex>X = \{x_1, \dots, x_N\}</tex> (изображения, тексты, графы, аудиозаписи). Требуется найти функцию-энкодер <tex>f_\theta: X \to \mathbb{R}^d</tex>, отображающую объект в вектор фиксированной размерности так, чтобы это представление было полезно для широкого круга последующих задач (downstream tasks) — классификации, кластеризации, поиска ближайших соседей, дообучения (fine-tuning).
+
:: <tex>d = \sqrt{(45-25)^2 + (47000-45000)^2} = \sqrt{400 + 4\,000\,000} \approx 2000{,}1</tex>
-
В отличие от обучения с учителем, где обучающий сигнал задаётся парами <tex>(x, y)</tex> с истинной меткой <tex>y</tex>, в контрастивном обучении сигнал формируется искусственно, из самой структуры данных: каждому объекту сопоставляется один или несколько «позитивных» связанных объектов (например, другая аугментация той же картинки) и множество «негативных» не связанных с ним объектов. Обучение сводится к минимизации функции потерь, зависящей только от взаимного расположения представлений в пространстве embedding, без обращения к внешней разметке.
+
признак «возраст» практически не вносит вклада в итоговое расстояние: его слагаемое (400) на четыре порядка меньше слагаемого дохода (4 000 000). Для любого метода, опирающегося на расстояния между объектами — [[Метод ближайших соседей|метода ближайших соседей]], [[Метод опорных векторов|метода опорных векторов]], кластеризации методом k-средних, [[Метод главных компонент|метода главных компонент]] это означает, что признак с большим численным диапазоном будет доминировать в решении независимо от его действительной значимости для задачи.
-
Качество полученных представлений принято оценивать протоколом линейной оценки (linear evaluation protocol): веса энкодера замораживаются, поверх представления <tex>h = f_\theta(x)</tex> обучается только линейный классификатор с использованием размеченных данных, и измеряется точность этого классификатора. Такой протокол позволяет сравнивать разные методы предобучения независимо от архитектуры «головы» классификатора.
+
Аналогичная проблема возникает при обучении моделей [[Градиентный спуск|градиентными методами]]. Функция потерь как функция параметров модели образует в пространстве весов некоторую поверхность; при сильно различающихся масштабах признаков линии уровня этой поверхности превращаются в вытянутые эллипсы с большим числом обусловленности гессиана. Градиентный спуск на такой поверхности движется зигзагообразно, и для достижения минимума требуется существенно больше итераций либо очень малый шаг обучения. После масштабирования признаков линии уровня приближаются по форме к окружностям, направление антиградиента указывает более точно на минимум, и сходимость ускоряется — этот эффект хорошо задокументирован для [[Линейная регрессия|линейной]] и [[Логистическая регрессия|логистической регрессии]], а также для [[Нейронная сеть|нейронных сетей]].
-
== Интуитивная идея ==
+
== Нормализация (min-max scaling) ==
-
Рассмотрим простой пример. Пусть есть фотография кота. Применим к ней случайный кроп, поворот, изменение цветового баланса — получим другую картинку, которая всё ещё, безусловно, изображает кота. Эти две аугментированные версии одного изображения образуют '''позитивную пару''': сеть должна научиться отображать их в близкие точки пространства представлений, несмотря на то что попиксельно эти изображения могут сильно различаться.
+
'''Min-max scaling''' линейно преобразует признак так, чтобы его значения попали в заданный диапазон, чаще всего <tex>[0,1]</tex>:
-
Возьмём теперь произвольную другую фотографию из обучающей выборки — например, изображение автомобиля. Пара «кот — автомобиль» образует '''негативную пару''': их представления должны быть далеки друг от друга.
+
:: <tex>x' = \frac{x - x_{min}}{x_{max} - x_{min}}</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>
-
== Математическая формализация ==
+
Метод сохраняет форму исходного распределения (все относительные расстояния между значениями пропорционально сжимаются или растягиваются), что удобно, когда диапазон признака имеет содержательный смысл — например, для признаков, ограниченных по своей природе (доля, вероятность, пиксельная интенсивность 0–255), а также при подготовке входов для нейронных сетей с сигмоидными или иными ограниченными функциями активации.
-
Пусть энкодер <tex>f_\theta</tex> отображает объект <tex>x</tex> в представление <tex>h = f_\theta(x)</tex>. Рассмотрим три исторически последовательных формулировки контрастивного лосса.
+
Существенный недостаток — высокая чувствительность к выбросам, поскольку <tex>x_{min}</tex> и <tex>x_{max}</tex> определяются единственными экстремальными наблюдениями. Продемонстрируем это на выборке значений дохода (тыс. руб.): 30, 45, 50, 55, 60, 65, 400, где последнее значение — аномально высокий доход.
-
'''Triplet Loss.''' Функция была популяризирована в задачах метрического обучения, в частности в работе FaceNet (Schroff et al., 2015). Для тройки (якорь <tex>a</tex>, позитив <tex>p</tex>, негатив <tex>n</tex>) и функции расстояния <tex>d(u,v) = \|u - v\|_2</tex> лосс задаётся как:
+
Здесь <tex>x_{min}=30</tex>, <tex>x_{max}=400</tex>, диапазон равен 370. После min-max масштабирования:
-
:: <tex>\mathcal{L}_{triplet}(a,p,n) = \max\bigl(0,\; d(f(a),f(p))^2 - d(f(a),f(n))^2 + \alpha\bigr)</tex>
+
{| class="wikitable"
 +
! Исходное значение !! После Min-Max
 +
|-
 +
| 30 || 0,000
 +
|-
 +
| 45 || 0,041
 +
|-
 +
| 50 || 0,054
 +
|-
 +
| 55 || 0,068
 +
|-
 +
| 60 || 0,081
 +
|-
 +
| 65 || 0,095
 +
|-
 +
| 400 (выброс) || 1,000
 +
|}
-
где <tex>\alpha</tex> — гиперпараметр отступа (margin). Лосс штрафует ситуацию, когда позитив не отделён от негатива хотя бы на величину <tex>\alpha</tex>; при выполнении неравенства с запасом градиент равен нулю. Существенный практический недостаток триплет-лосса — сильная зависимость от стратегии подбора триплетов (triplet mining): случайно выбранные тройки быстро становятся тривиальными (лосс равен нулю), и для эффективного обучения требуется добывать «трудные» негативы.
+
Единственный выброс растянул диапазон настолько, что все «типичные» значения оказались сжаты в узкий интервал <tex>[0;\,0{,}095]</tex> и стали практически неразличимы для алгоритма. Это ключевое ограничение метода: перед его применением рекомендуется отдельно проверить данные на наличие выбросов (см. [[Выброс|выбросы]]).
-
'''InfoNCE.''' Введена в работе Oord et al. (2018) в рамках метода Contrastive Predictive Coding. В отличие от триплет-лосса, сопоставляет один позитив сразу множеству негативов через softmax:
+
В scikit-learn метод реализован классом <tt>MinMaxScaler</tt>:
-
:: <tex>\mathcal{L}_{InfoNCE} = -\,\mathbb{E}\left[\log \frac{\exp\bigl(f(x)^{\top} f(x^{+})/\tau\bigr)}{\displaystyle\sum_{x_i \in \{x^+, x_1,\dots,x_{N-1}\}} \exp\bigl(f(x)^{\top} f(x_i)/\tau\bigr)}\right]</tex>
+
<syntaxhighlight lang="python">
 +
from sklearn.preprocessing import MinMaxScaler
-
где <tex>x^+</tex> — позитивный пример, <tex>x_1,\dots,x_{N-1}</tex> — негативные примеры, <tex>\tau</tex> — параметр температуры. Авторы показали, что минимизация этого выражения эквивалентна максимизации нижней оценки взаимной информации <tex>I(x; x^+)</tex> между двумя связанными представлениями данных — отсюда название InfoNCE (information noise-contrastive estimation).
+
scaler = MinMaxScaler(feature_range=(0, 1))
 +
X_scaled = scaler.fit_transform(X)
 +
</syntaxhighlight>
-
'''NT-Xent (SimCLR).''' В работе Chen et al. (2020) используется нормализованная температурная кросс-энтропия (normalized temperature-scaled cross entropy). Из батча размера <tex>N</tex> с помощью двух независимых случайных аугментаций формируется <tex>2N</tex> представлений; для каждой позитивной пары <tex>(i,j)</tex>, полученной из одного исходного изображения, лосс имеет вид:
+
== Стандартизация (z-score) ==
-
:: <tex>\ell_{i,j} = -\log \frac{\exp\bigl(\mathrm{sim}(z_i,z_j)/\tau\bigr)}{\displaystyle\sum_{k=1}^{2N}\mathbb{1}_{[k\neq i]}\,\exp\bigl(\mathrm{sim}(z_i,z_k)/\tau\bigr)}</tex>
+
'''Стандартизация''' (z-score normalization) центрирует признак относительно среднего и масштабирует его по стандартному отклонению:
-
где <tex>\mathrm{sim}(u,v) = \dfrac{u^{\top}v}{\|u\|\,\|v\|}</tex> — косинусное сходство, а <tex>z_i = g(f_\theta(x_i))</tex> — представление после проекционной головки. Итоговый лосс на батч — среднее <tex>\ell_{i,j}</tex> по всем <tex>2N</tex> позитивным парам (в обе стороны). Все остальные <tex>2N-2</tex> представления в батче выступают негативами для пары <tex>(i,j)</tex> — так называемые in-batch negatives.
+
:: <tex>x' = \frac{x - \mu}{\sigma}</tex>
-
Температура <tex>\tau</tex> играет роль настройки «жёсткости» распределения softmax: малые значения <tex>\tau</tex> сильнее штрафуют близкие негативы (эффект, близкий к hard negative mining), но одновременно делают обучение более чувствительным к шуму и переобучению на конкретных негативах внутри батча.
+
где
-
== Архитектурные решения ==
+
:: <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>
-
'''Сиамские сети''' (Siamese networks) — базовая архитектурная схема контрастивного обучения: два (или более) прохода одного и того же энкодера с общими весами <tex>f_\theta</tex> применяются к разным входам (например, к двум аугментациям одного изображения), после чего представления сравниваются функцией расстояния или сходства. Название закрепилось за архитектурой ещё в работах по верификации подписей и лиц 1990–2000-х годов.
+
После преобразования признак имеет нулевое среднее и единичную дисперсию: <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>. При этом сама по себе стандартизация не делает распределение нормальным — она лишь центрирует и масштабирует его, сохраняя исходную форму (асимметрию, эксцесс).
-
'''Проекционная головка.''' Ключевое наблюдение SimCLR состоит в том, что контрастивный лосс лучше вычислять не непосредственно на представлении <tex>h = f_\theta(x)</tex>, которое затем используется в последующих задачах, а на выходе дополнительной небольшой сети — проекционной головки <tex>g(\cdot)</tex>, обычно двухслойного MLP с нелинейностью ReLU: <tex>z = g(h)</tex>. После предобучения головка <tex>g</tex> отбрасывается, для последующих задач используется <tex>h</tex>. Объяснение эффекта: контрастивная цель заставляет модель отбрасывать информацию, инвариантную относительно применённых аугментаций (например, цвет объекта, если применялось цветовое искажение) — такая информация может быть полезна для последующих задач, но вредна для контрастивной цели. Проекционная головка «принимает удар на себя», сохраняя более общее представление в <tex>h</tex>.
+
Продолжим пример с доходом. Для выборки {30, 45, 50, 55, 60, 65, 400} среднее <tex>\mu \approx 100{,}71</tex>, стандартное отклонение <tex>\sigma \approx 122{,}63</tex>. После стандартизации:
-
'''Симметричные и асимметричные архитектуры.''' В симметричной схеме (SimCLR) оба входа проходят через один и тот же энкодер с общими весами, и градиент течёт по обеим ветвям одинаково. В асимметричных схемах ветви различаются: например, в MoCo один энкодер (query encoder) обучается градиентным спуском, а второй (key encoder) обновляется через экспоненциальное скользящее среднее (momentum, EMA) весов первого энкодера и не получает градиента напрямую — это стабилизирует представления негативов, накапливаемых в очереди. В BYOL и SimSiam асимметрия усиливается ещё сильнее: на «онлайн»-ветви добавляется дополнительная сеть-предиктор, а на «целевой» ветви применяется остановка градиента (stop-gradient) — при этом негативные примеры вовсе не требуются.
+
{| 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
 +
|}
-
== Стратегии аугментации данных ==
+
По сравнению с min-max масштабированием типичные значения распределены несколько шире (интервал <tex>[-0{,}58;\,-0{,}29]</tex> против <tex>[0;\,0{,}095]</tex>), однако среднее и стандартное отклонение по-прежнему вычисляются с учётом выброса, а значит, остаются им искажены.
-
Выбор аугментаций определяет, какие инварианты выучит модель, и является одним из решающих факторов качества контрастивного обучения.
+
Стандартизация — метод по умолчанию для линейных и логистических моделей с регуляризацией, [[Метод опорных векторов|метода опорных векторов]], [[Метод главных компонент|метода главных компонент]] и линейного дискриминантного анализа, а также для большинства архитектур нейронных сетей. В отличие от min-max scaling, результат не ограничен фиксированным диапазоном, что не создаёт проблем при появлении на этапе применения модели значений, выходящих за пределы диапазона обучающей выборки.
-
'''Изображения.''' В экспериментах SimCLR показано, что сильнее всего на качество влияет комбинация случайного кропа с масштабированием (random resized crop) и цветовых искажений (color jitter, случайное преобразование яркости, контраста, насыщенности и оттенка). По отдельности ни один из этих видов аугментации не даёт сравнимого эффекта: случайный кроп без изменения цвета позволяет модели решать задачу по одним лишь статистикам цвета, не выучивая содержательных признаков формы и текстуры. Дополнительно применяются размытие по Гауссу, перевод в оттенки серого, горизонтальное отражение; в ряде более поздних методов (BYOL) добавляется соляризация.
+
<syntaxhighlight lang="python">
 +
from sklearn.preprocessing import StandardScaler
-
'''Текст.''' Используются маскирование токенов, обратный перевод (back-translation), синонимическая замена слов, случайные удаление/вставка/перестановка слов (техника EDA), а также кроппинг фрагментов документа. Отдельный интересный приём — метод SimCSE, где две «разные» версии одного и того же предложения получаются простым повторным пропуском через энкодер с включённым dropout: разные случайные маски dropout дают немного разные представления одного и того же текста, которые и образуют позитивную пару.
+
scaler = StandardSca
 +
ler()
 +
X_scaled = scaler.fit_transform(X)
 +
</syntaxhighlight>
-
'''Графы.''' В графовом контрастивном обучении (например, GraphCL) применяются случайное удаление рёбер и узлов, маскирование атрибутов узлов, сэмплирование подграфов и аугментации на основе диффузии графа или случайных блужданий — каждая операция должна сохранять содержательную структуру графа, не разрушая его смысловую связность.
+
Стоит отметить, что <tt>StandardScaler</tt> в scikit-learn по умолчанию вычисляет смещённую (population) дисперсию, то есть делит сумму квадратов отклонений на <tex>n</tex>, а не на <tex>n-1</tex>.
-
Общий принцип: аугментация должна быть достаточно сильной, чтобы задача не решалась тривиальными «короткими путями» (shortcuts), но не настолько сильной, чтобы разрушить семантику, важную для последующих задач. Подбор набора аугментаций — во многом эмпирическая, специфичная для модальности процедура.
+
== Робастное масштабирование ==
-
== Проблема коллапса представлений ==
+
'''Робастное масштабирование''' (robust scaling) использует вместо среднего и стандартного отклонения статистики, устойчивые к выбросам, — [[Медиана|медиану]] и [[Квартиль|межквартильный размах]] (IQR):
-
'''Коллапс представлений''' (representation collapse) — вырожденное решение, при котором энкодер отображает все входы в одну и ту же (или почти одну и ту же) точку пространства представлений. При таком решении расстояние между любыми позитивными парами тривиально минимально, однако представление не несёт никакой информации об исходных данных и бесполезно для последующих задач. Проблема возникает потому, что цель «сблизить позитивы» сама по себе не имеет механизма, препятствующего вырождению — константное отображение формально идеально решает эту часть задачи.
+
:: <tex>x' = \frac{x - Q_2}{Q_3 - Q_1}</tex>
-
Основные способы борьбы с коллапсом:
+
где <tex>Q_2</tex> — медиана (второй квартиль), <tex>Q_1</tex> и <tex>Q_3</tex> — первый и третий квартили, а разность <tex>Q_3-Q_1</tex> — межквартильный размах (IQR), охватывающий центральные 50 % наблюдений.
-
* '''Явные негативные примеры.''' В InfoNCE-подобных лоссах наличие негативов создаёт отталкивающую силу: минимизация лосса требует не просто сближения позитива, а его отличимости от множества негативов через softmax, что делает константное решение невыгодным. Для устойчивой оценки такого softmax требуется достаточно большое число негативов — отсюда потребность SimCLR в больших батчах либо MoCo в очереди (queue) накопленных представлений.
+
Медиана и квартили — порядковые статистики, устойчивые к экстремальным значениям: смещение одного выброса в область бесконечности практически не меняет положение медианы или границ IQR, поскольку эти величины определяются не самими значениями, а их рангом в отсортированной выборке.
-
* '''Остановка градиента (stop-gradient).''' В BYOL и особенно наглядно в SimSiam показано, что коллапса можно избежать вовсе без негативных примеров: достаточно асимметрии между двумя ветвями сети (дополнительный предиктор на одной ветви) и остановки градиента на другой ветви. Полного теоретического объяснения этому явлению до конца не дано, но эмпирически и по ряду теоретических аргументов (аналогия с EM-алгоритмом попеременной оптимизации) показано, что такая схема устойчиво избегает вырождения.
+
Завершим сквозной пример с доходом. Для выборки {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>. Сведём все три метода в одну таблицу:
-
* '''Нормализация.''' L2-нормализация представлений (проекция на единичную гиперсферу) в сочетании с батч-нормализацией внутри проекционной головки и предиктора эмпирически связана со стабильностью обучения и, по ряду наблюдений, помогает избегать коллапса — хотя более поздние работы (в частности, эксперименты SimSiam) показывают, что одной нормализации без stop-gradient недостаточно.
+
{| 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
 +
|-
 +
| 60 || 0,081 || −0,332 || 0,25
 +
|-
 +
| 65 || 0,095 || −0,291 || 0,50
 +
|-
 +
| 400 (выброс) || 1,000 || 2,441 || 17,25
 +
|}
-
* '''Явная регуляризация ковариации.''' Отдельное направление — методы Barlow Twins (Zbontar et al., 2021) и VICReg (Bardes et al., 2022), которые вместо контрастивного или предикторного лосса напрямую штрафуют вырождение: требуют, чтобы дисперсия каждой компоненты представления по батчу была не ниже порога, и одновременно минимизируют корреляцию между разными компонентами вектора представления.
+
Различие хорошо видно: под min-max и z-score основная масса «нормальных» значений сжата в узкий интервал из-за влияния выброса на <tex>x_{max}</tex>, <tex>\mu</tex> и <tex>\sigma</tex>. Робастное масштабирование, напротив, не изменило относительное расположение типичных значений (интервал <tex>[-1{,}25;\,0{,}5]</tex> пропорционален исходным различиям), а выброс получил большое по модулю, но не искажающее остальные данные значение — 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''' делит значения признака на максимальный модуль:
 +
 
 +
:: <tex>x' = \frac{x}{|x_{max}|}</tex>
 +
 
 +
Результат попадает в диапазон <tex>[-1,1]</tex>. Важное свойство — преобразование не сдвигает данные (не вычитает среднее или минимум), поэтому нулевые значения остаются нулевыми. Это делает MaxAbsScaler предпочтительным для разреженных матриц (например, TF-IDF представлений текста), где сохранение разреженности критично для памяти и скорости вычислений.
 +
 
 +
'''PowerTransformer''' — семейство нелинейных степенных преобразований, приближающих распределение признака к нормальному и стабилизирующих дисперсию. Преобразование Бокса — Кокса (Box-Cox) определено только для строго положительных значений:
 +
 
 +
:: <tex>x^{(\lambda)} = \begin{cases} \dfrac{x^{\lambda} - 1}{\lambda}, & \lambda \neq 0 \\[4pt] \ln x, & \lambda = 0 \end{cases}</tex>
 +
 
 +
Параметр <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>
 +
 
 +
Оба преобразования полезны для сильно асимметричных признаков (доход, число визитов, время
 +
ожидания), особенно для моделей, чувствительных к форме распределения.
 +
 
 +
'''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>
 +
 
 +
== Влияние на алгоритмы ==
 +
 
 +
Чувствительность к масштабу признаков существенно различается между семействами алгоритмов.
{| class="wikitable"
{| class="wikitable"
-
! Метод !! Год !! Нужны негативные примеры !! Momentum-энкодер !! Механизм против коллапса !! Требования к батчу
+
|+ Чувствительность алгоритмов машинного обучения к масштабу признаков
 +
! Алгоритм !! Чувствительность !! Обоснование
 +
|-
 +
| [[Линейная регрессия|Линейная]] / [[Логистическая регрессия|логистическая регрессия]] с регуляризацией || Высокая || [[Регуляризация|Регуляризационный]] штраф зависит от масштаба коэффициентов, который, в свою очередь, зависит от масштаба признаков
 +
|-
 +
| [[Метод опорных векторов|Метод опорных векторов]] (SVM) || Высокая || Построение разделяющей гиперплоскости и ядровые функции опираются на евклидово расстояние между объектами
 +
|-
 +
| [[Метод ближайших соседей|Метод ближайших соседей]] (KNN) || Высокая || Классификация непосредственно основана на расстояниях между объектами в признаковом пространстве
 +
|-
 +
| [[Метод главных компонент|Метод главных компонент]] (PCA) || Высокая || Направления максимальной дисперсии определяются абсолютным масштабом признаков, а не их относительной значимостью
 +
|-
 +
| Кластеризация методом k-средних || Высокая || Формирование кластеров основано на расстояниях до центроидов
 +
|-
 +
| [[Нейронная сеть|Нейронные сети]] (градиентное обучение) || Высокая (влияет на скорость и устойчивость сходимости) || Разномасштабные входы приводят к вытянутому рельефу функции потерь и неравномерным градиентам по слоям
|-
|-
-
| SimCLR || 2020 || Да (in-batch) || Нет || Негативные примеры + проекционная головка || Очень большой (2048–8192)
+
| [[Дерево решений|Деревья решений]] || Низкая || Разбиения строятся по пороговым значениям одного признака независимо от масштаба остальных
|-
|-
-
| MoCo (v1/v2) || 2019/2020 || Да (очередь) || Да || Негативные примеры из очереди + momentum-энкодер || Умеренный (очередь заменяет большой батч)
+
| [[Случайный лес|Случайный лес]] || Низкая || Ансамбль деревьев решений, наследует их инвариантность к монотонным преобразованиям признаков
|-
|-
-
| BYOL || 2020 || Нет || Да || Асимметрия «онлайн/цель» + предиктор + stop-gradient || Умеренный
+
| [[Градиентный бустинг|Градиентный бустинг]] (XGBoost, LightGBM, CatBoost) || Низкая || Также опирается на пороговые разбиения по отдельным признакам
|-
|-
-
| SimSiam || 2021 || Нет || Нет || Только предиктор + stop-gradient || Умеренный
+
| Наивный байесовский классификатор || Низкая / умеренная || Оценивает распределение каждого признака отдельно; масштаб не влияет на итоговую разделяющую способность
|}
|}
-
'''SimCLR''' (Chen et al., 2020) — симметричная сиамская схема с общей энкодер-проекцией на обеих ветвях, использующая NT-Xent-лосс с in-batch негативами; для достижения качественных представлений требует очень больших батчей, поскольку число негативов ограничено размером батча.
+
Общая закономерность: методы, основанные на пороговых разбиениях одного признака (деревья и их ансамбли), инвариантны к любому монотонному преобразованию масштаба, тогда как методы, использующие расстояния, скалярные произведения или градиентную оптимизацию, чувствительны к нему напрямую.
-
'''MoCo''' (He et al., 2019; версия v2 — Chen et al., 2020) решает проблему больших батчей за счёт отдельной очереди (dictionary) представлений-негативов, накапливаемых из предыдущих итераций, и momentum-энкодера — ключевой сети, чьи веса не обучаются градиентом напрямую, а обновляются как экспоненциальное скользящее среднее весов основной (query) сети. Это позволяет держать большое число негативов (десятки тысяч) при умеренном размере батча.
+
== Влияние на регуляризацию ==
-
'''BYOL''' («Bootstrap Your Own Latent», Grill et al., 2020) полностью отказывается от негативных примеров: онлайн-сеть с дополнительным предиктором обучается предсказывать представление, выдаваемое целевой (target) сетью — копией с momentum-обновлением весов и остановленным градиентом — на другой аугментации того же изображения. Лосс — по существу регрессионный (нормализованная среднеквадратичная ошибка), а не классификационный.
+
[[Регуляризация|L1- и L2-регуляризация]] штрафуют величину коэффициентов модели. Для линейной регрессии с L2-штрафом (гребневая регрессия) функционал имеет вид:
-
'''SimSiam''' (Chen & He, 2021) показывает, что для избежания коллапса momentum-энкодер не обязателен: достаточно простой сиамской сети с общими весами, предиктора на одной ветви и остановки градиента на другой — без негативов, без очереди, без momentum-обновления.
+
:: <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>
-
== Связь с CLIP и мультимодальными моделями ==
+
а для L1-регуляризации (лассо) — соответственно с штрафом <tex>\lambda\sum_{j}|\beta_j|</tex>. В обоих случаях величина штрафа зависит исключительно от численного значения коэффициента <tex>\beta_j</tex>, а не от того, насколько признак <tex>x_j</tex> в действительности значим для предсказания.
-
Контрастивный принцип естественно обобщается на пары объектов разной модальности. Модель [[CLIP]] (Radford et al., 2021, «Learning Transferable Visual Models From Natural Language Supervision») обучает одновременно энкодер изображений и энкодер текста на большом корпусе пар (изображение, подпись), используя, по существу, ту же схему, что и NT-Xent: внутри батча позитивной парой считается соответствующая друг другу пара «изображение — подпись», негативами — все остальные комбинации изображений и подписей внутри батча; лосс вычисляется симметрично — как по строкам, так и по столбцам матрицы косинусных сходств.
+
Проблема в том, что масштаб коэффициента обратно пропорционален масштабу признака: если признак измерен в рублях с диапазоном значений порядка <tex>10^5</tex>–<tex>10^6</tex>, соответствующий ему коэффициент естественным образом окажется очень малым (порядка <tex>10^{-5}</tex>–<
 +
tex>10^{-6}</tex>) просто для того, чтобы вклад <tex>\beta_j x_j</tex> в предсказание оставался разумной величины. Признак же, измеренный в единицах (например, число визитов в месяц), потребует коэффициента на несколько порядков больше. Регуляризация в этом случае штрафует признаки неравномерно — не пропорционально их реальной значимости, а обратно пропорционально их естественному масштабу: крупномасштабные признаки получают заниженный (и потому слабо штрафуемый) коэффициент, тогда как мелкомасштабные — завышенный и, соответственно, сильнее подавляемый. Особенно чувствительно к этому L1-регуляризация: поскольку она способна обнулять коэффициенты полностью, отбор признаков при несогласованных масштабах оказывается смещённым в пользу признаков с большим численным диапазоном, а не в пользу признаков с наибольшей предсказательной силой.
-
Результат такого предобучения — общее пространство представлений, в котором изображение и описывающий его текст оказываются близки. Это позволяет решать задачи zero-shot классификации: класс объекта определяется путём сравнения представления изображения с представлениями текстовых промптов вида «фотография {класс}» без какого-либо дообучения на целевом наборе данных. Подход CLIP послужил основой для последующих мультимодальных контрастивных моделей (например, ALIGN) и широко используется как источник эмбеддингов для задач мультимодального поиска и в качестве управляющего сигнала в генеративных моделях изображений.
+
Именно поэтому стандартизация признаков перед обучением регуляризованных линейных моделей считается стандартной практикой: приведение всех признаков к единичной дисперсии уравнивает условия, при которых регуляризационный штраф применяется к каждому из них, и делает итоговые коэффициенты сопоставимыми как меры относительной значимости признаков.
-
== Пример: обучение представлений на CIFAR-10 с SimCLR ==
+
== Сравнение методов ==
-
Проиллюстрируем типичный пайплайн на примере CIFAR-10 (условные, ориентировочные цифры). В качестве энкодера берётся сеть уменьшенной глубины (например, ResNet-18, адаптированный под разрешение 32×32). Предобучение проводится без меток в течение порядка 200–500 эпох с батчем размера 256–512 (небольшое разрешение CIFAR-10 позволяет обойтись без экстремально больших батчей, характерных для ImageNet), с аугментациями: случайный кроп с изменением масштаба, горизонтальное отражение, цветовые искажения, перевод в оттенки серого. Используется проекционная головка — двухслойный MLP, лосс — NT-Xent с температурой порядка 0.5.
+
{| class="wikitable"
 +
! Метод !! Формула !! Диапазон результата !! Устойчивость к выбросам !! Основные плюсы !! Основные минусы
 +
|-
 +
| Min-Max || <tex>x'=\frac{x-x_{min}}{x_{max}-x_{min}}</tex> || <tex>[0,1]</tex> (настраиваемый) || Низкая || Фиксированный, интерпретируемый диапазон; сохраняет форму распределения || Сильно искажается единичными выбросами; новые данные вне обучающего диапазона выходят за границы
 +
|-
 +
| Z-score || <tex>x'=\frac{x-\mu}{\sigma}</tex> || Теоретически не ограничен (практически [-3,3]) || Умеренная || Стандарт для линейных моделей, SVM, PCA, нейросетей; интерпретация в единицах стандартного отклонения || Среднее и дисперсия чувствительны к выбросам
 +
|-
 +
| Robust || <tex>x'=\frac{x-Q_2}{Q_3-Q_1}</tex> || Не ограничен || Высокая || Устойчив к выбросам и асимметрии распределения || Не даёт единичной дисперсии; менее привычная интерпретация
 +
|-
 +
| MaxAbs || <tex>x'=\frac{x}{|x_{max}|}</tex> || <tex>[-1,1]</tex> || Низкая || Сохраняет разреженность данных (нули остаются нулями) || Чувствителен к выбросам, как и Min-Max
 +
|-
 +
| PowerTransformer || нелинейное степенное преобразование || Приближается к нормальному распределению || Умеренная || Снижает асимметрию, стабилизирует дисперсию || Box-Cox требует строго положительных значений; интерпретация затруднена
 +
|-
 +
| QuantileTransformer || преобразование по эмпирической функции распределения || <tex>[0,1]</tex> либо нормальное || Высокая || Полностью устраняет влияние выбросов и асимметрии || Нелинейно; может исказить взаимосвязи между признаками, риск переобучения на малых выборках
 +
|}
-
После предобучения энкодер замораживается, поверх представления <tex>h</tex> обучается линейный классификатор на полном размеченном наборе CIFAR-10. Ориентировочно такой протокол позволяет получить точность в районе 90% и выше, при том что полностью контролируемое обучение сравнимой по размеру сети на CIFAR-10 обычно даёт порядка 93–95% — то есть контрастивное предобучение без единой метки позволяет приблизиться к качеству обучения с учителем.
+
== Пример: подготовка данных для логистической регрессии в задаче прогнозирования оттока клиентов ==
-
На практике реализовывать подобный пайплайн с нуля не обязательно: библиотека PyTorch Lightning частности, надстройки вроде Lightning Bolts и сторонняя библиотека lightly) предоставляет готовые реализации SimCLR, MoCo, BYOL и SimSiam с настраиваемыми аугментациями и логированием; экосистема Hugging Face предоставляет предобученные контрастивные модели частности, чекпоинты CLIP) и библиотеку sentence-transformers для текстовых представлений, обучаемых по контрастивным и близким к ним схемам.
+
Рассмотрим упрощённый набор данных телекоммуникационной компании для задачи прогнозирования оттока (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"
-
* сильная чувствительность к выбору и силе аугментаций: неудачный набор либо тривиализирует задачу, либо разрушает полезную семантику;
+
! Клиент !! Стаж (станд.) !! Платёж (станд.) !! Отток
-
* методам с явными негативами (SimCLR, MoCo) требуются большие батчи или банки памяти, что увеличивает вычислительные затраты;
+
|-
-
* риск коллапса представлений, требующий дополнительных архитектурных приёмов (stop-gradient, momentum-энкодер, регуляризация ковариации);
+
| 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-регуляризации коэффициент при платеже, обученный на исходных данных, будет иметь порядок <tex>10^{-4}</tex>, а коэффициент при стаже — порядок <tex>10^{-2}</tex>–<tex>10^{-1}</tex>; сравнение таких коэффициентов напрямую ничего не говорит об относительной значимости признаков. После стандартизации оба признака приведены к общему масштабу (нулевое среднее, единичная дисперсия), их вклад в предсказание и в регуляризационный штраф сопоставим, а абсолютные значения обученных коэффициентов допустимо интерпретировать как меру относительной важности признака при фиксированной силе регуляризации.
 +
 
 +
<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>
 +
 
 +
Существен методический момент: параметры масштабирования (<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) и завышенной оценке качества модели.
 +
 
 +
== Практические рекомендации ==
 +
 
 +
* Для '''линейных и логистических моделей с регуляризацией''' — стандартизация (z-score); при наличии выраженных выбросов — робастное масштабирование.
 +
* Для '''метода опорных векторов, метода ближайших соседей, 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>) снижает риск утечки данных при кросс-валидации.
== См. также ==
== См. также ==
-
* [[Самообучение]]
+
 
-
* [[Компьютерное зрение]]
+
* [[Ослабление и усиление шкал признаков]]
-
* [[Обработка естественного языка]]
+
* [[Предобработка данных]]
-
* [[CLIP]]
+
* [[Регуляризация]]
-
* [[SimCLR]]
+
* [[Логистическая регрессия]]
-
* [[MoCo]]
+
* [[Метод главных компонент]]
== Литература ==
== Литература ==
-
# Hadsell R., Chopra S., LeCun Y. Dimensionality Reduction by Learning an Invariant Mapping // CVPR. — 2006.
+
 
-
# Oord A. van den, Li Y., Vinyals O. Representation Learning with Contrastive Predictive Coding // arXiv:1807.03748. — 2018.
+
* Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. — 2nd ed. — Springer, 2009.
-
# Chen T., Kornblith S., Norouzi M., Hinton G. A Simple Framework for Contrastive Learning of Visual Representations // ICML. — 2020.
+
* Bishop C. M. Pattern Recognition and Machine Learning. — Springer, 2006.
-
# He K., Fan H., Wu Y., Xie S., Girshick R. Momentum Contrast for Unsupervised Visual Representation Learning // CVPR. — 2020.
+
* Géron A. Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow. — 3rd ed. — O'Reilly, 2022.
-
# Grill J.-B., Strub F., Altché F. et al. Bootstrap Your Own Latent: A New Approach to Self-Supervised Learning // NeurIPS. — 2020.
+
* Zheng A., Casari A. Feature Engineering for Machine Learning.
-
# Chen X., He K. Exploring Simple Siamese Representation Learning // CVPR. — 2021.
+
Microsoft Azure Web App - Error 404
-
# Radford A., Kim J.W., Hallacy C. et al. Learning Transferable Visual Models From Natural Language Supervision // ICML. — 2021.
+
pipeline.fit
-
# Schroff F., Kalenichenko D., Philbin J. FaceNet: A Unified Embedding for Face Recognition and Clustering // CVPR. — 2015.
+
O'Reilly, 2018.
-
# Wu Z., Xiong Y., Yu S.X., Lin D. Unsupervised Feature Learning via Non-Parametric Instance Discrimination // CVPR. — 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.
-
# Zbontar J., Jing L., Misra I., LeCun Y., Deny S. Barlow Twins: Self-Supervised Learning via Redundancy Reduction // ICML. — 2021.
+
* 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. — [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

```

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