2011-12-24 16 views
6

Actualmente estoy experimentando con una tarea de ML que implica el entrenamiento supervisado de un modelo de clasificación. Hasta la fecha, tengo ~ 5M de ejemplos de entrenamiento y ~ 5M de validación cruzada. Cada ejemplo tiene, por el momento, 46 ​​características, sin embargo, es posible que desee generar 10 más en el futuro cercano, por lo que cualquier solución debería dejar espacio para mejorar.Tarea de aprendizaje automático: ¿qué herramienta usar?

Mi problema es el siguiente: ¿qué herramienta utilizo para resolver este problema? Me gustaría usar bosques aleatorios o SVM, sin embargo, me temo que este último puede ser demasiado lento en mi caso. He considerado a Mahout, pero me volví, ya que parece requerir una cierta cantidad de configuración, junto con jugar con los scripts de línea de comandos. Prefiero codificar directamente en una biblioteca (¡bien documentada!) O definir mi modelo con una GUI.

También debo especificar que estoy buscando algo que se ejecutará en Windows (sin cosas como cygwin), y que las soluciones que funcionan bien con .NET son muy apreciadas.

Se puede imaginar que, cuando llegue el momento será, llegado, el código se ejecutará en un Cluster Compute Eight Extra Large Instance en Amazon EC2, así que cualquier cosa que hace amplio uso de la CPU y la memoria RAM de varios núcleos es bienvenido.

Por último, pero no menos importante, se especificará que mi conjunto de datos es denso (en la que no hay ningún valor que falta/todas las columnas tienen un valor para cada vector)

+1

Existen innumerables herramientas disponibles (para empezar, consulte la lista de software en KDnuggets: http://www.kdnuggets.com/software/index.html). Aunque la descripción de su problema elimina algunos de ellos, todavía queda un número que podría ser suficiente. No estoy seguro de qué es exactamente lo que quiere decir con "jugar bien con .NET", pero cualquier herramienta que valga la pena debería proporcionar un informe o código fuente del modelo que podría traducirse fácilmente en código .NET. – Predictor

+0

Gracias por el enlace, lo verificará tan pronto como haya escrito esto. En cuanto a jugar bien con .NET, significa que algo que tiene una interfaz programable para iniciar el trabajo o incluso una biblioteca .NET (o envoltorio útil) es preferible a algo que no lo es. – em70

Respuesta

2

Yo recomiendo mirar descenso de gradiente estocástico para esta escala de un problema. Una buena herramienta para mirar es VowpalWabbit. En ese tamaño, probablemente pueda ejecutar sus experimentos en un escritorio con especificaciones razonables. El único inconveniente para usted, creo, es que no está centrado en Windows, pero aunque no lo he comprobado, debería ejecutarse en cygwin.

EDIT: Ha habido un gran interés por parte de los desarrolladores para obtener VowpalWabbit se ejecuta en Windows. A partir de marzo de 2013, VowpalWabbit (versión 7.2) se ejecuta en Windows de forma inmediata. Hay un par de características avanzadas/opcionales que todavía no están implementadas en Windows, una de ellas está ejecutando VowpalWabbit como daemon, pero parece que se manejará en el futuro a corto plazo.

+1

¿Por qué esta herramienta en particular? Hay docenas de candidatos: ¿qué hace que este se eleve por encima del resto? – Predictor

+1

@Predictor, ese es el que he usado, con el que tengo experiencia y con el que he obtenido buenos resultados. Además, personalmente, soy el primero en mencionar la herramienta técnica que necesita (descenso de gradiente estocástico). Además, es el primero en mencionar que puede manejar esa escala en su computadora portátil y no requiere un clúster EC2. – carlosdc

+0

Veo que esta respuesta tiene ~ 1.5 años. wabbit de vowpal ha sido portado a Windows, y la versión 7.x no debería funcionar bien en Windows. – arielf

3

Rutinariamente ejecuto conjuntos de datos de conteo/características similares en R en EC2 (el tipo de instancia de 16 núcleos/60 Gb es particularmente útil en caso de que esté usando un método que puede aprovechar múltiples cpus como paquete caret.) Como mencionaste, no todos los métodos de aprendizaje (como SVM) van a funcionar bien en ese conjunto de datos.

Es posible que desee considerar el uso de una muestra del 10% más o menos para la evaluación comparativa rápida de rendimiento/prototipos antes de pasar al conjunto de datos completo.

Si desea un rendimiento extremadamente alto y luego Vowpal Wabbit es un mejor ajuste (pero sólo es compatible con los alumnos lineales generalizados por lo que no gbm o Random Forest.) Además, VW no es muy ventanas de usar.

Cuestiones relacionadas