Predikce poruch vodních pump v Tanzanii

Hana Mrazkova
6 min readNov 19, 2017

--

Voda je zásadním zdrojem pro život na Zemi. Její ústřední role přesahuje do všech oblastí lidského života. Má významný vliv na sociální a hospodářský rozvoj společnosti. Dostupnost vody snižuje riziko výskytu zdravotních onemocnění, prodlužuje délku života a zlepšuje životní úroveň. V Tanzanii patří mezi hlavní zdroje sladké vody především jezera, řeky, potoky, přehrady a podzemní vody. Zvyšující se populační růst a urbanizace má velký vliv na kvalitu a množství dostupné vody. Navíc ne ve všech oblastech je voda dostupná. Udržitelnost současného i budoucího stavu dostupnosti vody závisí především na řádném hospodaření s vodními zdroji.

Cílem tohoto příspěvku je na základě dostupných dat od společnosti Taarifa a Tanzanian Ministry of Water pokusit se o predikci poruch vodních pump v Tanzanii v závislosti na vybraných faktorech.

A jak se to vlastně stalo?

V souvislosti s mojí potřebou objevování nového a snahou porozumět světu prostřednictvím dat jsem se před pár měsíci přihlásila do kurzu Digitální akademie, pořádaného partou holek z Czechitas. V rámci několika týdenního kurzu nám byly představeny základy SQL, Pythonu a několika datových nástrojů na zpracování, analýzu a vizualizaci dat. Výstupem kurzu je kromě získaných znalostí a dovedností také vypracování vlastního projektu.

Proces výběru tématu nebyl v mém případě okamžitý. Díky počáteční nejasné představě o obsahové části projektu a o tom, co jsem vlastně schopná vytvořit, mi hlavou probíhaly různé nápady. Dlouhou dobu se však “neobjevovalo” téma, nad kterým by mé srdce zaplesalo. Nutno dodat, že nápad na téma “Predikce poruch vodních pump v Tanzanii” není úplně můj, nicméně mě ohromil natolik, že jeho volba byla jasná. A to i přesto, že jeho zpracování vyžadovalo využití některé z technik z oblasti zcela mě neznámé — Machine Learnig. Avšak vize přispět k záchraně lidstva v Tanzanii (obrazně řečeno) překonala mé obavy a stala se pro mě výzvou. Také mě baví unikátnost a reálnost tohoto projektu.

Dostupnost dat

Organizace Driven Data Lab přináší všem nadšencům datové analýzy možnost predikovat či analyzovat různé společenské problémy na základě dostupných dat s cílem získávat ty nejlepší datové modely. Jednou z aktuálních soutěží je i predikce poruch vodních pump v Tanzanii. Dataset obsahuje 4 csv soubory a je přístupný po přihlášení do soutěže (odkaz ve zdrojích).

Dashbordík na začátek — aneb, chtěla jsem si udělat vizualizaci v Tableau

Uvedený dashboard reprezentuje data z původního datasetu. Jedná se o přehled funkčních, nefunkčních a funkčních pump, které potřebují opravit v závislosti na druhu zdroje, v závislosti na kvalitě zdroje a přehled jejich umístění na území Tanzanie, přehled jednotlivých vodních zdrojů na území Tanzánie.

Proces úpravy dat pro Machine Learning

Cíl projektu a data mám, teď už jen vybrat vhodný způsob, prostřednictvím kterého budu data predikovat. S ohledem na potřebu klasifikace dat do skupin se podle kámoše “Google” a mého uvážení na základě dostupnch informací jako nejvíce příhodný jeví použít některý z Machine Learning Classificators. Typickými algoritmem z tohoto ranku je Random Forest. Příjemné zjištění je, že v rámci knihoven určených pro analýzu a Mechine Learning scikit-learn (sklearn) je již tento algoritmus implementován. Zároveň jsou knihovny sklearn kompatibilní s knihovnami pandas a numpy, které budu používat na úpravu dat.

Nejdříve je potřeba u dostupných dat týkajících se vodních pump identifikovat jejich význam a v návaznosti na to vybrat ty atributy, které mají na predikci vliv, neboť právě výběr vstupních dat datového modelu zásadně ovlivňuje její výsledek.

