Respuesta corta:
- Si está haciendo un aprendizaje automático simple al estilo de un patio de recreo (o un trabajo típico de tipo universitario), probablemente no necesite ninguno de esos, y estará encantado de ejecutar scikit-learn en Python o algo similar.
- Si necesita crear una aplicación de Big Data, Spark es una gran opción, y por cierto tiene un módulo de aprendizaje automático para que pueda conectar un poco de ML en su aplicación.
- Si necesita crear un modelo de aprendizaje automático sofisticado que funcione realmente bien y se ejecute de manera eficiente, TensorFlow es una gran opción, y por cierto funciona bien con grandes conjuntos de datos siempre que pueda ejecutarlo en una máquina (AFAIK Google no se ha abierto -sourced el código para los cálculos distribuidos de TensorFlow en una red).
Respuesta larga:
Hay algunas similitudes conceptuales, pero son motores diferentes para diferentes propósitos que tienen una superposición parcial.
- ¿Qué significa cuando obtengo buenos resultados de la medida F con un CV de 10 veces pero resultados pobres en los datos de la prueba, resultados similares si participo el conjunto de datos original en el conjunto de entrenamiento / validación? Obtengo buenos resultados en la validación pero malos resultados en el conjunto de pruebas.
- ¿Qué tecnología debo aprender, siendo un desarrollador de mainframe interesado en análisis de datos, AWS, aprendizaje automático, big data y otros?
- ¿Funciona el aprendizaje profundo si las entradas están en un espacio dimensional relativamente bajo?
- Cómo elegir el número de árboles en el aprendizaje automático
- ¿Cuándo debe usarse el bosque aleatorio sobre la regresión logística para la clasificación y viceversa?
Spark es un motor para el procesamiento de datos distribuidos, es decir, software para tomar datos más o menos arbitrarios, código más o menos arbitrario que procesa esos datos y ejecuta ese código de manera eficiente sobre (potencialmente) muchos núcleos o máquinas, sobre una red si es necesario. Spark puede verse como un MapReduce generalizador y optimizador. Uno de los módulos que viene con Spark es MLlib, que proporciona algunas operaciones comunes de “aprendizaje automático” que están optimizadas previamente para Spark y se pueden llamar directamente desde el código. Pero hay muchos otros módulos similares (por ejemplo, GraphX para análisis de gráficos, y muchos otros).
TensorFlow es un motor para el aprendizaje automático, es decir, un software para definir y ejecutar modelos de aprendizaje automático, de manera independiente de la implementación (es decir, el mismo código puede ejecutarse en una CPU, en una GPU, en paralelo sobre máquinas, etc.). Viene con una gran cantidad de primitivas y características de aprendizaje automático, adecuadas para construir modelos ML sofisticados.