fíčr endžinýringTaképříznakové inženýrství, featurizace, extrakce příznaků, tvorba proměnnýchPokročilý

Definice

Feature engineering je proces vytváření, výběru a úprav vstupních proměnných pro model strojového učení tak, aby data lépe vystihovala sledovaný jev. Zahrnuje odvozování nových příznaků, kódování kategorií, škálování hodnot, práci s chybějícími údaji a omezení úniku informací mezi tréninkem a testem.

Kategorie: Strojové učeníAktualizováno

Proč příznaky rozhodují o kvalitě modelu

Model strojového učení nepracuje přímo s realitou, ale se vstupy, které mu někdo připravil: sloupci v tabulce, tokeny v textu, pixely v obrazu nebo odvozenými hodnotami. Feature engineering převádí doménovou znalost do takové podoby, aby se vztahy v datech daly snáz naučit. Dobře navržený příznak může být pro jednoduchý model cennější než velmi složitý algoritmus nad chaotickými surovými daty.

Příznak může vzniknout výpočtem, kategorizací, agregací, normalizací nebo spojením více zdrojů. U strukturovaných dat jde často o věk účtu, počet nákupů za posledních 30 dní, poměr zaplacených a nezaplacených faktur nebo vzdálenost od nejbližší pobočky. U textu může jít o délku zprávy, jazyk, embedding nebo četnost určitých typů slov.

Odkud příznaky vznikají v datové pipeline

Feature engineering navazuje na sběr a čištění dat. V praxi často stojí mezi ETL procesem a samotným trénováním modelu. Datová pipeline musí zajistit, aby stejná pravidla platila při trénování, validaci i v produkci. Jestliže trénovací sada počítá příznak jinak než produkční služba, model se může chovat dobře v notebooku a špatně v reálném provozu.

Důležitá je také časová dostupnost dat. Příznak nesmí používat informaci, která v okamžiku predikce ještě nebyla známa. Predikce odchodu zákazníka například nemá používat datum zrušení účtu, protože právě to je výsledek, který se model snaží předpovědět.

Dva praktické příklady feature engineeringu

Následující situace ukazují rozdíl mezi pouhým přidáním sloupce a promyšleným vyjádřením problému.

Čas nákupu v e-commerce

Online obchod chce předpovědět pravděpodobnost dokončení objednávky. Samotná hodina nákupu jako číslo 0 až 23 zavádí umělou vzdálenost mezi 23:00 a 0:00, přestože jde o sousední časy. Cyklické zakódování pomůže modelu pochopit denní rytmus bez skoku na půlnoci.

import numpy as np

hour = 23
hour_sin = np.sin(2 * np.pi * hour / 24)
hour_cos = np.cos(2 * np.pi * hour / 24)

Riziko opožděné platby

Finanční tým chce odhadnout, které faktury budou zaplaceny pozdě. Surová částka faktury sama o sobě nestačí, protože velká faktura může být pro velkého zákazníka běžná. Užitečnější příznak může být poměr částky faktury k mediánu předchozích faktur stejného zákazníka. Model tak dostane informaci o neobvyklosti platby, ne jen o absolutní hodnotě.

Kde vzniká největší riziko zkreslení

Feature engineering může model výrazně zlepšit, ale může do něj také vložit chybný předpoklad. Agregace nad celou databází může nechtěně promíchat trénovací a testovací období. Kódování kategorií může zvýhodnit časté skupiny a potlačit menšiny. Ručně vytvořený příznak může navíc nést proxy informaci pro citlivou vlastnost, například lokalita může nepřímo souviset s příjmem nebo etnickým složením obyvatel.

Kvalitní feature engineering proto patří do verzované a testované pipeline. Každý příznak by měl mít popis významu, pravidlo výpočtu, očekávaný rozsah hodnot a kontrolu chybějících nebo extrémních hodnot. Produkční systém musí sledovat i drift: rozdělení příznaků se časem mění a model trénovaný na starých vzorcích může ztratit přesnost.

