Зображення статті
## Чому feature engineering важливіший за вибір алгоритму
Серед Data Scientists існує приказка: "краща модель на поганих ознаках програє простій моделі на хороших ознаках". Feature engineering — процес перетворення сирих даних на інформативні ознаки (features), які модель може ефективно використати — часто визначає успіх ML-проєкту більше, ніж вибір між XGBoost і нейронною мережею.
Уявіть задачу прогнозування відтоку клієнтів. Сирі дані: дата реєстрації та дата останньої покупки. Сира різниця в днях — корисна ознака, але слабка. А ось "кількість днів від останньої покупки порівняно із середнім для цієї категорії клієнтів" — набагато потужніша ознака, яка враховує контекст. Саме таке перетворення і є feature engineering.
## Ключові техніки
### Encoding категоріальних змінних
Більшість алгоритмів ML працюють з числовими даними. Категоріальні змінні (місто, тип товару, статус клієнта) потрібно перетворювати.
**One-Hot Encoding** — кожна унікальна категорія стає окремою бінарною колонкою. Підходить для змінних з невеликою кількістю категорій (до 20–30). При великій кількості категорій викликає "прокляття розмірності".
**Target Encoding** — замість dummy-змінних використовується середнє значення цільової змінної для кожної категорії. Ефективний для категорій з великою кількістю значень (міста, товарні категорії), але потребує обережності з витоком даних (data leakage).
**Embedding для категорій** — навчені векторні представлення, аналогічні word2vec. Ефективні при глибокому навчанні та великій кількості категорій.
### Scaling числових ознак
Алгоритми, що використовують градієнтний спуск або відстані (нейронні мережі, SVM, KNN), чутливі до масштабу ознак. Сума замовлення в гривнях і вік клієнта в роках — різні масштаби, що ускладнюють навчання.
**StandardScaler** (Z-score normalization) — переводить дані до середнього 0 і стандартного відхилення 1. Підходить при нормальному розподілі ознак.
**MinMaxScaler** — нормалізує у діапазон [0, 1]. Добре для рівномірного розподілу, чутливий до викидів.
**RobustScaler** — використовує медіану та IQR замість середнього та стандартного відхилення. Стійкий до викидів — ідеальний для фінансових даних із аномальними транзакціями.
Дерева рішень та їхні ансамблі (Random Forest, XGBoost) до масштабу нечутливі — scaling для них не потрібен.
### Feature Selection
Не всі ознаки корисні. Зайві або корельовані ознаки ускладнюють навчання, збільшують час inference і можуть погіршити точність.
**Filter Methods** — статистичні тести: кореляція Пірсона для числових, chi-squared для категоріальних. Швидко, але не враховує взаємодії між ознаками.
**Wrapper Methods** — рекурсивне виключення ознак (RFE): модель навчається, найменш важливі ознаки видаляються, процес повторюється. Точніше, але обчислювально дорого.
**Embedded Methods** — Lasso-регресія (L1) обнуляє коефіцієнти нерелевантних ознак автоматично. Feature importance в деревах рішень показує внесок кожної ознаки.
### Створення нових ознак
Найбільший творчий аспект feature engineering — генерація нових ознак на основі предметного знання.
Часові ознаки: з дати транзакції виводимо день тижня, місяць, квартал, чи є день святковим. Це розкриває сезонні патерни.
Агрегаційні ознаки: середня сума замовлень клієнта за останні 30 днів, максимальна кількість товарів в одному замовленні, стандартне відхилення інтервалів між покупками.
Взаємодія ознак: добуток або відношення двох ознак може нести більше інформації, ніж кожна окремо. Відношення суми замовлення до середнього для категорії клієнта — потужніша ознака для виявлення аномалій.
## Типові помилки
**Data Leakage** — найнебезпечніша помилка. Ознака містить інформацію з майбутнього відносно моменту прогнозування. Класичний приклад: при прогнозуванні відтоку включити ознаку "кількість звернень до підтримки після відтоку". Модель буде ідеальною на тренуванні та нікчемною в реальності.
**Scaling до розбивки на train/test.** Якщо нормалізувати всі дані до розбивки, параметри scaler "побачать" тестові дані — це форма data leakage. Завжди fit scaler тільки на train, transform — на train і test окремо.
**Ігнорування пропущених значень.** Проста заміна пропусків середнім часто неоптимальна. Для деяких задач сам факт пропуску несе інформацію (клієнт не заповнив поле — можлива ознака незацікавленості).
## Автоматизований feature engineering
Ручний feature engineering потребує глибокого знання домену і часу. Для прискорення існують інструменти автоматизованого пошуку ознак.
**Featuretools** — open source бібліотека для автоматичної генерації ознак з реляційних даних. Генерує сотні агрегаційних та трансформаційних ознак автоматично — потім потрібна ручна селекція.
**AutoML-рішення** (AutoSklearn, H2O AutoML) включають автоматичний feature engineering у загальний пайплайн підбору моделей.
Автоматизований підхід генерує кандидати, але не замінює предметне знання. Найкращі результати — поєднання: автогенерація + відбір найважливіших + ручне доповнення доменними ознаками.
Стаття в розробці. Підпишіться щоб отримати сповіщення.
Написати нам →#feature engineering#machine learning#дані
КC
Команда CodeNest
Команда CodeNest
Практикуючий ML-інженер. Спеціалізується на побудові виробничих AI-систем для бізнесу.
🤖
Готові автоматизувати ваш бізнес?
Обговоримо ваш проєкт і запропонуємо оптимальне рішення. Безкоштовна консультація без зобов'язань.