глоссарий

One-hot encoding

One-hot encoding

One-hot encoding — это способ превратить категории в числа, понятные алгоритмам машинного обучения. Представьте, что каждая категория получает собственную лампочку: если объект относится к этой категории, лампочка горит (единица), если нет — погашена (ноль). Так название «one-hot» и переводится: «один горящий» из всех возможных.

Зачем это нужно? Многие модели, от линейной регрессии до нейросетей, умеют работать только с числами. Если мы просто присвоим категориям номера 1, 2, 3, алгоритм решит, что между ними есть порядок и расстояние: «кошка» (1) ближе к «собаке» (2), чем к «попугаю» (3). Это бессмысленно и искажает выводы. One-hot encoding лишает категории ложной иерархии, превращая каждую в отдельное измерение.

Как это работает интуитивно? Допустим, у нас есть столбец «цвет» с тремя значениями: красный, зелёный, синий. Вместо одного столбца мы создаём три новых: «красный», «зелёный», «синий». Для красного объекта запишем 1 в столбец «красный» и 0 в остальные. Для зелёного — 1 в «зелёный», и так далее. Вектор получается разреженным: почти все нули и одна единица. Это похоже на кодирование маршрута: из трёх возможных дорог мы отмечаем только ту, по которой поехали.

Прикладной пример: сервис доставки хочет предсказать, приедет ли заказ вовремя. В данных есть поле «город»: Москва, Питер, Казань. Модель не понимает слова, поэтому one-hot encoding превращает город в три бинарных признака. Для заказа из Москвы вектор будет [1, 0, 0], из Питера [0, 1, 0]. Алгоритм по тренировочным примерам учится: при единице в «Москва» риск опоздания выше, чем при единице в «Казань». При этом модель не думает, что Москва «больше» или «лучше» Питера — просто разные признаки.

Вывод: one-hot encoding — незаменимый инструмент для работы с категориальными данными. Он сохраняет информацию без ложных числовых отношений, хотя и увеличивает размерность. Это простой, надёжный и понятный способ объяснить машине, что «яблоки» и «груши» — это просто разные вещи, а не ступеньки одной лестницы.