Día 15 del “Calendario de Adviento” de aprendizaje automático: SVM en Excel

somos.

Este es el modelo que me motivó, desde el principio, a utilizar Excel para comprender mejor el Machine Learning.

Y hoy verás una explicación de SVM diferente a la que sueles ver, que es la que tiene:

separadores de margen, distancias a un hiperplano, construcciones geométricas primero.

En lugar de ello, construiremos el modelo paso a paso, partiendo de cosas que ya sabemos.

Entonces, tal vez este también sea el día en que finalmente digas "oh, ahora lo entiendo mejor".

Construyendo un nuevo modelo sobre lo que ya sabemos

Uno de mis principales principios de aprendizaje es simple:
Siempre partimos de lo que ya sabemos.

Antes de SVM, ya estudiamos:

regresión logística, penalización y regularización.

Usaremos estos modelos y conceptos hoy.

La idea no es introducir un nuevo modelo, sino transformar uno existente.

Conjuntos de datos de entrenamiento y convención de etiquetas

Usaremos un conjunto de datos de una característica para explicar el SVM.
Sí, lo sé, esta es probablemente la primera vez que ves a alguien explicar SVM usando solo una característica.

¿Por qué no?

De hecho, es necesario por varias razones.

Para otros modelos, como la regresión lineal o la regresión logística, normalmente comenzamos con una sola característica. Deberíamos hacer lo mismo con SVM, para que podamos comparar los modelos correctamente.

Si construyes un modelo con muchas características y crees que entiendes cómo funciona, pero no puedes explicarlo con una sola característica, entonces todavía no lo entiendes realmente.

El uso de una sola característica hace que el modelo:

más sencillo de implementar, más fácil de visualizar y mucho más fácil de depurar.

Entonces, usamos dos conjuntos de datos que generé para ilustrar las dos situaciones posibles que puede enfrentar un clasificador lineal:

un conjunto de datos es completamente separable y el otro no es completamente separable

Quizás ya sepas por qué usamos estos dos conjuntos de datos, mientras que solo usamos uno, ¿verdad?

También usamos la convención de etiquetas -1 y 1 en lugar de 0 y 1.

¿Por qué? Veremos más adelante, que en realidad es una historia interesante, sobre cómo se ven los modelos en las perspectivas de GLM y Machine Learning.

SVM en Excel: todas las imágenes por autor

En la regresión logística, antes de aplicar el sigmoide, calculamos un logit. Y podemos llamarlo f, esta es una puntuación lineal.

Esta cantidad es una puntuación lineal que puede tomar cualquier valor real, desde −∞ hasta +∞.

los valores positivos corresponden a una clase, los valores negativos corresponden a la otra, cero es el límite de decisión.

El uso de las etiquetas -1 y 1 coincide naturalmente con esta interpretación.
Destaca el signo del logit, sin pasar por probabilidades.

Por tanto, estamos trabajando con un modelo lineal puro, no dentro del marco GLM.

No hay sigmoide, ni probabilidad, sólo una puntuación de decisión lineal.

Una forma compacta de expresar esta idea es mirar la cantidad:

y(ax + b) = yf(x)

Si este valor es positivo, el punto está clasificado correctamente. Si es grande, la clasificación es segura. Si es negativo, el punto está mal clasificado.

En este punto, todavía no estamos hablando de SVM.
Sólo estamos haciendo explícito lo que significa una buena clasificación en un entorno lineal.

De la pérdida logarítmica a una nueva función de pérdida

Con esta convención, podemos escribir la pérdida logarítmica para la regresión logística directamente en función de la cantidad:

yf(x) = y (ax+b)

Podemos trazar esta pérdida como una función de yf(x).
Ahora, introduzcamos una nueva función de pérdida llamada pérdida de bisagra.

Cuando trazamos las dos pérdidas en el mismo gráfico, podemos ver que tienen una forma bastante similar.

¿Recuerdas Gini versus entropía en los clasificadores de árboles de decisión?
La comparación es muy similar aquí.

En ambos casos, la idea es penalizar:

puntos que están mal clasificados yf(x)<0, puntos que están demasiado cerca del límite de decisión.

La diferencia está en cómo se aplica esta sanción.

El log-loss penaliza los errores de forma suave y progresiva.
Incluso los puntos bien clasificados se ven ligeramente penalizados. La pérdida de la bisagra es más directa y abrupta.
Una vez que un punto se clasifica correctamente con un margen suficiente, ya no se penaliza en absoluto.

Entonces el objetivo no es cambiar lo que consideramos una clasificación buena o mala,
sino simplificar la forma en que lo penalizamos.

Naturalmente surge una pregunta.

¿Podríamos utilizar también una pérdida al cuadrado?

Después de todo, la regresión lineal también se puede utilizar como clasificador.

Pero cuando hacemos esto, inmediatamente vemos el problema:
La derrota al cuadrado sigue penalizando puntos que ya están muy bien clasificados.

