Wymiar Vapnika-Chervonenkisa (VC) jest miarą zdolności postawionej hipotezy do dopasowania do różnych zbiorów danych. Została wprowadzona przez Władimira Vapnika i Aleksieja Chervonenkisa w latach 70. XX wieku i stała się podstawowym pojęciem w statystycznej teorii uczenia się. Wymiar VC jest miarą złożoności modelu, która może pomóc nam zrozumieć, jak dobrze może on pasować do różnych zbiorów danych.
Wymiar VC zbioru hipotez H to największa liczba punktów, które mogą zostać rozbite przez H. Zbiór hipotez H rozbija zbiór punktów S, jeśli dla każdego możliwego etykietowania punktów w S istnieje hipoteza w H, która poprawnie klasyfikuje punkty. Innymi słowy, zestaw hipotez rozbija zbiór punktów, jeśli pasuje do dowolnego możliwego oznakowania tych punktów.
dołączanie ciągu w Javie
Granice VC – wymiar
Wymiar VC zapewnia zarówno górną, jak i dolną granicę liczby przykładów szkoleniowych wymaganych do osiągnięcia danego poziomu dokładności. Górna granica liczby przykładów szkoleniowych jest logarytmiczna w wymiarze VC, podczas gdy dolna granica jest liniowa.
Zastosowania VC – wymiar
Wymiar VC ma szeroki zakres zastosowań w nauczanie maszynowe i statystyki. Na przykład służy do analizy złożoności sieci neuronowych, maszyn wektorów nośnych i drzew decyzyjnych. Wymiar VC można również wykorzystać do projektowania nowych algorytmów uczenia się, które są odporne na szumy i potrafią dobrze generalizować na niewidoczne dane.
Wymiar VC można rozszerzyć na bardziej złożone scenariusze uczenia się, takie jak klasyfikacja wieloklasowa i regresja. Koncepcję wymiaru VC można również zastosować w innych obszarach informatyki, takich jak geometria obliczeniowa i teoria grafów.
Implementacja kodu dla VC – Dimension
Wymiar VC to koncepcja teoretyczna, której nie można bezpośrednio obliczyć na podstawie danych. Możemy jednak oszacować wymiar VC dla danego zestawu hipotez, zliczając liczbę punktów, które zestaw może rozbić. W Pythonie możemy zaimplementować funkcję, która oblicza wymiar VC danego zestawu hipotez, stosując to podejście.
Funkcja przyjmuje postawioną hipotezę jako dane wejściowe i oblicza wymiar VC, stosując metodę brutalnej siły polegającą na sprawdzaniu wszystkich możliwych kombinacji punktów i etykiet. Wykorzystuje moduł itertools do generowania wszystkich możliwych kombinacji punktów i etykiet, a następnie sprawdza, czy zestaw hipotez może zniszczyć każdą kombinację. Funkcja zwraca szacunkowy wymiar VC zestawu hipotez.
Zilustrujmy użycie tej funkcji na kilku przykładach:
Przykład 1:
Załóżmy, że mamy zestaw hipotez składający się ze wszystkich funkcji liniowych w postaci f(x) = ax + b, gdzie a i b są liczbami rzeczywistymi. Możemy zdefiniować tę hipotezę ustawioną w Pythonie w następujący sposób:
Pyton
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))> |
>
>
Wyjście:
2>
W przykładzie 1 funkcja linear_function implementuje prosty zestaw hipotez funkcji liniowej, który zwraca 1, jeśli współrzędna y punktu wejściowego jest większa lub równa współrzędnej x, i 0 w przeciwnym razie. Następnie używa się funkcji vc_dimension do oszacowania wymiaru VC tego zbioru hipotez, który wynosi 2.
Przykład 2:
Załóżmy, że mamy zestaw hipotez składający się ze wszystkich funkcji kwadratowych w postaci f(x) = ax2+ bx + c, gdzie a, b i c są liczbami rzeczywistymi. Możemy to zdefiniować hipoteza ustawić w Pythonie w następujący sposób:
Pyton
klucz ins
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))> |
>
>
Wyjście:
3>
W przykładzie 2 funkcja quadratic_function implementuje bardziej złożony zestaw hipotez funkcji kwadratowej, który zwraca 1, jeśli współrzędna y punktu wejściowego jest większa lub równa kwadratowi współrzędnej x, i 0 w przeciwnym razie. Następnie używa się funkcji vc_dimension do oszacowania wymiaru VC tego zbioru hipotez, który wynosi 3.
Wniosek
Wymiar VC to podstawowe pojęcie statystycznej teorii uczenia się, które mierzy złożoność zestawu hipotez. Zapewnia zarówno górną, jak i dolną granicę liczby przykładów szkoleniowych wymaganych do osiągnięcia danego poziomu dokładności. W Pythonie możemy oszacować wymiar VC danego zestawu hipotez, stosując podejście brute-force, które sprawdza wszystkie możliwe kombinacje punktów i etykiet. Wymiar VC ma szeroki zakres zastosowań w uczeniu maszynowym i statystyce i można go rozszerzyć na bardziej złożone scenariusze uczenia się.