Lo que no te contaron sobre la interpretabilidad de los Support Vector Machine
- fjroar
- 26 jun 2021
- 4 Min. de lectura

Uno de los modelos que más me fascinan, y no por su potencia predictiva, son los conocidos en español como Máquinas de Vectores Soportes. Lo me fascina de estos modelos son las ideas geométricas que subyacen en su entrenamiento y en el algoritmo que lo soportan, pero no voy a escribir sobre esto en esta entrada, ya que me quiero referir más a los outputs, es decir, qué handicaps ofrece la interpretación de un modelo de este tipo cuando se desea aplicar en problemas de datos.
Antes de nada hay que comentar que los SVM estuvieron muy de moda en kaggle hace más de un lustro porque ofrecían de un modo rápido predicciones muy potentes, de hecho, su origen se remonta a los años 90, en los que fueron usado por Vapnik para reconocimiento de escritura manual, ofreciendo un gran ajuste y ahorro de recursos frente a las Redes Neuronales que en aquella época estaban un poco de capa caída.
Cortes, C.; Vapnik, V. Support-vector networks Machine Learning, 20(3), 273-297

Mi primer acercamiento a estos modelos venían del "antiguo mundo de la minería de datos", donde ya por el año 2008, podían utilizarse en herramientas de minería de datos como SAS Enterprise Miner. En aquella época se abogaba por el uso de estos modelos en Riesgo de Crédito en aras de su potencia como alternativa los clásicos Credit Scoring, pero no llegó a prosperar la idea en el mundo bancario, donde los reguladores, en materia de riesgo, van con mucha prudencia a la hora de elegir modelos para temas donde se juega con enormes cantidades de dinero y no les falta razón, porque sin duda ellos si saben de las consecuencias de aplicar un mal modelo cuando se conceden préstamos, o que nadie pueda dar una explicación sólida cuando ocurran sucesos extraños derivados de los modelos que se aplican.
Bajo mi punto de vista, este tipo de modelos, en su versión más sencilla, ofrecen una falsa visión de interpretabilidad, que claro, cuando hay 2 variables como se muestra en la figura anterior, al final lo que se genera es, en los SVM de tipo lineal, una inecuación que separa las regiones del tipo a1 · x1 + a2 · x2 > 0, de modo que se puede saber qué, aparte de generarse una ecuación de ligadura entre todas las variables explicativas, el signo de los coeficientes a1 y a2 indica de si la variable favorece hacia una región u otra. Incluso en el caso de tener un número n de variables y crear fronteras del tipo: a1 · x1 + a2 · x2 + ... + an · xn> 0; se llegan a interpretaciones más o menos entendibles donde se tiene información no sólo del signo de cada una de las variables, sino incluso de grupos de variables entre sí, eso sí, sin darnos cuenta, hemos casi perdido el tema de la importancia de la variable aunque con un "poco de maña", se puede recuperar el concepto.
Pues bien, entonces ¿Qué problema ofrecen estos modelos? Estos modelos adolecen de lo que se conoce como Curse of Dimensionality de lo que se tratará en otro momento, pero ofrecen en mi opinión otro tipo de debilidades y es que en su versión lineal, no se va a poder hacer mucho para los casos generales de poblaciones no separables, es decir, en general los datos no van a estar agrupados en 2 subpoblaciones como en la figura anterior y se tendrá un lío enorme difícil de graficar. Incluso en situaciones de 2 variables, puede ocurrir que nos encontremos ante la necesidad de separar una población simulada como la siguiente:

En este caso, la versión lineal no dará ningún resultado satisfactorio, sin embargo es aquí donde los SVM a través del concepto de kernel y de lo que en geometría se conoce como "embedimiento", son capaces de generar fronteras capaces de curvarse cuando se proyectan en el plano y lograr así la separación, pero claro, el problema ahora está en ¿A qué precio se logra eso? El precio que hay que pagar es que no se va a obtener una ligadura claramente interpretable como en el caso anterior. Es decir, en el caso más general, donde alguien use un kernel genérico ante un número relativamente alto de variables 5 o más, prácticamente, no va a tener control sobre la frontera que crean los SVM y cómo dicha frontera podrá ser finalmente representada en el espacio original de 5 o más variables.
Ante una población como la de la anterior figura, en R se podría resolver del siguiente modo, mediante una búsqueda de un kernel radial (no lineal):
tune.out = tune(svm,factor(y)~.,data=xtrain,kernel="radial",sacale=FALSE,type='C-classification', ranges=list(cost=c(0.001, 0.01, 0.1, 1)))
Que lugar a la siguiente frontera, que gracias a que se está en dimensión 2, hasta podría dibujarse:

Sin embargo, se observa que ahora no hay 2 sino 3 regiones, con lo que se necesitan 2 inecuaciones posiblemente de tipo no lineal (lo cual complica aún más el tema), la interpretación además se complica incluso si se quiere plasmar algebraicamente la representación anterior. Se puede también buscar entre los vectores soporte que generan la frontera a ver si ofrecen algo de luz, pero en casos generales, no tendremos más que a lo sumo (y con suerte dependiendo de los datos) alguna que otra representación bonita de difícil interpretación.
En este sentido los SVM apelan a la continua lucha simplicidad vs interpretabilidad y seguramente en kaggle, los SVM de carácter no lineal habrían ganado concursos frente a regresiones logísticas sencillas, pero el problema está en ¿Quién entiende el modelo? ¿Hasta dónde hay que sacrificar la interpretabilidad en aras a la predictividad? Son preguntas sobre las que hay que tomar decisiones conjuntas entre los DS que aplican conocimientos y aterrizan conceptos complejos y la gente de negocio que son los que tienen la pasta y toman la decisión de aplicarlos o no.
Comments