¿Por qué se usaría H2O.ai sobre la herramienta de aprendizaje automático scikit-learn?

Comencé a experimentar con H2O hace más de un año, y ahora es la herramienta principal que uso para el modelado predictivo. La razón es simple, H2O es realmente rápido. En grandes conjuntos de datos, he sido testigo de una mejora de velocidad de más de 100 veces sobre Python (scikit-learn) y R al ejecutar ciertos modelos de aprendizaje supervisado. Cuanto mayor sea el conjunto de datos, más dramática será la diferencia de rendimiento. Eche un vistazo a los puntos de referencia de este sitio web para obtener más métricas: szilard / benchm-ml

La única otra herramienta de código abierto que conozco que es comparable en velocidad es XGBoost, pero está limitada a solo uno o dos algoritmos. En contraste, H2O tiene un conjunto completo de algoritmos de aprendizaje supervisados ​​y no supervisados, aunque no tan completos como las bibliotecas / paquetes en Python o R.

Existen algunas herramientas comerciales que ofrecen un rendimiento similar al H2O, como SAS y Revolution Analytics (ahora parte de Microsoft). Pero tendrá que pagar una licencia para usarlos.

Ahora, si scikit-learn parece ser adecuado para su conjunto de datos, entonces, por supuesto, quédese con él. Pero si siente la necesidad de una plataforma más escalable, le recomiendo que pruebe H2O.

Editar: Me gustaría abordar algunos de los puntos hechos por Alexander Tchitchigin. Aunque H2O está escrito en Java, no es necesario conocer Java para usarlo. Se puede acceder a H2O a través de R, Python, Java y Scala. Incluso hay una interfaz web donde simplemente puede arrastrar y soltar.

Tampoco es necesario un clúster Hadoop / Spark para usar H2O. Hago la mayor parte de mi trabajo H2O en una sola máquina. Hay una gran característica en la que puede iniciar H2O en diferentes máquinas para formar un clúster virtual para acelerar su cálculo. Pero incluso esta característica no requiere Hadoop / Spark.

Finalmente, no necesita cientos de GB de datos para justificar el uso de H2O. He visto mejoras notables en el rendimiento al modelar en 10s de MB de datos. Pero en los conjuntos de datos del tamaño de GB, las mejoras serán asombrosas.

La razón por la que prefiero H2O frente a sklearn es porque es muy difícil integrar modelos ML en un producto existente que no sea Python, es decir, basado en Java. Por ejemplo, para poder usar un modelo de clasificación de scikit-learn en tiempo real por un entorno que no sea Python, (a) debe escribir un contenedor que traduzca un conjunto de datos de entrada en un vector numpy donde necesita manejar categorías. y valores nulos, y clasifique correctamente todos los valores de entrada para construir una matriz numérica bien formada, (b) llame a la función de predicción de sklearn y publique el valor de retorno como un servicio web, y (c) mantenga la disponibilidad de este servicio web de predicción además al resto de su aplicación.

Con H2O, puede usar su producto Steam para servir modelos ML o generar e importar objetos POJO / MOJO (para que no necesite tener un clúster H2O ejecutándose) en su aplicación Java existente y usar directamente la predicción correspondiente / función de puntuación que admite valores nulos, categóricos y valores de entrada de mapas por nombre en lugar de por el orden que requiere sklearn.

Mi razón secundaria para elegir H2O contra sklearn es la eficiencia de memoria de H2O. Los marcos de datos H2O son mucho más pequeños en la memoria y en el disco (cuando se descargan), en comparación con los marcos de datos de pandas (su kilometraje puede variar de acuerdo con el contenido de sus datos).

Como nota final, H2O no requiere (pero es compatible con fines de escala) Hadoop, Spark o grandes grupos para trabajar. Es ligero y se integra con Python tan simple como sklearn. Por supuesto, amo y sigo usando sklearn además de H2O para tareas experimentales o complicadas de ciencia de datos. Sin embargo, H2O es mucho más fácil para escalar y producir aplicaciones de minería de datos.

A juzgar por su sitio web, H2O es un marco Java ML construido sobre Hadoop y Spark. Por lo tanto, su objetivo es la ML / análisis distribuido a gran escala (“Big Data”) en entornos empresariales.

Entonces, las razones para elegir H2O sobre Scikit-learn:

  1. Desarrollas en Java
  2. Tiene una GRAN cantidad de datos (100s de GB como mínimo)
  3. Trabajas para grandes empresas
  4. Tienes un clúster Hadoop / Spark a tu disposición

O algo por el estilo. 🙂

More Interesting

¿Cómo implementaría el servicio de noticias de Quora?

¿Cuáles son algunos de los mejores algoritmos de aprendizaje automático, considerando la eficiencia, la facilidad de implementación, etc.?

¿Qué son las redes neuronales profundas?

¿Por qué necesitamos RandomForestClassifier cuando DecisionTreeClassifier selecciona la mejor característica en cada división?

¿Cómo hace un auto Tesla el aprendizaje automático?

¿Por qué el gradiente en el punto mínimo no es igual a 0?

Además de las redes neuronales profundas, ¿existen antecedentes para cálculos largos con una inferencia máxima a posteriori eficiente?

Cómo detectar objetos superpuestos casi circulares en MATLAB

¿Cómo puedo explicar el hecho de que el aprendizaje por transferencia ofrece un mejor rendimiento que el entrenamiento estándar?

¿El parámetro C afecta a una clase SVM?

¿Por qué la pérdida logística es una mejor métrica para la clasificación probabilística que RMSD?

¿Qué tan bueno es Irlanda para la visión por computadora?

¿Cómo debo aprender el aprendizaje automático? ¿Puede proporcionar una hoja de ruta específica desde un principiante hasta un experto?

¿Cuáles son los límites del aprendizaje automático? ¿Cuándo puede estar seguro de que un algoritmo ML no podrá darle un resultado satisfactorio?

¿Por qué el aprendizaje automático, las redes neuronales y otros enfoques de IA, por ejemplo, no se usan más ampliamente en las predicciones del mercado de valores?