lunes, julio 27, 2009

Librerías "Machine Learning"

He estado haciendo algunos experimentos usando "machine learning" en varios proyectos y me gustaría comentar un poco sobre las librerías que he estado usando y de las que he leído un poco (aunque no las haya usado). Por el momento todas las que he usando están escritas en Python pero también comentaré algunas en Java y en C++.

Una muy sencilla de usar es FANN (Fast Artificial Neural Network), también tiene ports a Python y a otros lenguajes (PHP, Java, Perl, etc. Aunque la versión de Python no me funcionó por alguna razón).

Para Support Vector Machines usé LIBSVM (A Library for Support Vector Machines). En el website incluso pueden encontrar una serie de recomendaciones para usar SVMs. Otras librerías que también soportan SVM son PyML y MLPy (pero por alguna razón la compilación no funcionó en mi máquina y use LIBSVM).

Una utilería que se ve muy interesante para implementar un Naive Bayes Classifier es Orange . Aún no la prueba pero se ve bien, además que tiene buena documentación y links a varios datasets.

Si están interesados en Reinforcement Learning, Tiles es una librearía en Python (también en C++ y Lisp) que permite "transformar" las entradas a una función de valor representada por un vector de "tiles". En general, la representación en tiles dará una mayor resolución que simplemente discretizar a estados.

Si quieren un "decision tree" simple pueden usar éste que esta incluido y explicado en el libro. Está explicado en el libro de "Collective Intelligence". Si bien recuerdo, el algoritmo utilizado esta basado en ID3.

Y finalmente, esta mahout. Este proyecto de la Fundación Apache por lo pronto esta fuera de mis posibiliades de prueba, además de que no tengo la infraestructura ni la necesidad de usarlo. Esta basado en Hadoop y en los conceptos de mapreduce. Muy interesante.


P.D. Si quieren más recursos pueden visitar mis bookmarks en delicious de machine learning.