Dalším krokem je samotné čištění dat, u kterého jsem provedla následující:

  • výběr atributů, u kterých předpokládám, že mají vliv na predikci a zároveň mají mezi sebou vzájemnou minimální závislost;
  • odstranění atributů, které nemají vliv na predikci nebo jsou obdobou atributů již do predikce zahrnutých;
  • seskupování hodnot do tříd v rámci vybraných atributů (u atributů, které mají vysoký počet hodnot, avšak několik z těchto hodnot obsahuje větší množství informací oproti ostatním — např. bylo vybráno 10 nejvíce zastoupených hodnot a další hodnoty byly sloučeny do jedné třídy s názvem “ostatní”);
  • seskupování hodnot v rámci vybraných numerických atributů (u numerických atributů, které mají vysoký počet různých hodnot a v rámci nich malý počet informací, vytvoříme třídy (intervaly hodnot), do kterých různé hodnoty seskupíme);
  • nahrazení nulových hodnot mediánem u vybraných numerických atributů;
  • přidání pomocných atributů na základě získaní dalších potřebných informací (např. pro výpočet doby (počtu měsíců) od posledního záznamu o vodní pumpě).

Po provedení výše uvedených kroků vznikl upravený datový model, u něhož nyní všechna nenumerická data převedu na numerické hodnoty. Následně vznikne datový model vhodný pro učení a testování algoritmu.

Proces učení a testování dat prostřednictvím Random Forest Classificator (RFC)

Nyní je potřeba ze souboru upravených dat náhodně vybrat data pro učení a testování. Často se udává poměr testovaných dat 30%. Data se vybírají náhodně, aby aby nedošlo ke zkreslení učícího se algoritmu. Následně do RFC pošlu data pro učení a na testovacích datech a ověřím skóre, na kolik se RFC naučil z dostupných dat rozlišovat cílové skupiny.

Aby bylo co porovnávat provedla jsem nejdříve výběr dat pro učení se a testování ze všech dat (predikce 1), v druhém případě jsem zvolila náhodný výběr dat pro učení se a testování z počtu hodnot odpovídají počtu pump, které potřebují opravit (predikce 2).

Predikce 1
Predikce 2

Nakonec jsem ještě provedla report hodnot, které jednak vyjadřují přesnost (precision), tedy podíl mezi správnými a všemi vrácenými hodnotami a citlivost (recall) správných výsledků oproti výsledkům, které měly být vráceny jako správné.

Report predikce 1
Report predikce 2

Analýza výsledků

A tady jsou! Jako vítěze jsem vybrala výsledek predikce 1– tedy 77%. Procento úspěšnosti je vyšší s ohledem na to, že učení se a testování probíhalo na větším vzorku než u predikce 2, kde byl tento počet definován. Přiřadím-li výsledek predikce k datovému modelu, u kterého měl být stav pumpy zjišťován, vyjdou následující hodnoty:

Ve srovnání s ostatními “soutěžícími”, jejichž procento úspěšnosti se pohybuje kolem 82 %, považuji svůj výsledek za obstojný. Je jasné, že při použití nějaké té statistiky a díky preciznější analýze dat (která ovšem vyžaduje více času) bych došla pravděpodobně k procentuálně vyššímu výsledku. Za úvahu také stojí zvolit jinou cestu zjišťování predikce, např. XGBoost models.

Shrnutí, zhodnocení, slovo na závěr…

Co říci závěrem… Jsem ráda, že jsem si zvolila téma, které pro mě bylo výzvou, a u kterého jsem na začátku ani nevěděla, jak ho uchopit. Nyní končím s prvním prototypem projektu, který má konkrétní výsledek. Nevěřím :). I s ohledem na nedostatek spánku v posledních týdnech mě to furt baví a to je to důležitý! Dokonce jsem se naučila i pár slov svahilsky. Navíc musím u další predikce pokořit hranici minimálně 80 %.

Poděkování

Velké díky Martinu Bosákovi a Pavlovi Chocholoušovi za trpělivost, pomoc, podporu a dobré rady a taky velké díky také mým blízkým, kteří pro mě byli po celou pevně stojící oporou. Samozřejmě nesmím zapomenout na holky z Czechitas, všechny lektory a kouče, kteří se nám s velkou péčí věnovali.

--

--