¿Qué lenguaje de programación recomienda para crear un prototipo de un problema de aprendizaje automático?

12

Actualmente trabaja en Octave, pero debido a la pobre documentación, el progreso es muy lento.

¿Qué lenguaje es fácil de aprender y usar y está bien documentado para resolver problemas de aprendizaje automático? Estoy buscando crear un prototipo en un pequeño conjunto de datos (miles de ejemplos), por lo que la velocidad no es importante.

EDITAR: estoy desarrollando un motor de recomendación. Por lo tanto, estoy interesado en utilizar Regresión lineal regularizada, Redes neuronales, SVN o Filtrado colaborativo.

B Seven
fuente
1
Una vez comencé con Octave, también, ya que mi profesor estaba en matlab (uuh, esto fue divertido durante el trabajo del curso utilizando la biblioteca del profesor, ya que matlab y octava no tienen exactamente la misma sintaxis), pero luego cambié a R y simplemente me quedé impresionado. por su documentación superior y variedad de bibliotecas.
steffen
99
Python es, por supuesto, muy fácil de aprender y leer, así que supongo que es cuestión de gustos. Sugiero estos enlaces: python-stat-workbench , what-programación-lenguaje-para-estadística-inferencia , machine-learning-using-python , clojure
steffen
1
Recomiendo R, Python o Matlab. Por razones demasiado extensas para abordar, dejaría caer a Matlab. Para una persona de estadísticas, iría con R, para un programador, iría con Python. Para los bucles internos, iría con C / C ++. A escala suficiente, los costos de Matlab exceden cualquier beneficio.
Iterator
1
o, eche un vistazo a julia ...
kjetil b halvorsen

Respuestas:

7

Si desea usar algo fuera de la caja, Weka podría ser un excelente punto de partida. No hay necesidad de programar nada. Importa sus datos, los visualiza y juega con diferentes modelos.

El siguiente en la cadena sería R. Hay una curva de aprendizaje asociada, especialmente con la mezcla de sus datos para que encajen en las estructuras de datos R, pero una vez que lo supera, tiene toneladas de bibliotecas que ofrecen todas las capacidades de aprendizaje automático sin mucho esfuerzo.

El siguiente paso sería programar manualmente los algoritmos de aprendizaje automático. Como ya está utilizando Octave y está buscando alternativas, tal vez lo que desea no es entregar algoritmos de código en algún otro sistema, sino simplemente usar las bibliotecas escritas por otras personas.

Si sigue el camino R, puede encontrar el libro de Luis Torgo (Data Mining with R: Learning with Case Studies) muy útil (divulgación: sin afiliación). Describe estudios de caso en profundidad que puede adaptar a su problema.

araroot
fuente
15

Es posible que obtenga mejores respuestas si especifica los algoritmos específicos que le interesan. Uso R para este tipo de cosas (sin embargo, hago econométrica de series temporales, no aprendizaje automático); Puedes ver la funcionalidad existente aquí:

http://cran.r-project.org/web/views/MachineLearning.html

y hay un código R para implementar el análisis en los elementos de aprendizaje estadístico de Hastie, Tibshirani y Friedman :

http://www-stat.stanford.edu/~tibs/ElemStatLearn/

El sistema de empaquetado de R es bastante bueno y empuja a las personas a documentar su código, y es de código abierto para que siempre pueda ver la implementación. No he usado Matlab en unos años y no lo usé para mucho aprendizaje automático: sus cajas de herramientas generalmente están bien documentadas pero pueden ser costosas, pero el código aportado por el usuario estará tan mal documentado como cualquier otro.

gris
fuente
11

En su curso en línea de aprendizaje automático, Andrew Ng sugiere usar Octave / Matlab.

Le recomiendo que se inscriba en la próxima edición de este curso: es realmente útil y aprenderá muchas cosas sobre Octave y sobre los diferentes algoritmos de aprendizaje automático.

EDITAR 1 : estoy de acuerdo con otras personas que prefieren trabajar en R. Sin embargo, al resolver los problemas del aprendizaje automático, la mayoría de sus cálculos serán en forma de matriz, y como lo señalan los idiomas @Wayne, Matlab u Octave son muy populares por su poder Es posible que desee echar un vistazo a las soluciones para los ejercicios del curso de aprendizaje automático propuestos por otros estudiantes; seguramente puedes aprender algunas cosas de ellos:

Gkokaisel Github

Merwan Github

Manuel Ramón
fuente
1
¡Estoy inscrito en esta edición del curso! ¡El problema es que hacer las cosas más simples fuera del curso no funciona! La documentación es inútil.
B Seven
3
Tengo que decir que Matlab (por lo tanto, Octave) es un lenguaje de programación terrible. Es muy popular en los campos de ingeniería y aprendizaje automático, pero eso se debe a su poder y a su uso en las escuelas, no porque sea un lenguaje de programación moderno. Dicho esto, es más probable que encuentres textos de aprendizaje automático que lo usen que los que usen R o Python.
Wayne
1
Hago todo mi trabajo en MATLAB, no es el mejor lenguaje de programación del mundo (diría que R era aún peor; o), pero vale la pena perseverar, ya que es muy bueno para la investigación de aprendizaje automático. Para redes neuronales, busque la biblioteca NETLAB, y también investigue el Proceso Gaussiano con la biblioteca GPML, ambos son excelentes bits de kit, y el IIRC ambos funcionan con octava. Para la regresión lineal regularizada, es solo una línea de MATLAB, para los modelos no lineales, existe la caja de herramientas GKM, theoval.cmp.uea.ac.uk/projects/gkm (lo siento, aún no mensual).
Dikran Marsupial
1
Los cálculos de matriz también se pueden hacer en R, aunque la notación, por ejemplo t(A) %*% B, es menos intuitiva que en Matlab.
Itamar
1
¿No hay buenas bibliotecas matriciales para cada lenguaje de alto nivel como C #, Java, Python y Perl?
B Seven
10

El scikit-learn (ahora sklearn) debe cumplir con varios de los criterios que describió (velocidad, clases bien diseñadas para manejar datos, modelos y resultados), incluidas las aplicaciones específicas (regresión penalizada L1 / L2, SVM, etc.). Viene con un rico conjunto de documentación y muchos ejemplos . Vea también su descripción en un artículo publicado en el JMLR.

Un marco alternativo en Python es Orange , que se puede utilizar a través de una interfaz gráfica de usuario suave o en la línea de comandos directamente. Para el filtrado colaborativo, pyrsvd puede ser interesante, pero nunca lo he intentado. Sin embargo, Apache Mahout ciertamente podría usarse para el filtrado colaborativo .

chl
fuente
1

Si se refiere a un prototipo industrial (es decir, algo que está hecho para ser utilizado por personas reales y no para investigación pura), Python es en este momento el único camino a seguir.

Si usa Matlab, Octave o R, obtendrá un entorno fácil de usar para la investigación de ML, pero será una pesadilla poner el modelo en funcionamiento con una interfaz de usuario o con un servicio web.

En python tenemos la suerte de tener tanto un ecosistema científico extenso ( sklearn para ML, pandas para el análisis de datos, matplotlib / seaborn para visualización) como un ecosistema de aplicación (piense en django y su marco de descanso ).

Python es un lenguaje fácil de aprender. En el futuro, espero que el ecosistema Javascript sea científicamente sólido como el de Python, pero a pesar de algunos grandes proyectos, no veo que llegue pronto.

¡No te envuelvas en una caja, usa un lenguaje general!

Pieroit
fuente