XGBoost

Z Wikipedie, otevřené encyklopedie
XGBoost
Logo
Aktuální verze2.0.3 (19. prosince 2023)
Operační systémLinux
Vyvíjeno vR, Python, Julia, C++, Java, Ruby, C a Swift
Typ softwaruknihovna a svobodný software
LicenceApache License, Version 2.0
Webxgboost.ai
Některá data mohou pocházet z datové položky.

XGBoost je algoritmus, který je založený na gradientních rozhodovacích stromech určených pro rychlost a výkon. XGBoost znamená eXtreme Gradient Boosting. „Název XGBoost však ve skutečnosti odkazuje na inženýrský cíl posunout hranici výpočetních zdrojů pro algoritmy s vylepšeným stromem. To je důvod, proč mnoho lidí používá XGBoost.“[1] - Tianqi Chen.

Popis algoritmu[editovat | editovat zdroj]

XGBoost je softwarová knihovna, kterou si můžeme stáhnout a nainstalovat do svého zařízení a poté k ní přistupovat z různých rozhraní. XGBoost konkrétně podporuje následující hlavní rozhraní:

Algoritmus XGBoost byl vyvinut jako výzkumný projekt na University of Washington. Tianqi Chen a Carlos Guestrin představili svůj příspěvek na konferenci SIGKDD v roce 2016 a okamžitě zaujali svět Machine Learning. Výsledkem je, že existuje silná komunita datových vědců, kteří přispívají k open source projektům. Algoritmus se odlišuje následujícími aspekty:

  • Široká škála aplikací: lze použít k řešení regresí, klasifikace, hodnocení a uživatelsky definovaných problémů s predikcí.
  • Přenositelnost: běží hladce v systémech Windows, Linux a OS X.
  • Jazyky: Podporuje všechny hlavní programovací jazyky včetně C ++, Python, R, Java, Scala a Julia.
  • Cloud integrace: Podpora AWS, Azure a funguje dobře s Apache Flink, Apache Spark a dalšími platformy.

XGBoost a Gradient Boosting Machines (GBM) jsou obě metody stromového souboru, které používají princip CART pomocí architektury gradientního sestupu. XGBoost však vylepšuje základní rámec GBM prostřednictvím optimalizace systémů a vylepšení algoritmů.

Optimalizace systému[editovat | editovat zdroj]

  • Paralelizace: XGBoost přistupuje k procesu vytváření sekvenčních stromů pomocí paralelní implementace. To je možné kvůli zaměnitelné povaze smyček používaných k budování základních trénovacích dat; vnější smyčka, která obsahuje výčet listových uzlů stromu, a druhá vnitřní smyčka, která vypočítává funkce. Toto vnoření smyček omezuje paralelizaci, protože bez dokončení vnitřní smyčky (výpočetně náročnější ze dvou) nelze vnější smyčku spustit. Proto, aby se zlepšila doba běhu, je pořadí smyček zaměňováno pomocí inicializace prostřednictvím globálního skenování všech instancí a řazení pomocí paralelních vláken. Tento přepínač zlepšuje výkon algoritmu kompenzací veškerých režijních nákladů paralelizace ve výpočtu.
  • Prořezávání stromů: XGBoost použije parametr „max_depth“ místo kritéria a začne prořezávat stromy pozpátku. Tento přístup „hloubka na prvním místě“ významně zlepšuje výpočetní výkon.
  • Optimalizace hardwaru: Tento algoritmus byl navržen tak, aby efektivně využíval hardwarové prostředky. Toho je dosaženo přidělením mezipamětí  každému vláknu pro ukládání statistik přechodu. Další vylepšení, jako je „out-of-core“ výpočet, optimalizuje dostupné místo na disku při zpracování velkých datových rámců, které se nevejdou do paměti.
  • Algoritmická vylepšení:
    • Regularizace : Penalizuje složitější modely prostřednictvím regularizaci LASSO (L1) a Ridge (L2), aby se zabránilo nadměrnému přeplňování modelů.
    • Křížová validace: Algoritmus je dodáván s integrovanou metodou křížové validace při každé iteraci, což odstraňuje potřebu explicitně naprogramovat toto hledání a určit přesný počet požadovaných iterací v jednom běhu.

Důležité parametry XGBoost:[editovat | editovat zdroj]

  • Booster: (default = gbtree)

