¿Cuáles son los puntos importantes de comparación entre Mahout y otras bibliotecas Java ML como Lingpipe o Weka?

Licencia:

  • Mahout – Licencia de Apache v2. Se puede usar libremente para cualquier propósito, se puede redistribuir, con o sin modificaciones, se puede usar en productos patentados, etc.
  • Lingpipe – patentado, con varias opciones de licencia, incluyendo una con uso gratuito, pero que no permite, AFAIK, redistribuir o modificar.
  • Weka – Licencia GPL. Se puede usar libremente para cualquier propósito, se puede redistribuir con o sin modificaciones, pero las versiones modificadas también deben tener GPL y los productos derivados deben tener GPL.

Escalabilidad:

  • Mahout está diseñado para ejecutarse sobre Apache Hadoop, que admite el escalado horizontal en grandes grupos, usando Map / Reduce. No todos los algoritmos que proporciona Mahout están disponibles en una versión M / R, pero la mayoría lo están, y los otros han sido muy optimizados para el rendimiento.
  • Lingpipe – No tengo idea.
  • Weka: tiene la reputación de no escalar muy bien a grandes conjuntos de datos. Sin embargo, no puedo verificar esto por experiencia personal.

Algunos otros puntos de comparación que uno podría querer investigar:

  • ¿Qué algoritmos implementa cada biblioteca? ¿Implementan los específicos que necesita?
  • ¿Qué tan activa es la comunidad en torno a cada proyecto? ¿Hay foros activos, listas de correo, etc., donde uno puede encontrar soporte y ayuda?
  • Disponibilidad de soporte / servicios comerciales. Dependiendo de lo que esté haciendo, es posible que desee pagar un poco de ayuda de alguien con experiencia.

Finalmente, otro punto a destacar … Mahout aprovecha de forma nativa Hadoop, pero, por lo que me han dicho, no se oponen a que las personas presenten implementaciones de algoritmos basados ​​en una tecnología diferente. Presumiblemente, si tuviera, digamos, una versión basada en MPI de, digamos, k-significa clustering que deseaba contribuir, podría incluirse en Mahout. Por lo tanto, es posible que, si hay interés, Mahout eventualmente crezca más allá de sus raíces Hadoop.

También debe considerar la facilidad de uso. Si bien Mahout es mucho más escalable que Weka, este último tiene una buena GUI para comenzar y es más fácil de incrustar en su código, ya que en realidad es solo un jar y no tiene dependencias externas (por ejemplo, iniciar un clúster de Hadoop). También es algo más maduro que Mahout, que no fue tan fácil de despegar la última vez que lo intenté.

Si está comenzando un nuevo proyecto, le sugiero que comience con Weka, haga un prototipo de su algoritmo, posiblemente con solo un subconjunto de sus datos (si no cabe en la RAM) y luego, una vez que haya establecido buenos resultados iniciales , considere mudarse a algo más “pesado” como Mahout. Incluso si termina cambiando los algoritmos (porque Weka tiene una selección más amplia en este momento, AFAIK), probablemente obtendrá resultados comparables.

More Interesting

Sistemas de bases de datos: ¿Qué formatos de datos se utilizan para almacenar series de tiempo?

Cómo extraer contenido del sitio web con procesamiento de lenguaje natural

¿Qué intentos hay para crear redes neuronales más similares al cerebro biológico?

Mi experiencia con el rendimiento de las capacidades NLP de IBM Watson fue mala. ¿Como estuvo el tuyo?

¿Cuáles son algunos problemas de Kaggle que ayudarán a un principiante a avanzar?

¿Cuáles son algunos de los problemas de aprendizaje automático (nivel introductorio) que un estudiante de economía puede modelar con los datos disponibles para una tesis de licenciatura?

¿Cuál es la diferencia intuitiva entre un modelo estocástico y un modelo determinista?

¿Quiénes son los profesores que trabajan en biología computacional utilizando el aprendizaje automático inspirado en bio como las redes neuronales?

¿Qué teoría debería aprender a crear un algoritmo para clasificar los textos automáticamente?

En el aprendizaje de características, ¿cuál es la regla general para decidir el número de parches aleatorios y el número de iteraciones / épocas con respecto al número deseado de nodos / longitud de la característica?

¿Cuáles son las principales razones contra el uso de apilamiento cuando tenemos redes neuronales?

¿Qué tan lejos estamos de usar el reconocimiento de voz como interfaz de usuario en un teléfono para cerca del 100% de todas las funciones (sin entradas de teclado o deslizamiento)?

Quiero hacer aplicaciones de visión por computadora. ¿Dónde empiezo?

¿Qué es el aprendizaje no supervisado?

Cómo entrenar a una CNN con datos insuficientes y no tan buenos