En lugar de centrarse en el límite de decisión, el modelo intenta ajustarse a objetivos numéricos exactos.

Esta es la razón por la que la regresión lineal suele ser un clasificador deficiente y por la que la elección de la función de pérdida es tan importante.

Descripción del nuevo modelo.

Supongamos ahora que el modelo ya está entrenado y observemos directamente los resultados.

Para ambos modelos, calculamos exactamente las mismas cantidades:

la puntuación lineal (y se llama logit para regresión logística), la probabilidad (podemos aplicar la función sigmoidea en ambos casos) y el valor de pérdida.

Esto permite una comparación directa, punto por punto, entre los dos enfoques.

Aunque las funciones de pérdida son diferentes, las puntuaciones lineales y las clasificaciones resultantes son muy similares en este conjunto de datos.

Para el conjunto de datos completamente separable, el resultado es inmediato: todos los puntos están clasificados correctamente y se encuentran lo suficientemente lejos del límite de decisión. Como consecuencia, la pérdida de bisagra es igual a cero para cada observación.

Esto lleva a una conclusión importante.

Cuando los datos son perfectamente separables, no existe una solución única. De hecho, existen infinitas funciones de decisión lineal que logran exactamente el mismo resultado. Podemos desplazar la línea, rotarla ligeramente o cambiar la escala de los coeficientes, y la clasificación seguirá siendo perfecta, con cero pérdidas en todas partes.

Entonces, ¿qué hacemos a continuación?

Introducimos la regularización.

Al igual que en la regresión de crestas, agregamos una penalización al tamaño de los coeficientes. Este término adicional no mejora la precisión de la clasificación, pero nos permite seleccionar una solución entre todas las posibles.

Entonces, en nuestro conjunto de datos, obtenemos el que tiene la pendiente a más pequeña.

Y felicitaciones, acabamos de crear el modelo SVM.

Ahora podemos simplemente escribir la función de costos de los dos modelos: Regresión logística y SVM.

¿Recuerdas que la Regresión Logística se puede regularizar y todavía se llama así, verdad?

Ahora bien, ¿por qué el modelo incluye el término “Vectores de Soporte”?

Si observa el conjunto de datos, puede ver que sólo unos pocos puntos, por ejemplo los que tienen valores 6 y 10, son suficientes para determinar el límite de decisión. Estos puntos se llaman vectores de soporte.

En esta etapa, con la perspectiva que estamos usando, no podemos identificarlos directamente.

Veremos más adelante que otro punto de vista hace que aparezcan de forma natural.

Y podemos hacer el mismo ejercicio con otro conjunto de datos, con un conjunto de datos no separable, pero el principio es el mismo. Nada cambió.

Pero ahora podemos ver que para ciertos puntos, la pérdida de bisagra no es cero. En nuestro caso a continuación, podemos ver visualmente que hay cuatro puntos que necesitamos como Vectores de Soporte.

Entrenamiento de modelos SVM con descenso de gradiente

Ahora entrenamos el modelo SVM explícitamente, utilizando el descenso de gradiente.
Aquí no se introduce nada nuevo. Reutilizamos la misma lógica de optimización que ya aplicamos a la regresión lineal y logística.

Nueva convención: Lambda (λ) o C

En muchos modelos que estudiamos anteriormente, como el de cresta o el de regresión logística, la función objetivo se escribe como:

pérdida de ajuste de datos +λ ∥w∥

Aquí, el parámetro de regularización λ controla la penalización del tamaño de los coeficientes.

Para las SVM, la convención habitual es ligeramente diferente. Preferimos usar C delante del término de ajuste de datos.

Ambas formulaciones son equivalentes.
Sólo se diferencian por un cambio de escala de la función objetivo.

Mantenemos el parámetro C porque es la notación estándar utilizada en las SVM. Y veremos por qué tenemos esta convención más adelante.

gradiente (subgradiente)

Trabajamos con una función de decisión lineal y podemos definir el margen para cada punto como: mi = yi (axi + b)

Sólo observaciones tales que mi<1 contribuyen a la pérdida de bisagra.

Los subgradientes del objetivo son los siguientes, y podemos implementarlos en Excel, usando máscaras lógicas y SUMPRODUCT.

Actualización de parámetros

Con una tasa de aprendizaje o tamaño de paso η, las actualizaciones del descenso del gradiente son las siguientes y podemos hacer la fórmula habitual:

Repetimos estas actualizaciones hasta la convergencia.

Y, por cierto, este procedimiento de entrenamiento también nos brinda algo muy lindo que visualizar. En cada iteración, a medida que se actualizan los coeficientes, el tamaño del margen cambia.

Así podremos visualizar, paso a paso, cómo evoluciona el margen durante el proceso de aprendizaje.

Optimización versus formulación geométrica de SVM

La siguiente figura muestra la misma función objetivo del modelo SVM escrita en dos lenguajes diferentes.

A la izquierda, el modelo se expresa como un problema de optimización.
Minimizamos una combinación de dos cosas:

