TakéRegresní úloha, Regresní analýza, Regresní modelPokročilý

Definice

Regrese je úloha strojového učení a statistiky, při které model odhaduje spojitou číselnou hodnotu z hodnot vstupních proměnných. Typickým výstupem je cena, teplota, doba trvání nebo objem prodeje. Model se učí ze vzorků se známou odpovědí a jeho chybu měříme vzdáleností předpovědi od skutečné hodnoty, nejčastěji střední kvadratickou chybou.

Kategorie: Strojové učeníAktualizováno

Nezaměňujte: Regrese označuje v statistice a strojovém učení predikci spojité hodnoty, zatímco v testování softwaru návrat dříve opravené chyby nebo rozbití dosud funkční části systému.

Co regrese odhaduje

Regrese odpovídá na otázku „kolik“, nikoli „která kategorie“. Vstupem jsou příznaky jednoho pozorování (výměra bytu, počet pokojů, vzdálenost od centra), výstupem je jedno číslo na spojité škále (cena v korunách). Tím se regrese liší od klasifikace, která přiřazuje pozorování do konečné množiny tříd. Obě patří do rodiny učení s učitelem, protože trénovací data obsahují správnou odpověď.

Od přímky ke složitým modelům

Nejjednodušší variantou je lineární regrese: model hledá koeficienty přímky nebo nadroviny tak, aby součet čtverců odchylek od naměřených bodů byl co nejmenší. Metoda nejmenších čtverců má pro lineární případ uzavřené analytické řešení, takže model se dá spočítat přímo, bez iterativní optimalizace.

Když je vztah nelineární, sáhne se po polynomiálních členech, rozhodovacích stromech a jejich ansámblech (random forest, gradient boosting), podpůrných vektorech nebo neuronové síti s jedním číselným výstupem a lineární aktivací na konci. Postup učení zůstává stejný: minimalizovat ztrátovou funkci, která penalizuje vzdálenost předpovědi od pravdy.

Jak se měří kvalita předpovědi

  • MSE / RMSE: střední kvadratická chyba a její odmocnina. Kvadrát tvrdě trestá velké odchylky, takže model je citlivý na odlehlá pozorování.
  • MAE: střední absolutní chyba. Robustnější vůči outlierům, hůř se derivuje v nule.
  • : podíl rozptylu cílové proměnné vysvětlený modelem. Hodnota 1 znamená dokonalou shodu, 0 znamená model na úrovni průměru, záporné číslo je horší než průměr.
  • MAPE: relativní chyba v procentech, nepoužitelná, když se cílová hodnota blíží nule.

Kde regrese klame

Nalezený vztah je korelační, ne kauzální. Koeficient u příznaku říká, jak se mění předpověď při změně toho příznaku za jinak stejných podmínek v datech, nikoli co se stane po zásahu do reality. Při silné korelaci mezi příznaky (multikolinearitě) jsou koeficienty nestabilní: drobná změna dat jimi zásadně otočí, i když predikce zůstane stejná.

Druhým rizikem je extrapolace. Model natrénovaný na bytech od 30 do 120 m² nemá o hale s 900 m² žádnou informaci a stejně vydá číslo, které vypadá věrohodně. Přidávání příznaků a stupňů polynomu zase vede k přeučení: model kopíruje šum trénovacího vzorku. Proti tomu se nasazuje regularizace (ridge, lasso) a poctivá validace na oddělených datech.

Regrese v testování softwaru

V softwarovém inženýrství znamená regrese něco úplně jiného: návrat dříve opravené chyby nebo rozbití funkčnosti, která dosud fungovala. Regresní testy jsou proto sada testů spouštěná po každé změně, která hlídá, že se chování nezhoršilo. Význam se pozná z kontextu: v datové analytice jde o statistický model, v CI/CD pipeline o kontrolu proti návratu chyby.

