Inżynieria cech

Proces tworzenia, doboru i przekształcania cech z surowych danych, by poprawić skuteczność modelu. Często decyduje o jakości całego rozwiązania.

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.hour
  • df['dayofweek'] = df['created_at'].dt.dayofweek
  • df['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.