¿Debo usar el truco del kernel siempre que sea posible para datos no lineales?

13

Recientemente aprendí sobre el uso del truco Kernel, que mapea datos en espacios dimensionales superiores en un intento de linealizar los datos en esas dimensiones. ¿Hay algún caso en el que deba evitar usar esta técnica? ¿Es solo una cuestión de encontrar la función correcta del núcleo?

Por supuesto, para los datos lineales esto no es útil, pero para los datos no lineales, esto siempre parece útil. Usar clasificadores lineales es mucho más fácil que no lineal en términos de tiempo de entrenamiento y escalabilidad.

JDong
fuente

Respuestas:

8

Por supuesto, para los datos lineales esto no es útil, pero para los datos no lineales, esto siempre parece útil. Usar clasificadores lineales es mucho más fácil que no lineal en términos de tiempo de entrenamiento y escalabilidad.

@BartoszKP ya explicó por qué es útil el truco del kernel. Sin embargo, para abordar completamente su pregunta, me gustaría señalar que la kernelización no es la única opción para manejar datos no linealmente separables.

Existen al menos tres buenas alternativas comunes para la delinearización del modelo:

  • Métodos basados ​​en redes neutrales, donde agrega una (o más) capas de unidades de procesamiento, capaces de transformar sus datos en el caso separable linealmente. En el caso más simple, es una capa basada en sigmoide, que agrega no linealidad al proceso. Una vez que se inicializan al azar, reciben actualizaciones durante la optimización basada en gradiente de la capa superior (que realmente resuelve el problema lineal).
  • En particular, las técnicas de aprendizaje profundo se pueden utilizar aquí para preparar datos para una clasificación lineal adicional. Es una idea muy similar a la anterior, pero aquí primero entrena sus capas de procesamiento para encontrar un buen punto de partida para un ajuste adicional basado en el entrenamiento de algún modelo lineal.
  • Proyecciones aleatorias: puede muestrear proyecciones (no lineales) de un espacio predefinido y entrenar un clasificador lineal encima de ellas. Esta idea se explota en gran medida en el llamado aprendizaje automático extremo , donde se utilizan solucionadores lineales muy eficientes para entrenar un clasificador simple en proyecciones aleatorias y lograr un rendimiento muy bueno (en problemas no lineales tanto en clasificación como en regresión, consulte por ejemplo el aprendizaje extremo máquinas ).

En resumen, la kernelización es una gran técnica de delinearización, y puede usarla cuando el problema no es lineal, pero esto no debería ser un "ciego" de aproximación. Este es solo uno de al menos algunos métodos interesantes, que pueden conducir a varios resultados, dependiendo del problema y los requisitos. En particular, ELM tiende a encontrar soluciones muy similares a las dadas por SVM kernelized, mientras que al mismo tiempo se pueden entrenar filas de magnitud más rápido (por lo que se escala mucho mejor que SVM kernelized).

lejlot
fuente
10

El precio que paga por el truco del kernel en general, por métodos lineales, está teniendo peores límites de generalización. Para un modelo lineal, su dimensión VC también es lineal en términos del número de dimensiones (por ejemplo, la dimensión VC para un Perceptron es d + 1).

Ahora, si va a realizar una transformación no lineal compleja en un espacio de alta dimensión, la dimensión VC de su conjunto de hipótesis es significativamente mayor, ya que ahora es lineal en términos del número de dimensiones en el nuevo espacio de alta dimensión. Y con ello, el límite de generalización aumenta.

Support Vector Machines explota el Kernel Trick de la manera más eficiente, haciendo dos cosas:

BartoszKP
fuente
1
"también es lineal en términos del número de pesos" en términos de dimensión espacial, no el número de pesos. Puede tener un clasificador lineal parametrizado con tantos pesos como desee, pero su dimensión VC sigue siendo d + 1 (donde d es la dimensionalidad del espacio). "la dimensión VC para los modelos SVM está relacionada con el número de vectores de soporte" ¿Cómo se asigna exactamente la dimensión VC al número de SV? Soy consciente del límite del margen duro, pero afaik en el caso del margen blando no existe tal relación. Incluso en los límites de complejidad de Radamacher, no encontrará el número de SV como variable.
lejlot
También "por lo que es irrelevante cuán" grande "es el espacio objetivo del núcleo, no se pierde nada en términos del límite de generalización" es, por lo que sé, completamente falso. Los espacios de alta dimensión conducirán a la pérdida de capacidades de generalización, incluso con modelos tan fuertemente regularizados como SVM.
lejlot
1
@lejlot Gracias, corrigió los dos primeros errores. Necesito algo de tiempo para relacionarme con sus dos últimos comentarios. Intentaré mejorar la respuesta y proporcionar algunas fuentes, después de volver a
verificar
1
Ahora es casi correcto, pero ¿cuál es la razón para suponer que ese tamaño del espacio del núcleo es irrelevante? Tome cualquier conjunto de datos, ejecute un SVM con el kernel RBF y C-> inf y se sobreajustará mal. No es tan simple. El número de dimensiones en el espacio de características es relevante , pero se puede controlar con C (como límite superior de los multiplicadores de lagrange). En particular, la dimensión VC para SVM con RBF es infinita, y la vinculación de generalización (Vapnik) es inútil (Radamacher podría funcionar, pero esta es una historia completamente diferente).
lejlot
1
@lejlot He dado otra referencia: proporcionan un límite para el caso de margen blando explícitamente, y no depende del número de dimensiones.
BartoszKP
6

Intentaré proporcionar una respuesta no técnica a su pregunta.

De hecho, se debe preferir el lineal y debe ser la primera opción por las razones que menciona, el tiempo de entrenamiento, la escalabilidad, además de la facilidad para interpretar el modelo final, la elección de trabajar en primal o dual, más tolerancia al sobreajuste, etc.

Si el modelo lineal no da como resultado un rendimiento satisfactorio, puede probar soluciones no lineales. Algunas compensaciones a considerar incluyen:

  • La elección del núcleo. Esto no es obvio, generalmente necesita probar diferentes opciones
  • Existe el peligro de sobreajustar el conjunto de entrenamiento. En realidad, es bastante fácil equiparlo si quieres. Para evitar el sobreajuste, necesita un marco de evaluación más sólido (debe medir la varianza / estabilidad del rendimiento en datos no vistos) y necesita datos suficientes para poder realizar la selección de modelo adecuada
  • trabaja en dual y, por lo tanto, no puede interpretar el modelo final, es decir, no puede afirmar que la característica X es más importante que la característica Y, etc.
  • el tiempo de entrenamiento aumenta con el volumen de datos (menos con la cantidad de características ya que está en el dual)
iliasfl
fuente
Esa es una idea interesante de "trabajar con doble" que conduce a la imposibilidad de reclamar las características importantes. ¿Tendría alguna referencia al material que explica más?
javadba