# 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
