Úvod

Máme-li dostatek dat ať už z různých měření nebo z databází, můžeme na základě jejich analýzy predikovat nebo vizualizovat slednovaný jev nebo vlastnost, která nás zajímá. Přesnost posouzení pak závisí na velikosti a kvalitě těchto dat. Rozhodujícími faktory jsou zde také čas a peníze. Jsou-li data například ve stovkách gigabajtů, musíme se zajímat i o to, kolik těchto analýz chceme udělat a jak rychle. Stačí nám jich pár nebo budeme nově aktualizovaná data analyzovat opakovaně? Vyplatí se nám jedna výpočetní stanice nebo vícero?

Následující ukázkový příklad slouží k demonstraci jak lze analyzovat například cvičební sestavu ve fitnessu ve spojení s chytrými technologiemi, jež jsou v dnešní době levně dostupné.


Mějme dáno šest sportovců ve fitnessu. Všichni sportovci mají na sobě tři sensory, tak jak je naznačeno na obrázku vpravo (umístění senzoru je znázorněno červeným obdélníčkem). Čtvrtý sensor je uchycen k čince. Díky těmto senzorům jsme schopni zjistit orientaci, natočení a rychlost pohybu v prostoru, neboli víme jaký cvik každý sportovec udělal. Tato real-time měřená data pak pomocí Bluetooth nebo wi-fi zaznamenáváme na počítač.

Sportovci byli požádáni, aby provedli s činkou pět různých cvičebních sestav. Těchto pět sestav pro jednoduchost označme velkými písmeny A až E. Nyní si musíme uvědomit, co chceme analyzovat. Chceme řešit úlohu, kdy sportovci cvičí všech pět sestav správně, a u dalšího cviku určit do jaké sestavy cvik patří? Nebo chceme řešit úlohu, kdy například sestava A odpovídá dobře provedeným cvikům, zatímco zbylé nikoliv a úkolem je rozponat, zda je další cvik správně proveden?

Označme tato naměřená data jako dataset training data. Dataset tedy obsahuje informace o tom, do jaké sestavy cvik patří s tím, že tento cvik je jednoznačně určen naměřenými hodnotami ze senzorů. Druhá sada naměřených dat, dataset testing data, pak obsahuje pouze označení cviku (zde jej značíme id = číslo) a k němu odpovídající hodnoty ze senzorů. U těchto cviků pak chceme určit do jaké sestavy cvik patří podle toho, jaký problém řešíme, viz odstavec výše.


Analýza

Z obou datasetů vybereme jenom ty sloupce, které obsahují relevantní data. Sloupce obsahující prázdná pole nebo nedefinované znaky do analýzy nezahrneme. Z původních dat o "objemu" 19 622 řádků a 160 sloupců jsme tak data redukovali na 52 sloupců za stávajících řádků.

K analýze jsme zvolili metodu RandomForestClassifier, neboť se ukázalo, že na těchto datech je velice rychlá. Navíc nám může poskytnout vodítko, jaké sloupce jsou více signifikantní než jiné, viz odstavec Výsledky. Díky rychlosti výpočtu (cca několik vteřin) můžeme zavhrnout například metodu PCA, jež by nám redukovala počet vstupních sloupců.


Výsledky

Na níže uvedených sloupcových grafech (Variable Importance) je vykresleno v procentuálním zastoupení prvních 20 signifikantních měřených vlastností pro jednotlivé sportovce.

Confusion matrix popisuje jak byl daný algoritmus úspěšný, nebo-li jak přesný byl zvolený klasifikační model. Diagonální hodnoty ukazují v kolika případech byla predikce úspěšná, zatímco mimodiagonální hodnoty zobrazují kdy nebyla.

Hodnota MSE značí Mean Squared Error a udává velikost jak moc se "liší" predikované hodnoty od hodnot vstupních. Často se lze setkat s touto hodnotou v procentech.

Konkrétně například u sportovce Carlitose byl cvik s pořadovým číslem (id) 9 algoritmem zařazen do sestavy A, dále id = 11 a 18 do B.


carlitos
id sestava
9 A
11 B
18 B

MSE = 0.03854
pedro
id sestava
1 B
17 A
19 B

MSE = 0.03321
adelmo
id sestava
4 A

MSE = 0.01969
charles
id sestava
10 A

MSE = 0.00754
eurice
id sestava
5 A
13 B
16 E
20 B

MSE = 0.03148
jeremy
id sestava
2 A
3 B
6 E
7 D
8 B
12 C
14 A
15 E
MSE = 0.02644

Použité zdroje

Data: HAR data