Je založen na jednom typu problému (regrese nebo klasifikace)

gbtree / dart - Klasifikace, gblinear - Regrese.

  • nthreads: (default - je nastaven maximální počet dostupných vláken)

Počet paralelních vláken potřebných ke spuštění XGBoost.

  • early_stopping_rounds:

XGBoost podporuje předčasné zastavení po pevném počtu iterací.

  • eta ƞ (default = 0,3, alias: rychlost učení, rozsah: [0,1])

Zmenšení velikosti kroku použité při aktualizaci, aby se zabránilo nadměrnému přeplňování modelu. Po každém kroku posílení můžeme přímo získat váhy nových funkcí a eta zmenší váhy funkcí, aby byl proces posílení konzervativnější.

  • gamma (default = 0, alias: min_split_loss, rozsah: [0, ∞])

Minimální snížení ztrát potřebné k vytvoření dalšího oddílu na listovém uzlu stromu. Čím větší je gama, tím konzervativnější bude algoritmus

  • max_depth (výchozí = 6, rozsah: [0, ∞])

Maximální hloubka stromu. Zvýšení této hodnoty způsobí, že model bude složitější a bude pravděpodobně větší.

  • min_child_weight (výchozí = 1, rozsah: [0, ∞])

Minimální součet hmotnosti instanci u potomka. Pokud krok rozdělení stromu vyústí v listový uzel se součtem hmotnosti instance menší než min_child_weight, pak se proces vytváření vzdá dalšího dělení. U úlohy lineární regrese to jednoduše odpovídá minimálnímu počtu instancí potřebných pro každý uzel. Čím větší je min_child_weight, tím konzervativnější bude algoritmus.

Parametry úlohy učení:

Metrika, která se má použít pro ověření dat. Výchozí hodnoty jsou rmse pro regresi a chyba pro klasifikaci.

Typické hodnoty jsou:

  • rmse – chyba střední kvadratické hodnoty.
  • mae – průměrná absolutní chyba.
  • logloss – negativní pravděpodobnost logu.
  • error – míra chyb binární klasifikace (prahová hodnota 0,5).
  • merror – míra chyb klasifikace více tříd.
  • mlogloss – víceúčelový logloss.
  • auc – plocha pod křivkou.

Použití algoritmu XGBoost[editovat | editovat zdroj]

Zvažte použití XGBoost pro jakýkoli úkol strojového učení, pokud splňuje následující kritéria:

Je velký počet pozorování v trénovacích datech.

Počet funkcí je menší než počet pozorování v trénovacích datech.

Data v trénovacích souborech jsou smíšené numerické a kategorické znaky nebo pouze numerické znaky.

Když je třeba vzít v úvahu metriky výkonu modelu.

Výhody[editovat | editovat zdroj]

Mezi hlavní rysy XGBoost, díky nimž se liší od ostatních algoritmů, patří:

  • Chytrá penalizace stromů
  • Proporcionální zmenšení listových uzlů
  • Newton Boosting
  • Extra parametr randomizace
  • Implementace na jednom distribuovaném systému a výpočet out-of-core

Rychlost provedení XGBoost[editovat | editovat zdroj]

XGBoost je obecně rychlý ve srovnání s jinými implementacemi podpory gradientu. Szilard Pafka provedl několik objektivních měření srovnávajících výkon XGBoost s jinými implementacemi gradient boosting a bagged decision trees. Výsledky napsal v květnu 2015 v příspěvku na blogu s názvem Benchmarking Random Forest Implementations [2]. Jeho výsledky ukázaly, že XGBoost byl téměř vždy rychlejší než ostatní srovnávané implementace od R, Python Spark a H2O.

Instalace XGBoost[editovat | editovat zdroj]

Na webových stránkách dokumentace XGBoost je komplexní průvodce instalací. Pokrývá instalaci pro Linux, Mac OS X a Windows. Zahrnuje také instalaci na platformách.

Odkazy[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]

  1. CHOUHBI, Kamal. 1. XGBoost : Introduction. Medium [online]. 2019-12-30 [cit. 2021-01-26]. Dostupné online. (anglicky) 
  2. http://datascience.la/benchmarking-random-forest-implementations/ Benchmarking Random Forest Implementations

Externí odkazy[editovat | editovat zdroj]