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

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

(Различия между версиями)
Перейти к: навигация, поиск
Строка 1: Строка 1:
{{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 16:49, 10 июля 2026 (MSD)}}
{{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 16:49, 10 июля 2026 (MSD)}}
-
'''Дообучение нейронных сетей''' (''fine-tuning'') — процесс адаптации параметров предварительно обученной модели к новой, обычно более узкой задаче путём продолжения обучения на данных этой задачи. Дообучение является ключевым этапом парадигмы [[Трансферное обучение|трансферного обучения]] и на сегодняшний день представляет собой стандартный способ применения глубоких нейронных сетей к прикладным задачам — вместо обучения архитектуры с нуля.
+
'''Инженерия признаков''' (''feature engineering'') — процесс создания, преобразования, отбора и кодирования признаков, используемых в качестве входа для моделей машинного обучения, с целью повышения их качества и обобщающей способности. Инженерия признаков связывает воедино этапы [[Предобработка данных|предобработки данных]] и построения модели и традиционно считается одним из наиболее трудоёмких, но и наиболее влияющих на итоговое качество этапов практического машинного обучения.
== Введение ==
== Введение ==
-
Схема «[[Предобучение|предобучение]] + дообучение» стала доминирующей практикой в глубоком обучении по простой причине: обучение большой модели с нуля требует огромных объёмов размеченных данных и вычислительных ресурсов, которых часто нет в распоряжении конкретной прикладной задачи. Вместо этого модель сначала обучают на большом, как правило, общедоступном наборе данных (ImageNet для изображений, Wikipedia и Common Crawl для текстов), где она усваивает общие закономерности предметной области контуры и текстуры для изображений, синтаксис и семантику для языка. Затем эта модель, уже обладающая содержательными внутренними представлениями, дообучается на существенно меньшем наборе данных, специфичном для целевой задачи.
+
Под '''признаком''' (feature) понимается измеримая характеристика объекта, используемая моделью в качестве входа. Сырые данные — таблицы транзакций, тексты, изображения, показания датчиков редко представлены в виде, непосредственно пригодном для подачи в модель: они могут содержать пропуски, выбросы, категориальные значения без естественного числового представления или скрывать закономерности, не выражаемые напрямую в исходных полях. Инженерия признаков — это набор приёмов, преобразующих такие сырые данные в представление, из которого модель способна эффективно извлекать закономерности.
-
Такой подход имеет два принципиальных преимущества по сравнению с обучением с нуля. Во-первых, он резко сокращает требуемый объём размеченных данных для целевой задачи: модель начинает не со случайной инициализации весов, а с параметров, уже кодирующих полезные закономерности. Во-вторых, он сокращает вычислительные затраты и время обучения, поскольку большая часть «тяжёлой» работы по извлечению общих признаков уже выполнена на этапе предобучения.
+
== Почему инженерия признаков важна ==
-
Дообучение стало практически повсеместным стандартом с распространением [[Трансформер|трансформерных]] архитектур и [[Большая языковая модель|больших языковых моделей]]: модели типа BERT, GPT, ResNet, CLIP выпускаются как общедоступные предобученные чекпоинты, а подавляющее большинство прикладных систем строится путём их дообучения, а не обучения аналогичной по размеру архитектуры заново.
+
Распространённый тезис в прикладном машинном обучении гласит: качество признаков зачастую важнее выбора алгоритма. Это утверждение не следует понимать буквально в отношении любых задач, но оно отражает практическое наблюдение: удачно сконструированный признак способен сделать закономерность линейно отделимой и тривиальной для простой модели, тогда как при неудачном наборе признаков даже сложная модель вынуждена приближённо восстанавливать эту закономерность по крупицам.
-
== Постановка задачи ==
+
Рассмотрим два характерных примера. '''Удачный признак''': вместо того чтобы подавать модели дату рождения клиента как есть, полезно вычислить возраст — разность между текущей датой и датой рождения. Возраст напрямую коррелирует с большинством практических целевых переменных (кредитный риск, склонность к покупке определённых товаров), тогда как исходная дата в формате «день-месяц-год» такой корреляции почти не несёт: модели пришлось бы самостоятельно открыть, что именно разность дат имеет значение.
-
Пусть имеется модель с параметрами <tex>\theta_0</tex>, обученная на большом исходном наборе данных <tex>\mathcal{D}_{src}</tex> для решения некоторой исходной задачи (например, классификации на 1000 классов ImageNet или предсказания следующего токена на корпусе текстов). Требуется адаптировать эту модель к целевой задаче с набором данных <tex>\mathcal{D}_{tgt}</tex>, который, как правило, существенно меньше исходного и может иметь другое распределение признаков, другое число классов или вовсе другой тип разметки.
+
'''Неудачный признак''' — обратный случай: включение в модель идентификатора клиента или номера транзакции в качестве числового признака. Такой признак не несёт содержательной информации о целевой переменной, но может создавать иллюзию предсказательной силы за счёт случайных совпадений в обучающей выборке (data leakage через порядковый номер, коррелирующий с временем), что приводит к переобучению и резкому падению качества на новых данных.
-
Формально дообучение сводится к продолжению оптимизации параметров, инициализированных значением <tex>\theta_0</tex>, на функции потерь целевой задачи:
+
Другой типичный пример полезного нелинейного преобразования — логарифмирование признака с сильно скошенным (skewed) распределением, например, дохода или цены: разность между доходами 10 000 и 20 000 денежных единиц содержательно отличается от разности между 1 010 000 и 1 020 000, и логарифмическое преобразование <tex>x' = \log(x+1)</tex> переводит мультипликативные отношения в аддитивные, что облегчает работу линейных моделей и стабилизирует дисперсию признака.
-
:: <tex>\theta^{*} = \arg\min_{\theta} \; \mathcal{L}_{tgt}(\theta), \quad \theta_{init} = \theta_0</tex>
+
== Создание признаков (Feature Generation) ==
-
Ключевое отличие от обучения с нуля не в формуле, а в начальной точке оптимизации и, как правило, в существенно меньшей скорости обучения, поскольку задача состоит не в том, чтобы заново «выучить» представления, а в том, чтобы аккуратно скорректировать уже накопленные знания под особенности целевого распределения данных, не разрушив их.
+
'''Создание признаков''' построение новых переменных на основе сырых данных, использующее либо предметные знания (domain knowledge), либо автоматические комбинаторные схемы.
-
== Стратегии дообучения ==
+
Извлечение признаков из сырых данных типично для полей даты и времени: из единственного поля timestamp можно извлечь день недели, час суток, номер месяца, признак выходного дня или праздника — каждый из них может нести самостоятельную предсказательную силу, скрытую в исходном представлении.
-
Выбор конкретной стратегии дообучения определяется объёмом целевых данных, степенью их близости к исходному распределению и доступными вычислительными ресурсами.
+
Использование предметных знаний позволяет строить признаки, отражающие содержательные закономерности предметной области: например, в задаче кредитного скоринга — отношение суммы долга к доходу (debt-to-income ratio), в задаче анализа веб-трафика — время, проведённое на странице, делённое на число просмотренных страниц.
-
'''Полное дообучение''' (full fine-tuning) — обновлению градиентным спуском подвергаются все параметры модели, включая самые ранние слои. Даёт наибольшую гибкость адаптации и, при достаточном объёме целевых данных, как правило, наилучшее итоговое качество. Требует, однако, хранения градиентов и состояний оптимизатора для всех параметров модели, что для современных моделей с миллиардами параметров может быть неподъёмно с точки зрения памяти.
+
'''Комбинированные признаки''' строятся простыми арифметическими операциями над существующими признаками: суммой (совокупный доход домохозяйства как сумма доходов его членов), разностью (изменение показателя между двумя измерениями), отношением (плотность населения как отношение численности к площади) или произведением (признаки взаимодействия, interaction features, отражающие совместный эффект двух переменных, не сводимый к сумме их отдельных эффектов).
-
'''Дообучение только последних слоёв''' (feature extraction, linear probing) — все слои, кроме последних (обычно — только классификационная «голова»), замораживаются: их веса не изменяются, через них лишь выполняется прямой проход. Обучению подвергается небольшое число параметров новой головы. Такой подход рассматривает предобученную сеть как фиксированный экстрактор признаков. Он существенно дешевле по вычислениям и памяти, но ограничен в качестве, если целевая задача существенно отличается от исходной по распределению данных.
+
== Преобразование признаков (Feature Transformation) ==
-
'''Дообучение с частичной заморозкой''' — промежуточный вариант: замораживаются ранние слои сети (как правило, отвечающие за наиболее общие, низкоуровневые признаки — границы и текстуры в изображениях, базовые синтаксические закономерности в тексте), а более поздние слои, ближе к выходу, дообучаются вместе с новой головой. Постепенная разморозка слоёв (gradual unfreezing), начиная с последних и постепенно продвигаясь к более ранним по мере обучения, практика, предложенная в методе ULMFiT (Howard & Ruder, 2018) и до сих пор используемая как эвристика для стабилизации дообучения.
+
'''Нормализация и стандартизация.''' Многие модели (линейные модели с регуляризацией, метод опорных векторов, нейронные сети, методы на основе расстояний) чувствительны к масштабу признаков, поэтому приведение признаков к сопоставимому масштабу необходимый этап предобработки.
-
Выбор между этими стратегиями напрямую связан с объёмом доступных данных целевой задачи и подробнее рассматривается в разделе о связи дообучения с объёмом данных.
+
* '''Min-max нормализация''' линейно переводит значения признака в фиксированный интервал, обычно <tex>[0,1]</tex>:
 +
