Odlehlá hodnota (Outlier) je datový bod, který se výrazně liší od ostatních pozorování v datové sadě. Může jít o chybu měření, chybu při zadávání dat, nebo o vzácný, ale reálný extrém (např. plat miliardáře v průzkumu mezd).
Práce s těmito hodnotami je klíčová, protože mnoho algoritmů strojového učení je na ně extrémně citlivých.
Než začneme hodnoty odstraňovat, musíme je identifikovat. Existují k tomu grafické i statistické metody:
Jakmile odlehlé hodnoty najdeme, máme čtyři hlavní možnosti, jak s nimi naložit:
Pokud víme, že jde o chybu (např. věk 200 let), záznam jednoduše vymažeme.
Použití matematických funkcí, které „přitáhnou“ extrémní hodnoty blíže ke středu.
Nahrazení odlehlé hodnoty mediánem nebo průměrem celé sady.
Někdy jsou odlehlé hodnoty to nejdůležitější (např. detekce podvodů). V takovém případě zvolíme algoritmy, které s nimi umí pracovat:
import pandas as pd # Výpočet mezikvartilového rozpětí Q1 = df['sloupec'].quantile(0.25) Q3 = df['sloupec'].quantile(0.75) IQR = Q3 - Q1 # Definice hranic lower_bound = Q1 - 1.5 * IQR upper_bound = Q3 + 1.5 * IQR # Filtrování outlierů df_clean = df[(df['sloupec'] >= lower_bound) & (df['sloupec'] <= upper_bound)]
| Situace | Doporučený postup |
|---|---|
| Zjevná technická chyba (mínusová cena) | Smazat nebo opravit. |
| Přirozený extrém (extrémně bohatý klient) | Ponechat, ale použít robustní algoritmus nebo transformaci. |
| Hodnota je předmětem zkoumání (podvody) | Vždy ponechat, zde jsou outlieři cílem analýzy. |
Související články:
Tagy: ml statistics outliers data_cleaning preprocessing