un término que mantiene el modelo simple, penalizando coeficientes grandes, y un término que penaliza errores de clasificación o violaciones de márgenes.

Esta es la vista que hemos estado usando hasta ahora. Es natural cuando pensamos en términos de funciones de pérdida, regularización y descenso de gradiente. Es la forma más conveniente de implementación y optimización.

A la derecha, el mismo modelo se expresa de forma geométrica.

En lugar de hablar de pérdidas, hablamos de:

márgenes, restricciones y distancias al límite de separación.

Cuando los datos son perfectamente separables, el modelo busca la línea separadora con el mayor margen posible, sin permitir ninguna violación. Este es el caso del margen duro.

Cuando la separación perfecta es imposible, se permiten las violaciones, pero se sancionan. Esto lleva al caso del margen blando.

Lo que es importante entender es que estos dos puntos de vista son estrictamente equivalentes.

La formulación de optimización impone automáticamente las restricciones geométricas:

penalizar coeficientes grandes corresponde a maximizar el margen, penalizar las violaciones de las bisagras corresponde a permitir, pero controlar, las violaciones del margen.

Así que no se trata de dos modelos diferentes, ni de dos ideas diferentes.
Es el mismo SVM, visto desde dos perspectivas complementarias.

Una vez que esta equivalencia queda clara, el SVM se vuelve mucho menos misterioso: es simplemente un modelo lineal con una forma particular de medir errores y controlar la complejidad, lo que naturalmente conduce a la interpretación de margen máximo que todos conocen.

Clasificador lineal unificado

Desde el punto de vista de la optimización, ahora podemos dar un paso atrás y mirar el panorama más amplio.

Lo que hemos construido no es sólo "el SVM", sino un marco de clasificación lineal general.

Un clasificador lineal se define mediante tres opciones independientes:

una función de decisión lineal, una función de pérdida, un término de regularización.

Una vez que esto queda claro, muchos modelos aparecen como combinaciones simples de estos elementos.

En la práctica, esto es exactamente lo que podemos hacer con SGDClassifier en scikit-learn.

Desde el mismo punto de vista podemos:

combine la pérdida de bisagra con la regularización L1, reemplace la pérdida de bisagra con pérdida de bisagra al cuadrado, use pérdida logarítmica, pérdida de bisagra u otras pérdidas basadas en márgenes, elija penalizaciones L2 o L1 según el comportamiento deseado.

Cada elección cambia cómo se penalizan los errores o cómo se controlan los coeficientes, pero el modelo subyacente sigue siendo el mismo: una función de decisión lineal entrenada mediante optimización.

Formulación primaria versus dual

Quizás ya hayas oído hablar de la forma dual de SVM.

Hasta ahora hemos trabajado enteramente en la forma primaria:

Optimizamos los coeficientes del modelo directamente, utilizando funciones de pérdida y regularización.

La forma dual es otra forma de escribir el mismo problema de optimización.

En lugar de asignar pesos a las características, la forma dual asigna un coeficiente, generalmente llamado alfa, a cada punto de datos.

No derivaremos ni implementaremos la forma dual en Excel, pero aún podemos observar su resultado.

Usando scikit-learn, podemos calcular los valores alfa y verificar que:

las formas primaria y dual conducen al mismo modelo, al mismo límite de decisión, a las mismas predicciones.

Lo que hace que la forma dual sea particularmente interesante para SVM es que:

la mayoría de los valores alfa son exactamente cero, sólo unos pocos puntos de datos tienen un alfa distinto de cero.

Estos puntos son los vectores de soporte.

Este comportamiento es específico de las pérdidas basadas en márgenes como la pérdida bisagra.

Finalmente, la forma dual también explica por qué las SVM pueden usar el truco del kernel.

Al trabajar con similitudes entre puntos de datos, podemos crear clasificadores no lineales sin cambiar el marco de optimización.

Esto lo veremos mañana.

Conclusión

En este artículo, no abordamos SVM como un objeto geométrico con fórmulas complicadas. En cambio, lo construimos paso a paso, a partir de modelos que ya conocemos.

Al cambiar solo la función de pérdida y luego agregar la regularización, llegamos naturalmente a SVM. El modelo no cambió. Sólo lo hizo la forma en que penalizamos los errores.

Visto de esta manera, SVM no es una nueva familia de modelos. Es una extensión natural de la regresión lineal y logística, vista a través de una pérdida diferente.

También demostramos que:

la vista de optimización y la vista geométrica son equivalentes, la interpretación del margen máximo proviene directamente de la regularización y la noción de vectores de soporte surge naturalmente de la perspectiva dual.

Una vez que estos vínculos son claros, SVM se vuelve mucho más fácil de entender y de ubicar entre otros clasificadores lineales.

En el siguiente paso, usaremos esta nueva perspectiva para ir más allá y ver cómo los núcleos extienden esta idea más allá de los modelos lineales.