Příklady z praxe

  1. Odhad ceny bytu z historických inzerátů

    Realitní portál má 40 tisíc uzavřených transakcí s výměrou, dispozicí, patrem a lokalitou. Lineární regrese s logaritmovanou cenou dá základní model, gradient boosting nad stejnými příznaky sníží RMSE zhruba na polovinu. Kontrolou je RMSE na datech z pozdějšího období, ne na náhodně rozděleném vzorku, protože ceny v čase driftují.

    from sklearn.linear_model import Ridge
    from sklearn.metrics import mean_squared_error, r2_score
    
    model = Ridge(alpha=1.0).fit(X_train, y_train)
    pred = model.predict(X_test)
    
    print(mean_squared_error(y_test, pred, squared=False))  # RMSE v Kc
    print(r2_score(y_test, pred))
  2. Predikce doby doručení v e-shopu

    E-shop chce zákazníkovi ukázat konkrétní počet hodin do doručení, ne jen „do tří dnů“. Cílovou proměnnou je naměřený čas mezi expedicí a předáním, příznaky jsou dopravce, PSČ, den v týdnu a hmotnost. Zde se vyplatí MAE místo MSE: jedna zásilka zaseklá na týden by kvadratickou chybou stáhla model k pesimismu pro všechny ostatní.

Časté omyly

MýtusVysoké R² znamená, že model je dobrý.
Ve skutečnostiR² měří jen podíl vysvětleného rozptylu na daných datech a roste s každým přidaným příznakem, i s náhodným. Vypovídající je až R² nebo RMSE na datech, která model při tréninku neviděl.
MýtusZáporný koeficient u proměnné dokazuje, že ta proměnná hodnotu snižuje.
Ve skutečnostiKoeficient popisuje statistickou asociaci v konkrétním vzorku při daném složení ostatních příznaků. Při multikolinearitě nebo chybějící zmatující proměnné může znaménko klidně otočit, aniž by se cokoli změnilo v realitě.
MýtusRegrese je vždy jen přímka.
Ve skutečnostiLineární regrese je lineární v koeficientech, ne nutně ve vstupech. Po přidání mocnin, logaritmů nebo interakcí modeluje zakřivené vztahy a stromové či neuronové regresory nejsou omezené vůbec.

Časté dotazy

Kolik dat potřebuje regresní model?
Regresní model potřebuje řádově víc pozorování než příznaků. U lineární regrese se jako pracovní minimum uvádí několik desítek vzorků na jeden příznak, jinak koeficienty jen kopírují náhodu ve vzorku. Stromové ansámbly a neuronové sítě mají mnohem víc volných parametrů, takže při stovkách řádků obvykle přeučí. Rozhoduje ale i poměr signálu k šumu: u čistě naměřené fyzikální veličiny stačí málo bodů, u lidského chování s velkým rozptylem ani desetitisíce řádků nemusí stačit na stabilní odhad.
Jak poznám, že mám místo regrese použít klasifikaci?
Rozhodující je povaha cílové proměnné a to, jak se s výstupem naloží. Když je odpověď číslo na spojité škále a záleží na tom, o kolik se model netrefil, jde o regresi. Když je odpověď jedna z několika kategorií, patří úloha klasifikaci. Hraniční případ je uměle diskretizovaný cíl, například „levné, střední, drahé“ podle ceny: tady se obvykle vyplatí modelovat regresí původní číslo a prahy aplikovat až na predikci, protože binování před tréninkem zahazuje informaci.
Proč mi model funguje na trénovacích datech a v provozu ne?
Nejčastější příčinou je přeučení: model si zapamatoval šum trénovacího vzorku místo obecného vztahu. Druhou příčinou je únik informace, kdy se do příznaků dostane veličina, která v okamžiku predikce ještě neexistuje. Třetí je posun distribuce, kdy se realita od doby sběru dat změnila. Pomáhá držet oddělenou testovací sadu, u časových dat dělit podle času a ne náhodně, přidat regularizaci a v provozu průběžně měřit chybu proti skutečně naměřeným hodnotám.
Co znamená regrese v testování softwaru?
Regrese v testování softwaru znamená, že nová změna kódu rozbila funkčnost, která dříve fungovala, nebo vrátila již opravenou chybu. Regresní testy jsou sada automatizovaných testů pokrývajících existující chování, kterou CI pipeline spouští po každém commitu nebo před vydáním. Typickým postupem je, že se ke každé nahlášené chybě dopíše test, který ji reprodukuje; ten pak trvale hlídá, aby se stejný problém nevrátil. S tímto významem nemá statistická regrese nic společného kromě jména.

Zdroje

  1. Regression analysis(otevře se v novém okně)Wikipedia
  2. Ordinary least squares(otevře se v novém okně)Wikipedia
  3. Introduction to Machine Learning Problem Framing(otevře se v novém okně)Google for Developers
  4. PyTorch Documentation(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.