¿Se puede utilizar la máquina de vectores de soporte en datos grandes?

13

Con el conocimiento limitado que tengo sobre SVM, es bueno para una matriz de datos corta y gruesa (muchas características, y no demasiadas instancias), pero no para grandes datos.X

Entiendo que una razón es que Kernel Matrix es una matriz donde, es el número de instancias en los datos. Si tenemos, digamos, 100K datos, la matriz del núcleo tendrá elementos, y puede tomar ~ 80G de memorias.Kn×nnK1010

¿Hay alguna modificación de SVM que pueda usarse en datos grandes? (¿Digamos en la escala de 100K a 1M puntos de datos?)

Haitao Du
fuente
Sería de gran ayuda para los encuestados potenciales que debatieran el objetivo de la SVM más allá de simplemente "datos grandes". Dicho esto y sin saber nada más acerca de su consulta, ¿hay alguna razón por la cual un SVM no se puede aprovechar en un algoritmo de divide y vencerás?
Mike Hunter
¿Para qué estás usando el SVM? ¿Podrías usar un método alternativo?
tom

Respuestas:

12

Como mencionas, almacenar la matriz del kernel requiere memoria que se escala cuadráticamente con el número de puntos de datos. El tiempo de entrenamiento para los algoritmos SVM tradicionales también se escala superlinealmente con el número de puntos de datos. Por lo tanto, estos algoritmos no son factibles para grandes conjuntos de datos.

Un posible truco es reformular una SVM kernelized como una SVM lineal. Cada elemento de la matriz del núcleo representa el producto de punto entre los puntos de datos y después de (posiblemente no linealmente) en un espacio de características: . La función de mapeo de espacioKijxixjKij=Φ(xi)Φ(xj)Φse define implícitamente por la función del kernel, y las SVM kernelizadas no computan explícitamente las representaciones del espacio de características. Esto es computacionalmente eficiente para conjuntos de datos de tamaño pequeño a mediano, ya que el espacio de características puede ser de muy alta dimensión, o incluso infinito. Pero, como anteriormente, esto se vuelve inviable para grandes conjuntos de datos. En cambio, podemos mapear explícitamente los datos de forma no lineal en el espacio de características, luego entrenar eficientemente un SVM lineal en las representaciones del espacio de características. El mapeo del espacio de características se puede construir para aproximarse a una función de kernel dada, pero usa menos dimensiones que el mapeo del espacio de características 'completo'. Para grandes conjuntos de datos, esto aún puede proporcionarnos representaciones de espacios de características ricas, pero con muchas menos dimensiones que los puntos de datos.

Un enfoque para la aproximación del núcleo utiliza la aproximación de Nyström (Williams y Seeger 2001). Esta es una forma de aproximar los valores propios / vectores propios de una matriz grande usando una submatriz más pequeña. Otro enfoque utiliza características aleatorias, y a veces se llama 'fregaderos de cocina aleatorios' (Rahimi y Recht 2007).

Otro truco para entrenar SVM en grandes conjuntos de datos es aproximar el problema de optimización con un conjunto de subproblemas más pequeños. Por ejemplo, el uso del descenso de gradiente estocástico en el problema primario es un enfoque (entre muchos otros). Se ha trabajado mucho en el frente de la optimización. Menon (2009) ofrece una buena encuesta.

Referencias

Williams y Seeger (2001). Usando el método Nystroem para acelerar las máquinas kernel.

Rahimi y Recht (2007). Características aleatorias para máquinas kernel a gran escala.

Menon (2009) . Máquinas de vectores de soporte a gran escala: Algoritmos y teoría.

usuario20160
fuente