markdown
Klasifikace-a-rozpoznavani.md
markdown
# Klasifikace, rozpoznávání a shlukování, čili tři slova pro tři různé věci V běžné řeči to jsou synonyma. V rozpoznávání ne, a je to jeden z prvních rozdílů, které musíš mít srovnané. Není to slovíčkaření - **liší se tím, co o třídách víš předem**, a z toho plyne, jaké metody vůbec můžeš použít. Napiš „klasifikace" tam, kde jde o shlukování, a sáhneš po metodě, která potřebuje označená data. Ta ale nejsou a nebudou, protože kdyby byla, nebylo by co shlukovat. Tahle stránka rozliší ty tři pojmy, zavede rozhodovací pravidlo a diskriminační funkce a řekne, na jaké stránky pokračovat. Konkrétní metody jsou jinde: [příznakové](Priznakove-metody), [Bayesovy](Bayesova-klasifikace), [shlukovací](Shlukovani) a [strukturální](Strukturalni-rozpoznavani). Nepotřebuješ k tomu nic předem. ## Definice a to jediné, čím se liší **Rozpoznávání** je úloha, při které objekty zařazujeme do tříd podle jejich společných vlastností tak, že vzájemně si podobné objekty zařazujeme do stejné třídy. Z toho se dělí tři případy: | Úloha | Počet tříd | Známé předem | Příklad ||---|---|---|---|| **Klasifikace** | pevný, známý | ano | rozpoznávání znaků || **Rozpoznávání** (v užším smyslu) | není znám předem | ne | rozpoznávání plynulé řeči || **Shlukování** | není znám | ne, jen podobnost | segmentace zákazníků | **Klasifikace** zařazuje do předem známého, pevného počtu tříd. Máš deset číslic a víš, že jich je deset. Sem patří všechno [učení s učitelem](Topologie-a-uceni-siti). **Rozpoznávání** v užším smyslu znamená, že počet tříd není předem znám a třídy identifikujeme až během rozpoznávání. Typicky u plynulé řeči - dopředu nevíš, kolik slov padne a kde jedno končí a druhé začíná. **Shlukování (klastrování)** zařazuje objekty do tříd na základě jejich podobnosti, přičemž **příslušné třídy nejsou známy**. To je [učení bez učitele](Shlukovani) a je to jiná disciplína, i když výsledek vypadá podobně. **Tenhle rozdíl je nejdůležitější věc na stránce, protože rozhoduje o tom, co může být tvůj vstup.** Klasifikátor potřebuje trénovací data s označením. Shlukovací algoritmus žádné označení nedostane a nemůže tedy ani spočítat přesnost, dokud mu někdo nedodá referenci. ## Jak se objekt vůbec dostane dovnitř Objekty se reprezentují prostřednictvím **signálů**: - **jednorozměrných** - zvuky, hudba, řeč,- **dvourozměrných** - snímky scén,- **vícerozměrných** - obecné případy. Podle charakteru se mluví o objektech **vizuálních**, **akustických** a **taktilních**. Ze signálu se pak dělá jedna ze dvou věcí, a to je dělicí čára celého oboru: **Příznakový popis** - ze signálu se spočítá vektor čísel a pracuje se s ním. Tomu se věnují [příznakové metody](Priznakove-metody). **Strukturální popis** - objekt se popíše svými částmi a vztahy mezi nimi. Tomu se věnuje [strukturální rozpoznávání](Strukturalni-rozpoznavani). ## Rozhodovací pravidlo Klasifikátor přiřazuje objekt do třídy pomocí skalární funkce: ```ω = d(x) případně ω = d(x, q)``` kde `x` je popis objektu a `q` je **nastavení klasifikátoru** - tedy to, co se natrénuje. Ten druhý zápis je ten, který se v praxi používá. Rozděluje totiž klasifikátor na dvě části: **strukturu, kterou navrhneš ty** (funkce `d`), a **parametry, které se naučí z dat** (vektor `q`). U [perceptronu](Neuron-a-perceptron) jsou `q` váhy, u [k-NN](Priznakove-metody#k-nejbližších-sousedů-k-nn) je to celá trénovací množina, u [naivního Bayese](Bayesova-klasifikace) tabulka pravděpodobností. ## Diskriminační funkce Praktičtější způsob, jak klasifikátor postavit: **každé třídě `ωi` přiřaď funkci `gi(x)`** a klasifikátor pak vybere tu s nejvyšší hodnotou: ```ω* = arg max gi(x) i∈I``` Tenhle zápis se ti bude vracet pořád, tak si ho zapamatuj. Skoro každý klasifikátor v téhle wiki se dá napsat jako `arg max` z něčeho: | Metoda | Co je `gi(x)` ||---|---|| [Bayesův klasifikátor](Bayesova-klasifikace) | `p(x|ωi) · P(ωi)` || [Minimální vzdálenost](Priznakove-metody#klasifikátor-na-principu-minimální-vzdálenosti) | `−‖ei − x‖`, tedy záporná vzdálenost od etalonu || [Neuronová síť](MLP-a-backpropagation) | `i`-tý výstup po softmaxu || [k-NN](Priznakove-metody#k-nejbližších-sousedů-k-nn) | počet sousedů z třídy `i` mezi `k` nejbližšími | **Hranice mezi třídami je pak množina bodů, kde se dvě diskriminační funkce rovnají.** Odtud plyne, proč je [perceptron](Neuron-a-perceptron) lineární klasifikátor - jeho `g` je lineární funkce, takže `gi(x) = gj(x)` je rovnice nadroviny. ## Co si odnést **Klasifikace = známé třídy.** Potřebuje označená trénovací data. **Rozpoznávání = neznámý počet tříd, určuje se za běhu.** Typicky u spojitého signálu. **Shlukování = žádné třídy, jen podobnost.** Učení bez učitele. **Rozhodovací pravidlo `d(x, q)` odděluje strukturu od naučených parametrů.** **Skoro každý klasifikátor je `arg max` z diskriminační funkce.** Liší se jen tím, co do ní dosadíš. ## Kam dál - **[Příznakové metody](Priznakove-metody)** - objekt jako vektor čísel, LBP, k-NN, rozhodovací stromy- **[Bayesova klasifikace](Bayesova-klasifikace)** - pravděpodobnostní pohled a naivní Bayes- **[Shlukování](Shlukovani)** - k-means, hierarchické metody, DBSCAN- **[Strukturální rozpoznávání](Strukturalni-rozpoznavani)** - objekt jako primitiva a vztahy mezi nimi- **[Metriky a vyhodnocení](Metriky-a-vyhodnoceni)** - jak se pozná, že to funguje