¿Cuál es la mejor manera de implementar un SVM usando Hadoop?

Pensé que podría valer la pena poner todas las soluciones propuestas en contexto para ver cuándo una podría usar una sobre la otra.

El blog de atbrox (http://atbrox.com/2010/02/08/par…) al que señala Soren brinda detalles sobre la implementación de reducción de mapas, pero la versión de SVM implementada se puede cambiar en función de las propiedades deseadas de la solución :

1. Si el problema original es lo suficientemente fácil como para que los datos requeridos para entrenar el modelo puedan caber en una sola máquina, luego entrene usando una sola máquina (con, por ejemplo, LibSVM) pero clasifíquela usando múltiples máquinas (como Peter Skomoroch sugiere). Para verificar si su problema es “fácil”, observe el rendimiento de sus datos de prueba a medida que agrega datos de capacitación. Si prueba las mesetas de rendimiento antes de alcanzar la memoria máxima en una sola máquina, puede usar esta versión.

2. Comparado con LibSVM que resuelve el problema dual, Chu et al, 2006 (http://www.cs.stanford.edu/peopl…) resuelve la formulación SVM primaria directamente usando un método de segundo orden como el método de Newton. Esto proporciona una solución exacta que puede implementarse dentro de map-reduce y tiene todas las garantías siempre que converja su método newton. Para obtener detalles sobre la derivación, consulte el documento original de Chapelle 2006 (http://citeseerx.ist.psu.edu/vie…). Este algoritmo le permitirá usar el truco del núcleo (si necesita usarlo) como se describe en la sección 3. La única suposición que hace el algoritmo es que puede hacer una matriz inversa, una operación O (s ^ 3), donde s es el número de vectores de soporte. Para evaluar si esto es cierto para sus datos, intuitivamente, si los datos parecen separables, entonces el límite de decisión no debería ser demasiado complejo y la cantidad de vectores de soporte requeridos es pequeña y definitivamente no escala con los datos. Si este no es el caso, entonces debe recurrir a soluciones aproximadas.

3. La solución PSVM de Chang et al, 2007 (http://books.nips.cc/papers/file…) es una solución aproximada al objetivo SVM. No hay garantías asociadas con él. Pero Google tiene una versión implementada como Jonathan señaló: http://code.google.com/p/psvm/

Casos especiales:
4. Si le interesa tener una solución escasa para su SVM (es decir, la selección de características es importante), utilice la formulación del problema 6 en el siguiente documento (que Amund señaló):
http://jmlr.csail.mit.edu/papers…
El problema original es NP-hard pero resuelven una versión aproximada del objetivo.

5. Todas las soluciones anteriores suponen que el número de características dadas no es muy grande y el problema de tamaño se debe solo a la gran cantidad de muestras de datos. Si la cantidad de funciones también es realmente grande, también querrás dividirlas en funciones. Use la versión que propone el grupo de Boyd (como Matt mencionó):
http://www.stanford.edu/~boyd/pa…
Esto también es aproximado y no le brinda una forma de usar el truco del núcleo.

En resumen, para la mayoría de los problemas, diría que Chapelle / Chu sería su mejor opción. Me encantaría recibir comentarios si ves errores en mi resumen.

Puede entrenar a sus clasificadores y compilar los binarios, luego aplicar los clasificadores entrenados a cada imagen a través de un mapeador de transmisión de hadoop, enviando el modelo entrenado como datos secundarios a través de la caché distribuida.

Bueno, Apache mahout ( http://mahout.apache.org/ ) es una biblioteca de aprendizaje automático que utiliza hadoop. Actualmente no tienen funcionalidad de máquina de vectores de soporte, pero la tienen en su plan futuro ( https://cwiki.apache.org/conflue …). GPDT paralelo ( http://dm.unife.it/gpdt/ ) admite la capacitación paralela de la máquina de vectores de soporte.

More Interesting

¿Cuál es la mejor manera de distribuir una aplicación de iOS para un proyecto de investigación?

¿Cuáles son los mejores laboratorios de investigación en el campo de los UAV combinados con aprendizaje automático, visión y percepción por computadora?

¿Qué es el aprendizaje supervisado?

¿Puedo terminar en trabajos de aprendizaje automático si tengo una maestría en neurociencia?

¿Cómo es Octave el mejor lenguaje utilizado para el aprendizaje automático?

¿Qué se debe considerar al decidir entre usar un algoritmo de filtrado colaborativo basado en el usuario y en el elemento?

Quiero aprender a extraer datos de un sitio web. ¿Donde debería empezar?

¿Cuál es la mejor red neuronal o SVM para la clasificación de texto de etiquetas múltiples?

¿Debería haber una relación específica entre el número de características y el número de clases? Si tengo 15 funciones pero 50 clases con 1000 datos de entrenamiento, ¿tendré un problema de sobreajuste? ¿Y cuál es la mejor técnica de clasificación para esta relación?

¿Debería incluirse el error de salida en la retropropagación en el bucle?

¿Cuál es el método de detección de objetos de última generación para la identificación de objetos dentro de la imagen?

¿TF-IDF está categorizado como una selección de características o una extracción de características?

¿Cuáles son las configuraciones adecuadas para la agrupación de documentos con K-means?

Cómo preprocesar el conjunto de datos de correo electrónico de Enron

¿Qué significa estadísticas de coexistencia?