logo

Vapnik-Chervonenkis-dimensie

De Vapnik-Chervonenkis (VC)-dimensie is een maatstaf voor het vermogen van een hypotheseset om in verschillende datasets te passen. Het werd in de jaren zeventig geïntroduceerd door Vladimir Vapnik en Alexey Chervonenkis en is een fundamenteel concept geworden in de statistische leertheorie. De VC-dimensie is een maatstaf voor de complexiteit van een model, waardoor we kunnen begrijpen hoe goed het in verschillende datasets past.

De VC-dimensie van een hypotheseverzameling H is het grootste aantal punten dat door H kan worden vernietigd. Een hypotheseverzameling H vernietigt een verzameling punten S als er, voor elke mogelijke labeling van de punten in S, een hypothese in H bestaat die classificeert de punten correct. Met andere woorden, een hypotheseset vernietigt een reeks punten als deze aan een mogelijke etikettering van die punten kan voldoen.



Grenzen van VC – Dimensie

De VC-dimensie biedt zowel boven- als ondergrenzen voor het aantal trainingsvoorbeelden dat nodig is om een ​​bepaald nauwkeurigheidsniveau te bereiken. De bovengrens voor het aantal trainingsvoorbeelden is logaritmisch in de VC-dimensie, terwijl de ondergrens lineair is.

Toepassingen van VC – Afmeting

De VC-dimensie heeft een breed scala aan toepassingen in machinaal leren en statistieken. Het wordt bijvoorbeeld gebruikt om de complexiteit van neurale netwerken te analyseren, vectormachines en beslissingsbomen te ondersteunen. De VC-dimensie kan ook worden gebruikt om nieuwe leeralgoritmen te ontwerpen die robuust zijn tegen ruis en goed kunnen generaliseren naar onzichtbare gegevens.

hoe je een script uitvoert in Linux

De VC-dimensie kan worden uitgebreid naar complexere leerscenario's, zoals classificatie en regressie met meerdere klassen. Het concept van de VC-dimensie kan ook worden toegepast op andere gebieden van de informatica, zoals computationele meetkunde en grafentheorie.



Code-implementatie voor VC – Dimension

De VC-dimensie is een theoretisch concept dat niet rechtstreeks uit gegevens kan worden berekend. We kunnen echter de VC-dimensie voor een bepaalde hypotheseset schatten door het aantal punten te tellen dat door de set kan worden vernietigd. In Python kunnen we met deze aanpak een functie implementeren die de VC-dimensie van een bepaalde hypotheseset berekent.

De functie neemt een hypotheseset als invoer en berekent de VC-dimensie met behulp van de brute-force-aanpak waarbij alle mogelijke combinaties van punten en labels worden gecontroleerd. Het gebruikt de itertools-module om alle mogelijke combinaties van punten en labels te genereren en controleert vervolgens of de hypotheseset elke combinatie kan vernietigen. De functie retourneert de geschatte VC-dimensie van de hypotheseset.

Laten we het gebruik van deze functie illustreren met enkele voorbeelden:



Voorbeeld 1:

Stel dat we een hypotheseset hebben die bestaat uit alle lineaire functies van de vorm f(x) = ax + b, waarbij a en b reële getallen zijn. We kunnen deze hypothese in Python als volgt definiëren:

hoe je een array in Java maakt

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

>

datum opmaken naar string

>

Uitgang:

2>

In voorbeeld 1 implementeert de functie lineaire functie een eenvoudige hypotheseset voor lineaire functies die 1 retourneert als de y-coördinaat van het invoerpunt groter is dan of gelijk is aan de x-coördinaat, en anders 0. De functie vc_dimension wordt vervolgens gebruikt om de VC-dimensie van deze hypotheseset te schatten, namelijk 2.

Voorbeeld 2:

Stel dat we een hypotheseset hebben die bestaat uit alle kwadratische functies van de vorm f(x) = ax2+ bx + c, waarbij a, b en c reële getallen zijn. Wij kunnen dit definiëren hypothese in Python als volgt ingesteld:

Python




converteer tekenreeks naar json java
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))>

javascript

>

>

Uitgang:

3>

In voorbeeld 2 implementeert de functie kwadratische functie een complexere hypotheseset voor kwadratische functies die 1 retourneert als de y-coördinaat van het invoerpunt groter is dan of gelijk is aan het kwadraat van de x-coördinaat, en anders 0. De functie vc_dimension wordt vervolgens gebruikt om de VC-dimensie van deze hypotheseset te schatten, namelijk 3.

Conclusie

De VC-dimensie is een fundamenteel concept in de statistische leertheorie dat de complexiteit van een reeks hypothesen meet. Het biedt zowel boven- als ondergrenzen voor het aantal trainingsvoorbeelden dat nodig is om een ​​bepaald nauwkeurigheidsniveau te bereiken. In Python kunnen we de VC-dimensie van een bepaalde hypotheseset schatten met behulp van een brute-force-aanpak die alle mogelijke combinaties van punten en labels controleert. De VC-dimensie heeft een breed scala aan toepassingen in machine learning en statistiek en kan worden uitgebreid naar complexere leerscenario's.