logo

Dimensión Vapnik-Chervonenkis

La dimensión de Vapnik-Chervonenkis (VC) es una medida de la capacidad de un conjunto de hipótesis para ajustarse a diferentes conjuntos de datos. Fue introducido por Vladimir Vapnik y Alexey Chervonenkis en la década de 1970 y se ha convertido en un concepto fundamental en la teoría del aprendizaje estadístico. La dimensión VC es una medida de la complejidad de un modelo, que puede ayudarnos a comprender qué tan bien se ajusta a diferentes conjuntos de datos.

La dimensión VC de un conjunto de hipótesis H es el mayor número de puntos que H puede destruir. Un conjunto de hipótesis H destruye un conjunto de puntos S si, para cada etiquetado posible de los puntos en S, existe una hipótesis en H que Clasifica correctamente los puntos. En otras palabras, un conjunto de hipótesis destruye un conjunto de puntos si puede ajustarse a cualquier posible etiquetado de esos puntos.



Límites de VC – Dimensión

La dimensión VC proporciona límites superior e inferior en la cantidad de ejemplos de entrenamiento necesarios para lograr un nivel determinado de precisión. El límite superior del número de ejemplos de entrenamiento es logarítmico en la dimensión VC, mientras que el límite inferior es lineal.

Aplicaciones de VC – Dimensión

La dimensión VC tiene una amplia gama de aplicaciones en aprendizaje automático y estadísticas. Por ejemplo, se utiliza para analizar la complejidad de redes neuronales, máquinas de vectores de soporte y árboles de decisión. La dimensión VC también se puede utilizar para diseñar nuevos algoritmos de aprendizaje que sean resistentes al ruido y puedan generalizarse bien a datos invisibles.

La dimensión VC se puede extender a escenarios de aprendizaje más complejos, como la clasificación y regresión multiclase. El concepto de dimensión VC también se puede aplicar a otras áreas de la informática, como la geometría computacional y la teoría de grafos.



Implementación de código para VC – Dimensión

La dimensión VC es un concepto teórico que no se puede calcular directamente a partir de datos. Sin embargo, podemos estimar la dimensión VC para un conjunto de hipótesis dado contando el número de puntos que el conjunto puede destruir. En Python, podemos implementar una función que calcula la dimensión VC de un conjunto de hipótesis determinado utilizando este enfoque.

La función toma un conjunto de hipótesis como entrada y calcula la dimensión de VC utilizando el enfoque de fuerza bruta para verificar todas las combinaciones posibles de puntos y etiquetas. Utiliza el módulo itertools para generar todas las combinaciones posibles de puntos y etiquetas y luego verifica si el conjunto de hipótesis puede destruir cada combinación. La función devuelve la dimensión VC estimada del conjunto de hipótesis.

Ilustremos el uso de esta función con algunos ejemplos:



Ejemplo 1:

Supongamos que tenemos un conjunto de hipótesis que consta de todas las funciones lineales de la forma f(x) = ax + b, donde a y b son números reales. Podemos definir esta hipótesis establecida en Python de la siguiente manera:

Pitón




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

>

>

Producción:

2>

En el ejemplo 1, la función linear_function implementa un conjunto de hipótesis de función lineal simple que devuelve 1 si la coordenada y del punto de entrada es mayor o igual que la coordenada x, y 0 en caso contrario. Luego, la función vc_dimension se utiliza para estimar la dimensión VC de este conjunto de hipótesis, que es 2.

Ejemplo 2:

Supongamos que tenemos un conjunto de hipótesis que consta de todas las funciones cuadráticas de la forma f(x) = ax2+ bx + c, donde a, b y c son números reales. Podemos definir esto hipótesis configurado en Python de la siguiente manera:

Pitón




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

arp - un comando

>

>

Producción:

3>

En el ejemplo 2, la función quadratic_function implementa un conjunto de hipótesis de función cuadrática más complejo que devuelve 1 si la coordenada y del punto de entrada es mayor o igual que el cuadrado de la coordenada x, y 0 en caso contrario. Luego, la función vc_dimension se utiliza para estimar la dimensión VC de este conjunto de hipótesis, que es 3.

Conclusión

La dimensión VC es un concepto fundamental en la teoría del aprendizaje estadístico que mide la complejidad de un conjunto de hipótesis. Proporciona límites superior e inferior en la cantidad de ejemplos de entrenamiento necesarios para lograr un nivel determinado de precisión. En Python, podemos estimar la dimensión VC de un conjunto de hipótesis determinado utilizando un enfoque de fuerza bruta que verifica todas las combinaciones posibles de puntos y etiquetas. La dimensión VC tiene una amplia gama de aplicaciones en aprendizaje automático y estadística y puede extenderse a escenarios de aprendizaje más complejos.