logo

Vapnik-Chervonenkis matmuo

Vapnik-Chervonenkis (VC) dimensija yra hipotezių rinkinio gebėjimo pritaikyti skirtingiems duomenų rinkiniams matas. Ją aštuntajame dešimtmetyje pristatė Vladimiras Vapnikas ir Aleksejus Červonenkis, ir ji tapo pagrindine statistinio mokymosi teorijos sąvoka. VC dimensija yra modelio sudėtingumo matas, kuris gali padėti suprasti, kaip gerai jis gali atitikti skirtingus duomenų rinkinius.

Hipotezių aibės H VC matmuo yra didžiausias taškų, kuriuos gali sugriauti H, skaičius. Hipotezių aibė H sugriauna taškų S aibę, jei kiekvienam galimam taškų žymėjimui S yra hipotezė, kad H. teisingai klasifikuoja taškus. Kitaip tariant, hipotezių rinkinys sugriauna taškų rinkinį, jei jis atitinka bet kokį galimą tų taškų ženklinimą.



java eilutės konvertavimas į sveikąjį skaičių

VC ribos – matmuo

VC matmuo suteikia viršutinę ir apatinę mokymo pavyzdžių, reikalingų tam tikram tikslumo lygiui, skaičių. Viršutinė mokymo pavyzdžių skaičiaus riba yra logaritminė VC dimensijoje, o apatinė riba yra tiesinė.

VC pritaikymas – dimensija

VC matmuo turi platų pritaikymo spektrą mašininis mokymasis ir statistika. Pavyzdžiui, jis naudojamas neuroninių tinklų, paramos vektorinių mašinų ir sprendimų medžių sudėtingumui analizuoti. VC dimensija taip pat gali būti naudojama kuriant naujus mokymosi algoritmus, kurie yra atsparūs triukšmui ir gali gerai apibendrinti nematomus duomenis.

VC dimensija gali būti išplėsta į sudėtingesnius mokymosi scenarijus, tokius kaip kelių klasių klasifikacija ir regresija. VC dimensijos sąvoka taip pat gali būti taikoma kitoms kompiuterių mokslo sritims, tokioms kaip skaičiavimo geometrija ir grafų teorija.



Kodo įgyvendinimas VC – matmuo

VC dimensija yra teorinė koncepcija, kurios negalima tiesiogiai apskaičiuoti iš duomenų. Tačiau galime įvertinti tam tikros hipotezės rinkinio VC dimensiją skaičiuodami taškų, kuriuos aibė gali sugriauti, skaičių. „Python“ programoje galime įdiegti funkciją, kuri apskaičiuoja tam tikros hipotezių rinkinio VC dimensiją, naudodami šį metodą.

Funkcija naudoja hipotezės rinkinį kaip įvestį ir apskaičiuoja VC dimensiją, naudodama brutalios jėgos metodą, tikrindama visus galimus taškų ir etikečių derinius. Jis naudoja itertools modulį, kad sukurtų visus galimus taškų ir etikečių derinius, o tada patikrina, ar hipotezių rinkinys gali sugriauti kiekvieną derinį. Funkcija grąžina apskaičiuotą hipotezių rinkinio VC dimensiją.

Paaiškinkime šios funkcijos naudojimą keliais pavyzdžiais:



1 pavyzdys:

Tarkime, kad turime hipotezių aibę, kurią sudaro visos f(x) = ax + b formos tiesinės funkcijos, kur a ir b yra realieji skaičiai. Šią hipotezę, pateiktą Python, galime apibrėžti taip:

Python

10 galia iš 6




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))>

„bankininko algoritmas“

>

>

Išvestis:

2>

1 pavyzdyje funkcija tiesinė_funkcija įgyvendina paprastą tiesinės funkcijos hipotezės rinkinį, kuris grąžina 1, jei įvesties taško y koordinatė yra didesnė arba lygi x koordinatei, o kitu atveju 0. Tada funkcija vc_dimension naudojama šios hipotezių rinkinio VC matmeniui įvertinti, kuris yra 2.

2 pavyzdys:

Tarkime, kad turime hipotezių aibę, kurią sudaro visos f(x) = ax formos kvadratinės funkcijos2+ bx + c, kur a, b ir c yra tikrieji skaičiai. Mes galime tai apibrėžti hipotezė nustatyti Python taip:

Python


java sinchronizuoti



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))>

jei kitaip jei kitaip jei java
>

>

Išvestis:

3>

2 pavyzdyje funkcija kvadratinė_funkcija įgyvendina sudėtingesnę kvadratinės funkcijos hipotezės rinkinį, kuris grąžina 1, jei įvesties taško y koordinatė yra didesnė arba lygi x koordinatės kvadratui, o kitu atveju 0. Tada funkcija vc_dimension naudojama šios hipotezių rinkinio VC matmeniui įvertinti, kuris yra 3.

Išvada

VC dimensija yra pagrindinė statistinės mokymosi teorijos sąvoka, matuojanti hipotezių rinkinio sudėtingumą. Jame pateikiamos ir viršutinės, ir apatinės treniruočių pavyzdžių, reikalingų tam tikram tikslumo lygiui, skaičiaus ribos. „Python“ programoje galime įvertinti tam tikros hipotezės rinkinio VC dimensiją naudodami brutalios jėgos metodą, kuris patikrina visus galimus taškų ir etikečių derinius. VC dimensija turi platų mašininio mokymosi ir statistikos taikomųjų programų spektrą ir gali būti išplėsta į sudėtingesnius mokymosi scenarijus.