Inżynieria cech (ang. feature engineering) to proces tworzenia, doboru i przekształcania cech (features) z surowych danych tak, by model uczenia maszynowego miał z czego się uczyć. Mówiąc wprost: surowe dane rzadko nadają się wprost do trenowania. Data, tekst, adres IP czy kolumna z kategoriami same w sobie niewiele mówią modelowi liniowemu czy drzewu decyzyjnemu. Twoim zadaniem jest przerobić je na liczby i sygnały, które realnie korelują z tym, co chcesz przewidzieć. W klasycznym ML to często ten etap decyduje o wyniku, nie wybór algorytmu.
Do czego to służy
Model widzi tylko to, co mu podasz. Jeśli masz timestamp zamówienia, model nie domyśli się, że istotny jest dzień tygodnia albo godzina szczytu — musisz te cechy wyciągnąć sam. Inżynieria cech obejmuje m.in. kodowanie zmiennych kategorycznych (one-hot, target encoding), skalowanie liczb (standaryzacja, normalizacja), tworzenie cech pochodnych (np. cena za metr z ceny i powierzchni), agregacje (średnia transakcja klienta z ostatnich 30 dni) oraz obsługę braków danych.
Cel jest zawsze ten sam: zwiększyć stosunek sygnału do szumu. Dobra cecha to taka, która rozdziela klasy albo dobrze koreluje z wartością docelową — i którą model jest w stanie wykorzystać.
Przykład z praktyki
Załóż, że w pandas masz kolumnę created_at i przewidujesz, czy zamówienie się opłaci. Zamiast karmić model surowym timestampem, rozbijasz go na sensowne sygnały:
df['hour'] = df['created_at'].dt.hourdf['dayofweek'] = df['created_at'].dt.dayofweekdf['is_weekend'] = df['dayofweek'].isin([5, 6]).astype(int)
Do kodowania kategorii sięgniesz po OneHotEncoder ze scikit-learn, a całość spięsz w Pipeline, żeby te same transformacje poszły na treningu i na produkcji. Dla danych tabelarycznych to często wystarczy, by przeskoczyć z miernego baseline na przyzwoity wynik bez dotykania samego modelu.
Częste błędy
Data leakage to grzech numer jeden: liczysz statystyki (np. średnią targetu) na całym zbiorze, w tym na danych testowych, i model „widzi przyszłość”. Na walidacji wygląda genialnie, na produkcji leży. Skalowanie i encodery dopasowuj tylko na zbiorze treningowym (fit na train, transform na test).
Drugi mit: „deep learning sam wymyśli cechy, więc inżynieria cech umarła”. Owszem, sieci potrafią uczyć się reprezentacji z surowych danych (obrazy, tekst), ale na danych tabelarycznych ręczne cechy i modele typu gradient boosting wciąż często wygrywają. Uważaj też na nadmiar cech — więcej nie znaczy lepiej, bo rośnie ryzyko overfittingu i kosztu obliczeń.
Pojęcia powiązane
Warto znać: feature selection (dobór cech), one-hot encoding, normalizacja i standaryzacja, data leakage, pipeline w scikit-learn, feature store (do współdzielenia cech między modelami) oraz overfitting.