Příklady z praxe

  1. Cyklické zakódování hodiny nákupu

    Online obchod chce předpovědět dokončení objednávky podle času nákupu. Místo prostého čísla 23 pro jedenáctou večer použije dvojici sinus a kosinus, takže model chápe půlnoc jako plynulý přechod. Predikce pak méně trpí umělým skokem mezi 23:00 a 0:00.

    import numpy as np
    
    hour = 23
    hour_sin = np.sin(2 * np.pi * hour / 24)
    hour_cos = np.cos(2 * np.pi * hour / 24)
  2. Poměr faktury k historii zákazníka

    Tým pro správu pohledávek odhaduje, které faktury budou zaplaceny pozdě. Místo samotné částky faktury vytvoří příznak, který porovná částku s obvyklou fakturací konkrétního zákazníka. Model tak reaguje na neobvykle vysokou fakturu u daného zákazníka, ne jen na velká čísla obecně.

Časté omyly

MýtusStačí nasypat surová data do neuronové sítě a feature engineering není potřeba.
Ve skutečnostiNeuronové sítě umí část reprezentace naučit samy, hlavně u obrazů, zvuku a textu. U tabulkových a obchodních dat ale dobře navržené příznaky často rozhodují o přesnosti, stabilitě i vysvětlitelnosti modelu.
MýtusFeature engineering se udělá jednou před trénováním a pak je hotovo.
Ve skutečnostiFeature engineering je součást provozované pipeline. Pravidla výpočtu se musí verzovat, testovat a sledovat v čase, protože zdroje dat, chování uživatelů i obchodní procesy se mění.

Časté dotazy

Kdy má feature engineering větší přínos než složitější model?
Feature engineering má často větší přínos u tabulkových a obchodních dat, kde surové sloupce nevyjadřují důležité vztahy přímo. Model například nemusí snadno odvodit sezonnost, poměry, čas od poslední události nebo agregace za zákazníka. Složitější model může pomoci, ale bez dobrých vstupů se stále učí z neúplného obrazu problému.
Patří normalizace dat do feature engineeringu?
Normalizace dat se obvykle bere jako součást širší přípravy příznaků, zvlášť pokud mění reprezentaci vstupu pro model. Škálování číselných hodnot, logaritmická transformace nebo standardizace mohou výrazně ovlivnit algoritmy citlivé na měřítko, například lineární modely, neuronové sítě nebo metody založené na vzdálenosti. U stromových modelů bývá vliv škálování menší, ale stále může patřit do pipeline.
Jak se feature engineering testuje v produkčním systému?
Feature engineering se v produkci testuje podobně jako běžný kód i jako datová smlouva. Testy ověřují rozsah hodnot, typy, chybějící data, časovou dostupnost vstupů a shodu výpočtu mezi trénováním a predikcí. Monitoring navíc sleduje drift příznaků, protože změna chování uživatelů nebo datových zdrojů může zhoršit model i bez změny kódu.
Může AutoML nahradit feature engineering?
Automatické strojové učení umí část feature engineeringu navrhnout nebo vyzkoušet, například kódování kategorií, škálování, základní transformace a výběr příznaků. Doménová znalost ale zůstává důležitá u časové dostupnosti dat, obchodního významu proměnných, právních omezení a rizika úniku cílové informace. Automatizace pomáhá hledat varianty, ale nenahrazuje pochopení problému.

Zdroje

  1. Feature engineering(otevře se v novém okně)Wikipedia
  2. Machine Learning Crash Course(otevře se v novém okně)Google for Developers
  3. Working with preprocessing layers(otevře se v novém okně)TensorFlow
  4. Transforms(otevře se v novém okně)PyTorch

Související pojmy

Potřebujete to vyřešit v praxi?

Poradíme, jak na to ve vašem projektu

Vysvětlit pojem je jedna věc, navrhnout kolem něj funkční řešení druhá. Ozvěte se a probereme, co dává smysl u vás.