:: <tex>x' = \dfrac{x - x_{\min}}{x_{\max} - x_{\min}}</tex>
 +
* '''Z-нормализация''' (стандартизация) центрирует признак и приводит его к единичной дисперсии:
 +
:: <tex>x' = \dfrac{x - \mu}{\sigma}</tex>
 +
где <tex>\mu</tex> и <tex>\sigma</tex> — среднее и стандартное отклонение признака на обучающей выборке.
 +
* '''Робастное масштабирование''' (robust scaling) использует медиану и межквартильный размах вместо среднего и стандартного отклонения, что делает преобразование устойчивым к выбросам:
 +
:: <tex>x' = \dfrac{x - \mathrm{median}(x)}{IQR(x)}</tex>
-
== Выбор скорости обучения ==
+
'''Степенные и логарифмические преобразования''' применяются к признакам с существенно асимметричным распределением для приближения его к нормальному и стабилизации дисперсии: помимо логарифма <tex>x' = \log(x+1)</tex>, используются квадратный корень, обратное преобразование <tex>1/x</tex>. Обобщением служит семейство '''Box-Cox''':
-
Скорость обучения (learning rate) — один из наиболее чувствительных гиперпараметров при дообучении. Слишком большая скорость способна быстро разрушить полезные представления, накопленные на этапе предобучения, — это явление иногда называют «забыванием» уже на первых шагах дообучения. Общая рекомендация — использовать существенно меньшую скорость обучения, чем при обучении с нуля: типичные значения при дообучении трансформеров лежат в диапазоне <tex>10^{-5}</tex>–<tex>10^{-4}</tex>, тогда как обучение с нуля часто ведётся со скоростями порядка <tex>10^{-3}</tex>.
+
:: <tex>x'(\lambda) = \begin{cases} \dfrac{x^{\lambda} - 1}{\lambda}, & \lambda \neq 0 \\ \log x, & \lambda = 0 \end{cases}</tex>
-
Естественное развитие этой идеи — '''дифференциальные скорости обучения''' (discriminative learning rates), предложенные в том же ULMFiT: разным слоям сети назначаются разные скорости обучения, при этом более ранним, более «общим» слоям соответствует меньшая скорость, а более поздним, специфичным для задачи слоям (включая новую голову) — большая. Если пронумеровать слои от входа к выходу индексом <tex>l = 1, \dots, L</tex>, типичная схема задаёт скорость обучения слоя <tex>l</tex> как
+
применимое лишь к строго положительным значениям, и '''Yeo-Johnson''' — его обобщение, допускающее отрицательные и нулевые значения признака за счёт кусочного определения при <tex>x \geq 0</tex> и <tex>x < 0</tex>. В обоих случаях параметр <tex>\lambda</tex> подбирается по обучающим данным (как правило, максимизацией правдоподобия) так, чтобы преобразованное распределение было максимально близко к нормальному.
-
:: <tex>\eta_l = \eta_L \cdot \xi^{\,L-l}</tex>
+
'''Дискретизация''' (binning) переводит непрерывный признак в категориальный, разбивая диапазон значений на интервалы — равношироких (equal-width), равнонаполненных по числу наблюдений (equal-frequency) либо заданных экспертно (например, возрастные группы). Дискретизация может улучшать качество для моделей, плохо улавливающих нелинейные зависимости, ценой потери части информации о точном значении признака.
-
где <tex>\eta_L</tex> — скорость обучения последнего слоя, а <tex>\xi < 1</tex> (типично около 0.9–0.95) — коэффициент затухания скорости при движении к более ранним слоям.
+
== Отбор признаков (Feature Selection) ==
-
Дополнительно почти всегда используется '''разогрев скорости обучения''' (learning rate warmup) постепенное увеличение скорости от малого значения до целевого в течение первых итераций дообучения, что снижает риск резкого разрушения предобученных представлений на старте, когда статистики оптимизатора ещё не накоплены, а также последующее плавное затухание скорости (linear или cosine decay) до конца обучения.
+
'''Отбор признаков''' — выбор подмножества наиболее информативных признаков из исходного набора, преследующий две цели: снижение размерности (и, как следствие, вычислительных затрат) и уменьшение риска переобучения за счёт устранения нерелевантных или избыточных переменных. Методы принято делить на три группы.
-
== Регуляризация при дообучении ==
+
'''Фильтрующие методы''' (filter methods) оценивают признаки независимо от конкретной модели, на основе статистических критериев связи признака с целевой переменной: коэффициент корреляции Пирсона для количественных признаков и количественной цели, критерий хи-квадрат для категориальных признаков, [[взаимная информация]] (mutual information), способная улавливать и нелинейные зависимости. Фильтрующие методы вычислительно дёшевы, но не учитывают взаимодействие признаков между собой и специфику последующей модели.
-
Поскольку целевой набор данных при дообучении, как правило, невелик, а модель обладает большой ёмкостью, риск переобучения на этапе дообучения существенно выше, чем при обучении на большом исходном наборе. Практические приёмы регуляризации при дообучении:
+
'''Обёрточные методы''' (wrapper methods) оценивают подмножества признаков, обучая на них модель и измеряя итоговое качество. '''Рекурсивное исключение признаков''' (Recursive Feature Elimination, RFE) последовательно обучает модель, ранжирует признаки по важности (например, по весам линейной модели) и исключает наименее значимые, повторяя процедуру до достижения целевого числа признаков. '''Последовательный отбор''' (forward selection, backward elimination) наращивает или сокращает набор признаков по одному, каждый раз выбирая шаг, дающий наибольший прирост качества. Обёрточные методы точнее фильтрующих, но существенно дороже вычислительно, так как требуют многократного переобучения модели.
-
* '''Ранняя остановка''' (early stopping) — обучение прерывается при первом ухудшении метрики на валидационном наборе, а не по достижении фиксированного числа эпох, что особенно важно при малых целевых наборах данных, где переобучение наступает быстро.
+
'''Встроенные методы''' (embedded methods) выполняют отбор признаков как часть самого процесса обучения модели. '''L1-регуляризация''' (лассо-регрессия) добавляет к функции потерь штраф на сумму модулей весов, что приводит к точному обнулению весов при малоинформативных признаках:
-
* '''Уменьшение веса регуляризации''' — коэффициент weight decay и сила dropout, оптимальные для предобучения на большом наборе, зачастую избыточны для дообучения; их принято уменьшать, поскольку модель уже находится в разумной области пространства параметров и не нуждается в столь сильном сдерживании.
+
-
* '''Меньший размер батча''' — при малых целевых наборах данных использование меньшего батча увеличивает число шагов оптимизации за эпоху и вносит дополнительный стохастический шум в градиенты, что эмпирически способствует лучшей генерализации и снижает риск резкого переобучения на немногочисленных примерах.
+
-
* '''Регуляризация через близость к исходным весам''' — отдельный класс методов (например, L2-SP) добавляет к функции потерь штраф за отклонение текущих параметров от исходных предобученных значений <tex>\theta_0</tex>, явно ограничивая степень «дрейфа» модели от исходного решения.
+
-
== Связь с объёмом данных ==
+
:: <tex>\mathcal{L}(\theta) = \mathcal{L}_{0}(\theta) + \lambda \sum_i |\theta_i|</tex>
-
Решение о выборе стратегии дообучения и о том, оправдано ли дообучение вообще, определяется в первую очередь соотношением объёма целевых данных и степенью их сходства с данными, на которых проводилось предобучение. Удобно рассматривать четыре характерных случая:
+
'''Важность признаков в ансамблях деревьев''' (feature importance в случайном лесе или градиентном бустинге) оценивается по суммарному снижению критерия неоднородности (например, критерия Джини или прироста информации) при разбиениях по данному признаку по всем деревьям ансамбля, что даёт естественную и вычислительно дешёвую оценку значимости, получаемую как побочный продукт обучения.
-
* '''Много данных, высокое сходство с исходным распределением''' — предпочтительно полное дообучение: данных достаточно, чтобы безопасно адаптировать все слои, а близость распределений снижает риск катастрофического забывания.
+
{| class="wikitable"
-
* '''Много данных, низкое сходство''' — полное дообучение также оправдано, а в отдельных случаях объём данных может быть достаточен и для обучения с нуля, хотя дообучение обычно всё равно даёт выигрыш по скорости сходимости.
+
! Группа методов !! Примеры !! Учитывает модель !! Учитывает взаимодействие признаков !! Вычислительная стоимость
-
* '''Мало данных, высокое сходство''' — рекомендуется дообучение только последних слоёв (feature extraction) либо частичная заморозка: близость распределений позволяет полагаться на предобученные признаки без риска, а малый объём данных делает полное дообучение опасным с точки зрения переобучения.
+
|-
-
* '''Мало данных, низкое сходство''' — наиболее сложный случай: полное дообучение рискует переобучиться на малом наборе, а заморозка ранних слоёв может оказаться неоптимальной, поскольку предобученные признаки плохо соответствуют новой предметной области. На практике здесь часто применяют частичную разморозку средних слоёв, сильную аугментацию данных и параметро-эффективные методы адаптации.
+
| Фильтрующие || Корреляция, хи-квадрат, взаимная информация || Нет || Нет (обычно) || Низкая
 +
|-
 +
| Обёрточные || RFE, последовательный отбор || Да || Да || Высокая
 +
|-
 +
| Встроенные || L1-регуляризация, важность в деревьях || Да || Частично || Средняя
 +
|}
-
Общее эмпирическое правило: обучение с нуля становится предпочтительнее дообучения только тогда, когда целевой набор данных сопоставим по объёму с исходным набором предобучения либо когда предметная область целевой задачи настолько специфична (например, узкоспециализированные медицинские или спутниковые изображения), что предобученные признаки почти не переносятся.
+
== Кодирование категориальных признаков ==
-
== Параметро-эффективные методы дообучения ==
+
Категориальные признаки не имеют естественного числового представления и требуют явного кодирования для подачи в большинство моделей.
-
С ростом размеров моделей — в первую очередь [[Большая языковая модель|больших языковых моделей]] с миллиардами параметров — полное дообучение становится дорогостоящим не только по вычислениям, но и по памяти, поскольку требует хранения градиентов и состояний оптимизатора для каждого параметра. Это привело к развитию '''параметро-эффективных методов дообучения''' (parameter-efficient fine-tuning, PEFT), обновляющих лишь малую долю параметров модели или добавляющих небольшое число новых, при этом сохраняя основные веса замороженными.
+
'''One-hot encoding''' представляет категориальный признак с <tex>K</tex> уникальными значениями в виде <tex>K</tex> бинарных индикаторных признаков, каждый из которых равен единице для соответствующей категории и нулю иначе. Метод не вносит ложного порядка между категориями, но плохо масштабируется при большом числе уникальных значений (высокая кардинальность), приводя к разреженным и высокоразмерным признаковым векторам.
-
'''Адаптеры''' (adapters, Houlsby et al., 2019) — небольшие обучаемые модули (обычно двухслойные MLP с узким «бутылочным горлышком»), вставляемые внутрь каждого слоя предобученной сети, как правило, после блока внимания и после полносвязного блока трансформера. При дообучении обновляются только веса адаптеров, основная сеть остаётся замороженной. Недостаток — дополнительная задержка на этапе инференса, так как адаптеры увеличивают глубину вычислительного графа.
+
'''Label encoding''' присваивает каждой категории целочисленный код. Подходит для древовидных моделей, устойчивых к произвольному порядку кодов, но некорректен для линейных моделей и моделей на основе расстояний, поскольку вносит несуществующий порядок между категориями.
-
'''Префиксное обучение''' (prefix-tuning, Li & Liang, 2021) и близкий к нему метод обучаемых промптов (prompt tuning) добавляют небольшое число обучаемых векторов («виртуальных токенов») к входу или к ключам и значениям механизма внимания на каждом слое, оставляя все исходные веса модели неизменными. Обучению подвергаются только эти добавленные векторы, что делает метод крайне экономным по памяти, хотя часто уступающим по качеству адаптерам и LoRA при сопоставимом числе обучаемых параметров.
+
'''Target encoding''' (mean encoding) заменяет каждую категорию средним значением целевой переменной по объектам этой категории на обучающей выборке. Метод компактен и эффективен для признаков высокой кардинальности, но подвержен утечке целевой переменной и переобучению, если не применяется с должной регуляризацией — обычно сглаживанием к общему среднему и вычислением кодировки только по данным, не входящим в текущий фолд кросс-валидации (out-of-fold encoding).
-
'''LoRA''' (Low-Rank Adaptation, Hu et al., 2021) — один из наиболее распространённых на сегодняшний день методов PEFT для больших моделей, в частности для [[Адаптация низкого ранга|адаптации низкого ранга]]. Идея состоит в том, что изменение весовой матрицы слоя <tex>\Delta W</tex>, необходимое для адаптации к целевой задаче, представляется в виде произведения двух матриц низкого ранга:
+
'''WOE''' (Weight of Evidence), распространённый в кредитном скоринге, кодирует категорию через логарифм отношения долей «плохих» и «хороших» исходов внутри категории:
-
:: <tex>W = W_0 + \Delta W = W_0 + BA, \qquad B \in \mathbb{R}^{d \times r}, \; A \in \mathbb{R}^{r \times k}, \; r \ll \min(d,k)</tex>
+
:: <tex>WOE_k = \log\left(\dfrac{\%\,\text{good}_k}{\%\,\text{bad}_k}\right)</tex>
-
где <tex>W_0</tex> — исходная, замороженная матрица весов, а обучению подвергаются только матрицы <tex>A</tex> и <tex>B</tex> существенно меньшей размерности, задаваемой рангом <tex>r</tex> (типичные значения — от 4 до 64). Это резко сокращает число обучаемых параметров (зачастую на два-три порядка по сравнению с полным дообучением) без дополнительной задержки на инференсе, поскольку после обучения матрицу <tex>BA</tex> можно один раз сложить с <tex>W_0</tex>, полностью устранив дополнительные вычисления.
+
что даёт монотонную связь с логитом целевой переменной в задачах бинарной классификации и облегчает интерпретацию вклада категории.
-
Сравнение параметро-эффективных методов между собой и с полным дообучением в таблице ниже.
+
'''Embedding-кодирование''' представляет каждую категорию вектором в непрерывном пространстве меньшей размерности, обучаемым совместно с основной моделью (типично для нейронных сетей, работающих с категориальными признаками высокой кардинальности идентификаторами пользователей, товаров, слов). В отличие от one-hot, эмбеддинги способны улавливать содержательное сходство между категориями через близость соответствующих векторов.
{| class="wikitable"
{| class="wikitable"
-
! Метод !! Доля обучаемых параметров !! Задержка на инференсе !! Типичное качество !! Особенности
+
! Метод !! Подходит для высокой кардинальности !! Риск утечки цели !! Вносит ложный порядок !! Типичное применение
|-
|-
-
| Полное дообучение || 100% || Без изменений || Максимальное (при достаточных данных) || Требует наибольшей памяти под градиенты и оптимизатор
+
| One-hot encoding || Нет || Нет || Нет || Линейные модели, признаки низкой кардинальности
|-
|-
-
| Дообучение последних слоёв || < 1% || Без изменений || Ниже при сильном расхождении задач || Минимальные вычислительные затраты
+
| Label encoding || Да || Нет || Да || Древовидные модели
|-
|-
-
| Адаптеры || 1–5% || Небольшое увеличение || Близко к полному дообучению || Модульность, лёгкость переключения между задачами
+
| Target encoding || Да || Да (требует регуляризации) || Нет || Градиентный бустинг, высокая кардинальность
|-
|-
-
| Prefix/Prompt-tuning || < 1% || Небольшое увеличение (за счёт длины последовательности) || Уступает адаптерам и LoRA на сложных задачах || Наиболее компактен по числу параметров
+
| WOE || Да || Умеренный || Нет || Кредитный скоринг, логистическая регрессия
|-
|-
-
| LoRA || 0.1–1% || Без изменений после слияния весов || Сопоставимо с полным дообучением на многих задачах || Наиболее распространён для больших языковых моделей
+
| Embedding || Да || Нет (при должной валидации) || Нет || Нейронные сети, очень высокая кардинальность
|}
|}
-
== Примеры из практики ==
+
== Обработка пропусков ==
 +
 
 +
Пропущенные значения — распространённая особенность реальных данных, требующая явного решения: удалить объекты или признаки с пропусками либо заполнить их (impute). Удаление оправдано, когда доля пропусков в признаке или объекте крайне высока либо когда пропуски распределены случайно и их доля мала настолько, что удаление не искажает выборку; в противном случае предпочтительно заполнение, поскольку удаление сокращает и без того ограниченный объём данных.
 +
 
 +
Простейшие стратегии заполнения — средним или медианой значением признака (медиана предпочтительна при наличии выбросов) для количественных признаков и модой (наиболее частым значением) для категориальных. Более точные стратегии учитывают связь пропущенного признака с остальными: '''регрессионное заполнение''' обучает вспомогательную модель, предсказывающую значение признака по остальным признакам объекта, а '''KNN-заполнение''' восстанавливает пропуск как среднее (или взвешенное среднее) значения признака у ближайших по остальным признакам соседей. Существенно также фиксировать сам факт пропуска отдельным бинарным индикаторным признаком — отсутствие значения нередко само по себе несёт предсказательную информацию (например, отсутствие ответа на вопрос анкеты может коррелировать с целевой переменной).
 +
 
 +
== Обработка выбросов ==
 +
 
 +
'''Обнаружение выбросов''' может опираться на статистические критерии — правило межквартильного размаха (IQR), относящее к выбросам значения за пределами <tex>[Q_1 - 1.5\,IQR,\; Q_3 + 1.5\,IQR]</tex>, либо на z-оценку, помечающую как выброс значения с <tex>|z| > 3</tex>, — либо на визуализацию распределения признака (box-plot, гистограмма, диаграмма рассеяния).
 +
 
 +
После обнаружения возможны разные стратегии обработки: '''удаление''' объектов-выбросов, оправданное при уверенности в ошибочности значения (сбой измерения, ошибка ввода данных); '''капинг''' (winsorization) — замена экстремальных значений на ближайшую границу допустимого диапазона без полного удаления объекта; '''преобразование''' признака (логарифмирование, Box-Cox), уменьшающее относительное влияние экстремальных значений без их прямого удаления. Выбор стратегии определяется тем, являются ли выбросы артефактом измерения или содержательной, хотя и редкой, особенностью предметной области — во втором случае агрессивное удаление способно исказить модель, лишив её информации о редких, но значимых случаях.
 +
 
 +
== Уменьшение размерности ==
 +
 
 +
'''Уменьшение размерности''' можно рассматривать как отдельный частный случай инженерии признаков, при котором вместо ручного конструирования или отбора отдельных признаков строится новое, более компактное признаковое пространство, сохраняющее основную структуру исходных данных.
 +
 
 +
'''Метод главных компонент''' ([[Метод главных компонент|PCA]]) находит ортогональные направления максимальной дисперсии данных и проецирует исходные признаки на подпространство, натянутое на несколько первых главных компонент, что позволяет сократить размерность с минимальной потерей информации о дисперсии данных при условии преимущественно линейной структуры зависимостей.
 +
 
 +
'''t-SNE''' и '''UMAP''' — нелинейные методы уменьшения размерности, ориентированные в первую очередь на визуализацию многомерных данных в двух-трёх измерениях за счёт сохранения локальной структуры соседства точек; в отличие от PCA, они, как правило, не сохраняют глобальные расстояния и хуже подходят для использования результирующих компонент как признаков для последующего обучения модели, но полезны как инструмент разведочного анализа данных (EDA) и обнаружения кластерной структуры.
 +
 
 +
== Инженерия для разных типов данных ==
-
'''Дообучение BERT для задач NLP.''' Предобученная на корпусах Wikipedia и BookCorpus модель BERT (Devlin et al., 2019) дообучается на конкретной задаче — классификации тональности текста, извлечении именованных сущностей, ответах на вопросы путём добавления небольшой линейной головы поверх выходного представления специального токена [CLS] или токенов последовательности и полного дообучения всей модели на размеченном наборе целевой задачи, обычно за 2–4 эпохи с малой скоростью обучения порядка <tex>2\cdot10^{-5}</tex>.
+
'''Тексты.''' Классические признаки — частоты слов (bag-of-words), взвешенные по TF-IDF, n-граммы слов и символов; современный подход — представления, полученные из предобученных языковых моделей (эмбеддинги слов, контекстуальные эмбеддинги трансформеров), фактически переносящие задачу конструирования признаков на этап предобучения модели.
-
'''Дообучение ResNet для классификации медицинских изображений.''' Свёрточная сеть, предобученная на ImageNet, дообучается на существенно меньшем и специфичном наборе медицинских снимков (рентгеновские снимки, гистологические срезы). Из-за заметного расхождения распределений (естественные фотографии против медицинских изображений) и, как правило, ограниченного объёма размеченных данных типична стратегия частичной заморозки: ранние свёрточные слои, кодирующие общие низкоуровневые признаки (границы, текстуры), замораживаются, поздние слои и классификационная голова дообучаются, часто в сочетании с сильной аугментацией данных.
+
'''Изображения.''' Классическая инженерия признаков опиралась на ручные дескрипторы (HOG, SIFT, гистограммы цвета); в современной практике эту роль почти повсеместно взяли на себя свёрточные и трансформерные сети, автоматически извлекающие иерархические признаки, однако предметно-специфичные признаки (например, геометрические измерения на медицинских снимках) остаются востребованными в специализированных приложениях.
-
'''Дообучение CLIP для мультимодальных задач.''' Предобученная модель [[CLIP]] дообучается для узкоспециализированных задач сопоставления изображений и текста например, для доменов с нетипичной для веб-данных лексикой (медицинские изображения с диагностическими описаниями, спутниковые снимки с географическими подписями). Ввиду масштаба модели и её мультимодальной природы для CLIP особенно часто применяются параметро-эффективные методы, в частности LoRA, накладываемые на энкодеры изображения и текста.
+
'''Временные ряды.''' Типичные признаки скользящие статистики (среднее, стандартное отклонение, минимум и максимум в скользящем окне), лаговые признаки (значение ряда со сдвигом на несколько шагов назад), признаки сезонности и тренда, а также спектральные характеристики, получаемые преобразованием Фурье.
-
== Дообучение с подкреплением из обратной связи человека (RLHF) ==
+
'''Графы.''' Признаки узла могут включать степень узла, меры центральности (betweenness, PageRank), локальные структурные характеристики окрестности; современные методы также используют обучаемые представления узлов, получаемые методами графовых нейронных сетей или графовых эмбеддингов (node2vec, DeepWalk).
-
Особый и отдельно выделяемый случай дообучения — '''обучение с подкреплением из обратной связи человека''' (Reinforcement Learning from Human Feedback, RLHF), применяемое при доводке [[Большая языковая модель|больших языковых моделей]] после этапа предобучения на предсказание следующего токена. Классическая схема RLHF (Ouyang et al., 2022, метод InstructGPT) состоит из трёх последовательных этапов:
+
== Автоматическая инженерия признаков (AutoFE) ==
-
# '''Дообучение с учителем''' (supervised fine-tuning, SFT) — модель дообучается на наборе демонстраций «инструкция — качественный ответ», подготовленных людьми-разметчиками, что задаёт базовый формат следования инструкциям.
+
'''Автоматическая инженерия признаков''' стремится частично или полностью автоматизировать процесс создания и отбора признаков, традиционно требующий значительных временных затрат специалиста и глубокого понимания предметной области. '''Deep Feature Synthesis''' (Kanter & Veeramachaneni, 2015), лежащий в основе библиотеки Featuretools, автоматически строит признаки для реляционных данных, применяя последовательности агрегирующих и трансформирующих операций (сумма, среднее, число уникальных значений и другие) вдоль связей между таблицами, генерируя большое число кандидатов в признаки, из которых затем производится отбор. Иные подходы к AutoFE используют эволюционные алгоритмы или обучение с подкреплением для поиска полезных комбинаций преобразований признаков. Автоматизированные методы способны обнаруживать неочевидные комбинации, но, как правило, требуют последующего этапа отбора признаков для устранения избыточности и контроля переобучения, а также не заменяют полностью экспертное понимание предметной области, особенно при построении содержательных, предметно-обоснованных признаков.
-
# '''Обучение модели вознаграждения''' (reward model) — отдельная модель обучается предсказывать предпочтения людей: разметчики сравнивают пары ответов модели на одну инструкцию, и модель вознаграждения обучается присваивать более высокую оценку предпочитаемому ответу.
+
-
# '''Оптимизация политики''' — исходная дообученная на этапе SFT модель далее дообучается алгоритмом обучения с подкреплением (в оригинальной работе — PPO) так, чтобы максимизировать оценку, выдаваемую моделью вознаграждения, при этом штрафуется чрезмерное отклонение от политики SFT-этапа (обычно через KL-дивергенцию), что предотвращает вырождение в ответы, эксплуатирующие слабости модели вознаграждения.
+
-
RLHF отличается от рассмотренных выше стратегий тем, что обучающий сигнал для последнего этапа поступает не напрямую из размеченных пар «вход — выход», а опосредованно, через выученную модель предпочтений, что делает эту форму дообучения существенно сложнее с точки зрения инженерии и устойчивости обучения.
+
== Практические рекомендации ==
-
== Ограничения и риски ==
+
Чек-лист инженера по признакам:
-
* '''Катастрофическое забывание''' (catastrophic forgetting) при дообучении, особенно полном и с высокой скоростью обучения, модель может утратить полезные знания, накопленные на этапе предобучения, если целевая задача существенно уже или отличается по распределению от исходной; это особенно критично, когда от модели впоследствии ожидается сохранение широких, «общих» способностей наравне со специализацией.
+
* проверить типы и распределения всех признаков до начала моделирования выявить асимметрию, выбросы, пропуски;
-
* '''Переобучение на малом целевом наборе''' — при малом объёме данных целевой задачи и высокой ёмкости модели риск переобучения существенно выше, чем на этапе предобучения; отсюда потребность в усиленной регуляризации, ранней остановке и, зачастую, в параметро-эффективных методах, ограничивающих число степеней свободы.
+
* начинать с простых, содержательно обоснованных признаков, прежде чем переходить к автоматической генерации большого числа кандидатов;
-
* '''Вычислительные затраты''' полное дообучение крупных моделей требует значительных объёмов видеопамяти для хранения градиентов и состояний оптимизатора по всем параметрам, что при современных масштабах моделей становится узким местом и мотивирует использование параметро-эффективных методов.
+
* явно фиксировать факт пропуска отдельным индикаторным признаком, а не полагаться только на значение заполнения;
-
* '''Чувствительность к гиперпараметрам''' качество дообучения существенно зависит от выбора скорости обучения, длительности разогрева, стратегии заморозки слоёв; неудачный выбор способен либо разрушить предобученные представления, либо не дать модели адаптироваться к целевой задаче в достаточной мере.
+
* при кодировании категорий с высокой кардинальностью использовать target encoding или WOE с обязательной регуляризацией и вычислением вне текущего фолда кросс-валидации;
-
* '''Утрата калибровки и смещение распределения ответов''' — в частности при RLHF отмечается риск чрезмерной оптимизации под модель вознаграждения (reward hacking), приводящей к ответам, формально получающим высокую оценку, но не отражающим подлинные предпочтения пользователей.
+
* подбирать параметры любых преобразований (нормализации, Box-Cox, target encoding) исключительно по обучающей выборке, применяя затем те же параметры к валидационной и тестовой выборкам, во избежание утечки информации;
 +
* после генерации большого числа признаков обязательно проводить отбор избыточные и коррелированные признаки не только не помогают, но зачастую ухудшают обобщающую способность и интерпретируемость модели;
 +
* руководствоваться принципом «простые признаки лучшие»: там, где простое отношение или разность объясняют закономерность не хуже сложной комбинации, предпочтение стоит отдавать простому варианту, повышающему устойчивость и интерпретируемость модели.
== См. также ==
== См. также ==
-
* [[Трансферное обучение]]
+
* [[Генерация признаков]]
-
* [[Предобучение]]
+
* [[Отбор признаков]]
-
* [[Большая языковая модель]]
+
* [[Нормализация и стандартизация]]
-
* [[Трансформер]]
+
* [[Понижение размерности]]
-
* [[Дистилляция моделей]]
+
* [[Предобработка данных]]
-
* [[Адаптация низкого ранга]]
+
* [[Метод главных компонент]]
 +
* [[Ослабление и усиление шкал признаков]]
== Литература ==
== Литература ==
-
# Devlin J., Chang M.-W., Lee K., Toutanova K. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding // NAACL. — 2019.
+
# Zheng A., Casari A. Feature Engineering for Machine Learning: Principles and Techniques for Data Scientists. — O'Reilly Media, 2018.
-
# Howard J., Ruder S. Universal Language Model Fine-tuning for Text Classification (ULMFiT) // ACL. — 2018.
+
# Kuhn M., Johnson K. Feature Engineering and Selection: A Practical Approach for Predictive Models. — CRC Press, 2019.
-
# Houlsby N., Giurgiu A., Jastrzębski S. et al. Parameter-Efficient Transfer Learning for NLP // ICML. — 2019.
+
# Guyon I., Elisseeff A. An Introduction to Variable and Feature Selection // Journal of Machine Learning Research. — 2003.
-
# Li X.L., Liang P. Prefix-Tuning: Optimizing Continuous Prompts for Generation // ACL. — 2021.
+
# Box G.E.P., Cox D.R. An Analysis of Transformations // Journal of the Royal Statistical Society. Series B. — 1964.
-
# Hu E.J., Shen Y., Wallis P. et al. LoRA: Low-Rank Adaptation of Large Language Models // ICLR. — 2022.
+
# Yeo I.-K., Johnson R.A. A New Family of Power Transformations to Improve Normality or Symmetry // Biometrika. — 2000.
-
# Ouyang L., Wu J., Jiang X. et al. Training Language Models to Follow Instructions with Human Feedback // NeurIPS. — 2022.
+
# Kanter J.M., Veeramachaneni K. Deep Feature Synthesis: Towards Automating Data Science Endeavors // IEEE DSAA. — 2015.
-
# Yosinski J., Clune J., Bengio Y., Lipson H. How Transferable Are Features in Deep Neural Networks? // NeurIPS. — 2014.
+
# van der Maaten L., Hinton G. Visualizing Data using t-SNE // Journal of Machine Learning Research. — 2008.
-
# Xuhong L., Grandvalet Y., Davoine F. Explicit Inductive Bias for Transfer Learning with Convolutional Networks (L2-SP) // ICML. — 2018.
+
# McInnes L., Healy J., Melville J. UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction // arXiv:1802.03426. — 2018.
[[Категория:Машинное обучение]]
[[Категория:Машинное обучение]]
-
[[Категория:Глубокое обучение]]
+
[[Категория:Предобработка данных]]
-
[[Категория:Трансферное обучение]]
+
[[Категория:Инженерия признаков]]

Версия 12:46, 11 июля 2026

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


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

Содержание

Введение

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

Почему инженерия признаков важна

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

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

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

Другой типичный пример полезного нелинейного преобразования — логарифмирование признака с сильно скошенным (skewed) распределением, например, дохода или цены: разность между доходами 10 000 и 20 000 денежных единиц содержательно отличается от разности между 1 010 000 и 1 020 000, и логарифмическое преобразование x' = \log(x+1) переводит мультипликативные отношения в аддитивные, что облегчает работу линейных моделей и стабилизирует дисперсию признака.

Создание признаков (Feature Generation)

Создание признаков — построение новых переменных на основе сырых данных, использующее либо предметные знания (domain knowledge), либо автоматические комбинаторные схемы.

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

Использование предметных знаний позволяет строить признаки, отражающие содержательные закономерности предметной области: например, в задаче кредитного скоринга — отношение суммы долга к доходу (debt-to-income ratio), в задаче анализа веб-трафика — время, проведённое на странице, делённое на число просмотренных страниц.

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

Преобразование признаков (Feature Transformation)

Нормализация и стандартизация. Многие модели (линейные модели с регуляризацией, метод опорных векторов, нейронные сети, методы на основе расстояний) чувствительны к масштабу признаков, поэтому приведение признаков к сопоставимому масштабу — необходимый этап предобработки.

  • Min-max нормализация линейно переводит значения признака в фиксированный интервал, обычно [0,1]:
x' = \dfrac{x - x_{\min}}{x_{\max} - x_{\min}}
  • Z-нормализация (стандартизация) центрирует признак и приводит его к единичной дисперсии:
x' = \dfrac{x - \mu}{\sigma}

где \mu и \sigma — среднее и стандартное отклонение признака на обучающей выборке.

  • Робастное масштабирование (robust scaling) использует медиану и межквартильный размах вместо среднего и стандартного отклонения, что делает преобразование устойчивым к выбросам:
x' = \dfrac{x - \mathrm{median}(x)}{IQR(x)}

Степенные и логарифмические преобразования применяются к признакам с существенно асимметричным распределением для приближения его к нормальному и стабилизации дисперсии: помимо логарифма x' = \log(x+1), используются квадратный корень, обратное преобразование 1/x. Обобщением служит семейство Box-Cox:

x'(\lambda) = \begin{cases} \dfrac{x^{\lambda} - 1}{\lambda}, & \lambda \neq 0 \\ \log x, & \lambda = 0 \end{cases}

применимое лишь к строго положительным значениям, и Yeo-Johnson — его обобщение, допускающее отрицательные и нулевые значения признака за счёт кусочного определения при x \geq 0 и x < 0. В обоих случаях параметр \lambda подбирается по обучающим данным (как правило, максимизацией правдоподобия) так, чтобы преобразованное распределение было максимально близко к нормальному.

Дискретизация (binning) переводит непрерывный признак в категориальный, разбивая диапазон значений на интервалы — равношироких (equal-width), равнонаполненных по числу наблюдений (equal-frequency) либо заданных экспертно (например, возрастные группы). Дискретизация может улучшать качество для моделей, плохо улавливающих нелинейные зависимости, ценой потери части информации о точном значении признака.

Отбор признаков (Feature Selection)

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

Фильтрующие методы (filter methods) оценивают признаки независимо от конкретной модели, на основе статистических критериев связи признака с целевой переменной: коэффициент корреляции Пирсона для количественных признаков и количественной цели, критерий хи-квадрат для категориальных признаков, взаимная информация (mutual information), способная улавливать и нелинейные зависимости. Фильтрующие методы вычислительно дёшевы, но не учитывают взаимодействие признаков между собой и специфику последующей модели.

Обёрточные методы (wrapper methods) оценивают подмножества признаков, обучая на них модель и измеряя итоговое качество. Рекурсивное исключение признаков (Recursive Feature Elimination, RFE) последовательно обучает модель, ранжирует признаки по важности (например, по весам линейной модели) и исключает наименее значимые, повторяя процедуру до достижения целевого числа признаков. Последовательный отбор (forward selection, backward elimination) наращивает или сокращает набор признаков по одному, каждый раз выбирая шаг, дающий наибольший прирост качества. Обёрточные методы точнее фильтрующих, но существенно дороже вычислительно, так как требуют многократного переобучения модели.

Встроенные методы (embedded methods) выполняют отбор признаков как часть самого процесса обучения модели. L1-регуляризация (лассо-регрессия) добавляет к функции потерь штраф на сумму модулей весов, что приводит к точному обнулению весов при малоинформативных признаках:

\mathcal{L}(\theta) = \mathcal{L}_{0}(\theta) + \lambda \sum_i |\theta_i|

Важность признаков в ансамблях деревьев (feature importance в случайном лесе или градиентном бустинге) оценивается по суммарному снижению критерия неоднородности (например, критерия Джини или прироста информации) при разбиениях по данному признаку по всем деревьям ансамбля, что даёт естественную и вычислительно дешёвую оценку значимости, получаемую как побочный продукт обучения.

Группа методов Примеры Учитывает модель Учитывает взаимодействие признаков Вычислительная стоимость
Фильтрующие Корреляция, хи-квадрат, взаимная информация Нет Нет (обычно) Низкая
Обёрточные RFE, последовательный отбор Да Да Высокая
Встроенные L1-регуляризация, важность в деревьях Да Частично Средняя

Кодирование категориальных признаков

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

One-hot encoding представляет категориальный признак с K уникальными значениями в виде K бинарных индикаторных признаков, каждый из которых равен единице для соответствующей категории и нулю иначе. Метод не вносит ложного порядка между категориями, но плохо масштабируется при большом числе уникальных значений (высокая кардинальность), приводя к разреженным и высокоразмерным признаковым векторам.

Label encoding присваивает каждой категории целочисленный код. Подходит для древовидных моделей, устойчивых к произвольному порядку кодов, но некорректен для линейных моделей и моделей на основе расстояний, поскольку вносит несуществующий порядок между категориями.

Target encoding (mean encoding) заменяет каждую категорию средним значением целевой переменной по объектам этой категории на обучающей выборке. Метод компактен и эффективен для признаков высокой кардинальности, но подвержен утечке целевой переменной и переобучению, если не применяется с должной регуляризацией — обычно сглаживанием к общему среднему и вычислением кодировки только по данным, не входящим в текущий фолд кросс-валидации (out-of-fold encoding).

WOE (Weight of Evidence), распространённый в кредитном скоринге, кодирует категорию через логарифм отношения долей «плохих» и «хороших» исходов внутри категории:

WOE_k = \log\left(\dfrac{\%\,\text{good}_k}{\%\,\text{bad}_k}\right)

что даёт монотонную связь с логитом целевой переменной в задачах бинарной классификации и облегчает интерпретацию вклада категории.

Embedding-кодирование представляет каждую категорию вектором в непрерывном пространстве меньшей размерности, обучаемым совместно с основной моделью (типично для нейронных сетей, работающих с категориальными признаками высокой кардинальности — идентификаторами пользователей, товаров, слов). В отличие от one-hot, эмбеддинги способны улавливать содержательное сходство между категориями через близость соответствующих векторов.

Метод Подходит для высокой кардинальности Риск утечки цели Вносит ложный порядок Типичное применение
One-hot encoding Нет Нет Нет Линейные модели, признаки низкой кардинальности
Label encoding Да Нет Да Древовидные модели
Target encoding Да Да (требует регуляризации) Нет Градиентный бустинг, высокая кардинальность
WOE Да Умеренный Нет Кредитный скоринг, логистическая регрессия
Embedding Да Нет (при должной валидации) Нет Нейронные сети, очень высокая кардинальность

Обработка пропусков

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

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

Обработка выбросов

Обнаружение выбросов может опираться на статистические критерии — правило межквартильного размаха (IQR), относящее к выбросам значения за пределами [Q_1 - 1.5\,IQR,\; Q_3 + 1.5\,IQR], либо на z-оценку, помечающую как выброс значения с |z| > 3, — либо на визуализацию распределения признака (box-plot, гистограмма, диаграмма рассеяния).

После обнаружения возможны разные стратегии обработки: удаление объектов-выбросов, оправданное при уверенности в ошибочности значения (сбой измерения, ошибка ввода данных); капинг (winsorization) — замена экстремальных значений на ближайшую границу допустимого диапазона без полного удаления объекта; преобразование признака (логарифмирование, Box-Cox), уменьшающее относительное влияние экстремальных значений без их прямого удаления. Выбор стратегии определяется тем, являются ли выбросы артефактом измерения или содержательной, хотя и редкой, особенностью предметной области — во втором случае агрессивное удаление способно исказить модель, лишив её информации о редких, но значимых случаях.

Уменьшение размерности

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

Метод главных компонент (PCA) находит ортогональные направления максимальной дисперсии данных и проецирует исходные признаки на подпространство, натянутое на несколько первых главных компонент, что позволяет сократить размерность с минимальной потерей информации о дисперсии данных при условии преимущественно линейной структуры зависимостей.

t-SNE и UMAP — нелинейные методы уменьшения размерности, ориентированные в первую очередь на визуализацию многомерных данных в двух-трёх измерениях за счёт сохранения локальной структуры соседства точек; в отличие от PCA, они, как правило, не сохраняют глобальные расстояния и хуже подходят для использования результирующих компонент как признаков для последующего обучения модели, но полезны как инструмент разведочного анализа данных (EDA) и обнаружения кластерной структуры.

Инженерия для разных типов данных

Тексты. Классические признаки — частоты слов (bag-of-words), взвешенные по TF-IDF, n-граммы слов и символов; современный подход — представления, полученные из предобученных языковых моделей (эмбеддинги слов, контекстуальные эмбеддинги трансформеров), фактически переносящие задачу конструирования признаков на этап предобучения модели.

Изображения. Классическая инженерия признаков опиралась на ручные дескрипторы (HOG, SIFT, гистограммы цвета); в современной практике эту роль почти повсеместно взяли на себя свёрточные и трансформерные сети, автоматически извлекающие иерархические признаки, однако предметно-специфичные признаки (например, геометрические измерения на медицинских снимках) остаются востребованными в специализированных приложениях.

Временные ряды. Типичные признаки — скользящие статистики (среднее, стандартное отклонение, минимум и максимум в скользящем окне), лаговые признаки (значение ряда со сдвигом на несколько шагов назад), признаки сезонности и тренда, а также спектральные характеристики, получаемые преобразованием Фурье.

Графы. Признаки узла могут включать степень узла, меры центральности (betweenness, PageRank), локальные структурные характеристики окрестности; современные методы также используют обучаемые представления узлов, получаемые методами графовых нейронных сетей или графовых эмбеддингов (node2vec, DeepWalk).

Автоматическая инженерия признаков (AutoFE)

Автоматическая инженерия признаков стремится частично или полностью автоматизировать процесс создания и отбора признаков, традиционно требующий значительных временных затрат специалиста и глубокого понимания предметной области. Deep Feature Synthesis (Kanter & Veeramachaneni, 2015), лежащий в основе библиотеки Featuretools, автоматически строит признаки для реляционных данных, применяя последовательности агрегирующих и трансформирующих операций (сумма, среднее, число уникальных значений и другие) вдоль связей между таблицами, генерируя большое число кандидатов в признаки, из которых затем производится отбор. Иные подходы к AutoFE используют эволюционные алгоритмы или обучение с подкреплением для поиска полезных комбинаций преобразований признаков. Автоматизированные методы способны обнаруживать неочевидные комбинации, но, как правило, требуют последующего этапа отбора признаков для устранения избыточности и контроля переобучения, а также не заменяют полностью экспертное понимание предметной области, особенно при построении содержательных, предметно-обоснованных признаков.

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

Чек-лист инженера по признакам:

  • проверить типы и распределения всех признаков до начала моделирования — выявить асимметрию, выбросы, пропуски;
  • начинать с простых, содержательно обоснованных признаков, прежде чем переходить к автоматической генерации большого числа кандидатов;
  • явно фиксировать факт пропуска отдельным индикаторным признаком, а не полагаться только на значение заполнения;
  • при кодировании категорий с высокой кардинальностью использовать target encoding или WOE с обязательной регуляризацией и вычислением вне текущего фолда кросс-валидации;
  • подбирать параметры любых преобразований (нормализации, Box-Cox, target encoding) исключительно по обучающей выборке, применяя затем те же параметры к валидационной и тестовой выборкам, во избежание утечки информации;
  • после генерации большого числа признаков обязательно проводить отбор — избыточные и коррелированные признаки не только не помогают, но зачастую ухудшают обобщающую способность и интерпретируемость модели;
  • руководствоваться принципом «простые признаки — лучшие»: там, где простое отношение или разность объясняют закономерность не хуже сложной комбинации, предпочтение стоит отдавать простому варианту, повышающему устойчивость и интерпретируемость модели.

См. также

Литература

  1. Zheng A., Casari A. Feature Engineering for Machine Learning: Principles and Techniques for Data Scientists. — O'Reilly Media, 2018.
  2. Kuhn M., Johnson K. Feature Engineering and Selection: A Practical Approach for Predictive Models. — CRC Press, 2019.
  3. Guyon I., Elisseeff A. An Introduction to Variable and Feature Selection // Journal of Machine Learning Research. — 2003.
  4. Box G.E.P., Cox D.R. An Analysis of Transformations // Journal of the Royal Statistical Society. Series B. — 1964.
  5. Yeo I.-K., Johnson R.A. A New Family of Power Transformations to Improve Normality or Symmetry // Biometrika. — 2000.
  6. Kanter J.M., Veeramachaneni K. Deep Feature Synthesis: Towards Automating Data Science Endeavors // IEEE DSAA. — 2015.
  7. van der Maaten L., Hinton G. Visualizing Data using t-SNE // Journal of Machine Learning Research. — 2008.
  8. McInnes L., Healy J., Melville J. UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction // arXiv:1802.03426. — 2018.
Личные инструменты