Dimenzia Vapnik-Chervonenkis (VC) je mierou schopnosti súboru hypotéz prispôsobiť sa rôznym súborom údajov. Zaviedli ho Vladimir Vapnik a Alexey Chervonenkis v 70. rokoch minulého storočia a stal sa základným pojmom v teórii štatistického učenia. Dimenzia VC je mierou zložitosti modelu, ktorá nám môže pomôcť pochopiť, ako dobre sa zmestí do rôznych súborov údajov.
Dimenzia VC množiny hypotéz H je najväčší počet bodov, ktoré môže H rozbiť. Súbor hypotéz H rozbije množinu bodov S, ak pre každé možné označenie bodov v S existuje v H hypotéza, že správne klasifikuje body. Inými slovami, množina hypotéz rozbije množinu bodov, ak sa zmestí do akéhokoľvek možného označenia týchto bodov.
Hranice VC – dimenzia
Dimenzia VC poskytuje hornú aj dolnú hranicu počtu tréningových príkladov potrebných na dosiahnutie danej úrovne presnosti. Horná hranica počtu tréningových príkladov je logaritmická v dimenzii VC, zatiaľ čo dolná hranica je lineárna.
Aplikácie VC – Dimension
Dimenzia VC má širokú škálu aplikácií v strojové učenie a štatistiky. Používa sa napríklad na analýzu zložitosti neurónových sietí, podporných vektorových strojov a rozhodovacích stromov. Dimenzia VC sa môže použiť aj na navrhovanie nových algoritmov učenia, ktoré sú odolné voči šumu a dajú sa dobre zovšeobecniť na neviditeľné údaje.
Dimenzia VC môže byť rozšírená na zložitejšie vzdelávacie scenáre, ako je klasifikácia viacerých tried a regresia. Koncept dimenzie VC možno aplikovať aj na iné oblasti informatiky, ako je výpočtová geometria a teória grafov.
Implementácia kódu pre VC – dimenzia
Dimenzia VC je teoretický koncept, ktorý nemožno priamo vypočítať z údajov. Môžeme však odhadnúť dimenziu VC pre daný súbor hypotéz spočítaním počtu bodov, ktoré môže súbor rozbiť. V Pythone môžeme pomocou tohto prístupu implementovať funkciu, ktorá počíta VC dimenziu danej množiny hypotéz.
Funkcia berie množinu hypotéz ako svoj vstup a vypočítava dimenziu VC pomocou prístupu hrubej sily kontroly všetkých možných kombinácií bodov a označení. Používa modul itertools na generovanie všetkých možných kombinácií bodov a označení a potom kontroluje, či súbor hypotéz môže rozbiť každú kombináciu. Funkcia vráti odhadovanú dimenziu VC množiny hypotéz.
Ukážme si použitie tejto funkcie na niekoľkých príkladoch:
Príklad 1:
Predpokladajme, že máme množinu hypotéz, ktorá pozostáva zo všetkých lineárnych funkcií tvaru f(x) = ax + b, kde a a b sú reálne čísla. Túto sadu hypotéz môžeme definovať v Pythone takto:
Python
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))> |
linuxové príkazy
>
>
Výkon:
2>
V príklade 1 funkcia linear_function implementuje jednoduchú množinu hypotéz lineárnej funkcie, ktorá vráti 1, ak je y-ová súradnica vstupného bodu väčšia alebo rovná súradnici x, a v opačnom prípade 0. Funkcia vc_dimension sa potom použije na odhad dimenzie VC tejto sady hypotéz, ktorá je 2.
Príklad 2:
Predpokladajme, že máme množinu hypotéz, ktorá pozostáva zo všetkých kvadratických funkcií tvaru f(x) = ax2+ bx + c, kde a, b a c sú reálne čísla. Môžeme to definovať hypotéza nastaviť v Pythone takto:
Python
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ýkon:
parameter v shell skripte
3>
V príklade 2 funkcia quadratic_function implementuje komplexnejšiu množinu hypotéz kvadratickej funkcie, ktorá vráti 1, ak je y-ová súradnica vstupného bodu väčšia alebo rovná druhej mocnine x-ovej súradnice, a v opačnom prípade 0. Funkcia vc_dimension sa potom použije na odhad dimenzie VC tejto sady hypotéz, ktorá je 3.
Záver
Dimenzia VC je základným konceptom v teórii štatistického učenia, ktorý meria zložitosť súboru hypotéz. Poskytuje hornú aj dolnú hranicu počtu tréningových príkladov potrebných na dosiahnutie danej úrovne presnosti. V Pythone môžeme odhadnúť rozmer VC danej sady hypotéz pomocou prístupu hrubej sily, ktorý kontroluje všetky možné kombinácie bodov a označení. Dimenzia VC má širokú škálu aplikácií v oblasti strojového učenia a štatistiky a možno ju rozšíriť na zložitejšie scenáre učenia.