2012-03-11 23 views
6

Somos estudiantes tratando de manejar el tamaño de datos de aproximadamente 140 millones de registros y tratando de ejecutar algunos algoritmos de aprendizaje automático. somos novatos de todas las soluciones en la nube y las implementaciones de mahout. Actualmente las hemos configurado en la base de datos postgresql, pero la implementación actual no se amplía y las operaciones de lectura/escritura parecen ser extremadamente lentas después de numerosos ajustes de rendimiento. Por lo tanto, estamos planeando ir a los servicios basados ​​en la nube.Amazon EC2 vs PiCloud

Hemos explorado algunas alternativas posibles. servicios

  1. Amazon Cloud basado Mahout (aplicación)
  2. Picloud con scikits aprender (que tenían previsto utilizar el formato HDF5 con NumPy)
  3. favor recomiendan otras alternativas si las hay.

Aquí están las siguientes preguntas

  1. Lo que nos daría mejores resultados (tiempo de vuelta) y serían rentables? Por favor, mencione cualquier otra alternativa presente.
  2. En caso de que configuremos Amazon Services ¿cómo debemos tener el formato de datos? Si usamos dynamodb, ¿se disparará el costo?

Gracias

Respuesta

5

PiCloud está construido sobre AWS, por lo que de todas maneras usará Amazon al final del día. La pregunta es cuánta infraestructura tendrá que escribir usted mismo para tener todo conectado entre sí. PiCloud le da un poco de uso gratuito para ponerlo a prueba, por lo que es posible que le apliques inicialmente. No lo he usado yo mismo, pero está claro que están tratando de proporcionar una implementación fácil para aplicaciones de tipo de aprendizaje automático.

Parece que esto es intentar resultados, no ser un proyecto en la nube, entonces buscaría usar uno de los otros servicios de Amazon además de EC2 o cualquier otro software como PiCloud o Heroku u otro servicio que pueda tomar cuidado del arranque.

7

Depende de la naturaleza del problema de aprendizaje automático que desee resolver. Le recomendaría que primero muestree su conjunto de datos a algo que se ajuste a la memoria (por ejemplo, 100k muestras con unos cientos de características distintas de cero por muestra, suponiendo una representación dispersa).

A continuación, intente un par de algoritmos de aprendizaje automático que escalar a gran número de muestras en scikit-learn:

  • SGDClassifier o MultinomialNB si usted quiere hacer la clasificación supervisada (si tiene etiquetas de categorías para predecir en su conjunto de datos)
  • SGDRegressor si usted quiere hacer una regresión supervisado (si tiene variable objetivo continuo de predecir)
  • MiniBatchKMeans agrupación de hacer agrupamiento no supervisado (pero entonces no hay forma objetiva de cuantificar la calidad de las agrupaciones resultantes por defecto)
  • ...

realiza una búsqueda de rejilla para encontrar los valores óptimos de los hiperparámetros del modelo (por ejemplo, el regularizador alpha y el número de pasadas n_iter para SGDClassifier) ​​y evaluar el rendimiento utilizando la validación cruzada.

Una vez hecho esto, vuelva a intentar con 2 grandes conjuntos de datos (que aún se ajustan en la memoria) y vea si mejora significativamente su precisión predictiva. Si no es el caso, no pierda el tiempo tratando de paralelizar esto en un clúster para ejecutarlo en el conjunto de datos completo, ya que no obtendrá mejores resultados.

Si lo hace lo que podría hacer, es fragmentar los datos en pedazos, entonces rebanadas de datos sobre cada uno de los nodos, aprender de SGDClassifier o SGDRegressor modelo en cada nodo de forma independiente con picloud y recoger vuelta los pesos (coef_ y intercept_) y luego calcule las ponderaciones promedio para construir el modelo lineal final y evaluarlo en un segmento retenido de su conjunto de datos.

Para obtener más información sobre el análisis de errores. Tener vistazo a cómo trazar las curvas de aprendizaje:

0

debería echar un vistazo a numba si usted está buscando algunas aceleraciones numpy: https://github.com/numba/numba

No resuelve el problema de escala de la nube, pero puede reducir el tiempo de cálculo.

-1

Acabo de hacer un comparison entre PiCloud & Amazon EC2> podría ser útil.