Dimenze Vapnik-Chervonenkis (VC) je měřítkem schopnosti sady hypotéz přizpůsobit se různým sadám dat. Zavedli ji Vladimir Vapnik a Alexey Chervonenkis v 70. letech 20. století a stala se základním pojmem v teorii statistického učení. Dimenze VC je měřítkem složitosti modelu, což nám může pomoci pochopit, jak dobře se hodí pro různé sady dat.
Dimenze VC množiny hypotéz H je největší počet bodů, které může H rozbít. Množina hypotéz H rozbije množinu bodů S, pokud pro každé možné označení bodů v S existuje hypotéza v H, která správně klasifikuje body. Jinými slovy, sada hypotéz rozbije sadu bodů, pokud se vejde do jakéhokoli možného označení těchto bodů.
Hranice VC – Dimenze
Dimenze VC poskytuje horní i dolní hranici počtu tréninkových příkladů potřebných k dosažení dané úrovně přesnosti. Horní mez počtu trénovacích příkladů je logaritmická v dimenzi VC, zatímco dolní mez je lineární.
Aplikace VC – Dimenze
Dimenze VC má širokou škálu aplikací v strojové učení a statistiky. Používá se například k analýze složitosti neuronových sítí, podpůrných vektorových strojů a rozhodovacích stromů. Dimenze VC lze také použít k návrhu nových algoritmů učení, které jsou odolné vůči šumu a mohou dobře zobecnit na neviditelná data.
Dimenze VC lze rozšířit na složitější scénáře učení, jako je vícetřídní klasifikace a regrese. Koncept dimenze VC lze také aplikovat na jiné oblasti informatiky, jako je výpočetní geometrie a teorie grafů.
Implementace kódu pro VC – Dimenze
Dimenze VC je teoretický koncept, který nelze přímo vypočítat z dat. Dimenzi VC pro daný soubor hypotéz však můžeme odhadnout tak, že spočítáme počet bodů, které může soubor rozbít. V Pythonu můžeme pomocí tohoto přístupu implementovat funkci, která počítá VC dimenzi dané sady hypotéz.
pouzdro na přepínač java
Funkce bere jako svůj vstup sadu hypotéz a vypočítává dimenzi VC pomocí přístupu hrubé síly kontroly všech možných kombinací bodů a popisků. Využívá modul itertools ke generování všech možných kombinací bodů a popisků a poté kontroluje, zda sada hypotéz může každou kombinaci rozbít. Funkce vrátí odhadovanou dimenzi VC sady hypotéz.
Ukažme si použití této funkce na několika příkladech:
Příklad 1:
co je zásobník v Javě
Předpokládejme, že máme množinu hypotéz, která se skládá ze všech lineárních funkcí tvaru f(x) = ax + b, kde aab jsou reálná čísla. Tuto sadu hypotéz můžeme v Pythonu definovat takto:
Krajta
import> itertools> > > def> vc_dimension(hypothesis_set):> > '''> > Estimates the VC dimension of a hypothesis set using the brute-force approach.> > '''> > n> => 4> > while> True> :> > points> => [(i, j)> for> i> in> range> (n)> for> j> in> range> (> 2> )]> > shattered_sets> => 0> > for> combination> in> itertools.combinations(points, n):> > is_shattered> => True> > for> labeling> in> itertools.product([> 0> ,> 1> ], repeat> => n):> > hypotheses> => [hypothesis_set(point)> for> point> in> combination]> > if> set> (hypotheses) !> => set> (labeling):> > is_shattered> => False> > break> > if> is_shattered:> > shattered_sets> +> => 1> > else> :> > break> > if> not> is_shattered:> > break> > n> +> => 1> > return> n> -> 1> if> shattered_sets> => => 2> *> *> n> else> n> -> 2> > > # Example 1: linear function hypothesis set> def> linear_function(point):> > x, y> => point> > return> int> (y>> => x)> > > print> (vc_dimension(linear_function))> |
>
>
xor cpp
Výstup:
2>
V příkladu 1 implementuje funkce linear_function jednoduchou sadu hypotéz lineární funkce, která vrací 1, pokud je y-ová souřadnice vstupního bodu větší nebo rovna souřadnici x, a v opačném případě 0. Funkce vc_dimension se pak použije k odhadu dimenze VC této sady hypotéz, která je 2.
Příklad 2:
Předpokládejme, že máme množinu hypotéz, která se skládá ze všech kvadratických funkcí tvaru f(x) = ax2+ bx + c, kde a, b a c jsou reálná čísla. Můžeme to definovat hypotéza nastavit v Pythonu takto:
algoritmus pro rsa
Krajta
import> itertools> > > def> vc_dimension(hypothesis_set):> > '''> > Estimates the VC dimension of a hypothesis set using the brute-force approach.> > '''> > n> => 5> > while> True> :> > points> => [(i, j)> for> i> in> range> (n)> for> j> in> range> (> 2> )]> > shattered_sets> => 0> > for> combination> in> itertools.combinations(points, n):> > is_shattered> => True> > for> labeling> in> itertools.product([> 0> ,> 1> ], repeat> => n):> > hypotheses> => [hypothesis_set(point)> for> point> in> combination]> > if> set> (hypotheses) !> => set> (labeling):> > is_shattered> => False> > break> > if> is_shattered:> > shattered_sets> +> => 1> > else> :> > break> > if> not> is_shattered:> > break> > n> +> => 1> > return> n> -> 1> if> shattered_sets> => => 2> *> *> n> else> n> -> 2> > > # Example 2: quadratic function hypothesis set> def> quadratic_function(point):> > x, y> => point> > return> int> (y>> => x> *> *> 2> )> > > print> (vc_dimension(quadratic_function))> |
>
>
Výstup:
3>
V příkladu 2 funkce kvadratická_funkce implementuje složitější sadu hypotéz kvadratické funkce, která vrací 1, pokud je y-ová souřadnice vstupního bodu větší nebo rovna druhé mocnině x-ové souřadnice, a 0 v opačném případě. Funkce vc_dimension se pak použije k odhadu dimenze VC této sady hypotéz, která je 3.
arraylist v java sort
Závěr
Dimenze VC je základní koncept v teorii statistického učení, který měří složitost sady hypotéz. Poskytuje jak horní, tak dolní hranici počtu tréninkových příkladů potřebných k dosažení dané úrovně přesnosti. V Pythonu můžeme odhadnout rozměr VC dané sady hypotéz pomocí přístupu hrubou silou, který kontroluje všechny možné kombinace bodů a popisků. Dimenze VC má širokou škálu aplikací ve strojovém učení a statistice a lze ji rozšířit na složitější scénáře učení.