Orange
En mi época de estudiante descubrí que estaban libremente disponibles en internet implementaciones de la inmensa mayoría de los algoritmos de minería de datos que uno quisiese utilizar. Y que, de hecho, podían encontrarse versiones más avanzadas y eficientes que las que aparecían en las suites comerciales más conocidas.
En mi época de estudiante tenía, además, más tiempo y podía entretenerme en descargar, modificar, compilar, probar, recompilar, comparar, etc. El principal problema con el que me encontraba era el de intercomunicar herramientas y algoritmos.
Pero, ¿qué pasaría si alguien tomase una librería de algoritmos implementada eficientemente y les dotase de un interfaz homogéneo? ¿Qué ocurriría si las integrase con un lenguaje de script moderno? ¿Y si, además, las dotase de una interfaz gráfica que facilitase su uso? El resultado sería, sin duda alguna, Orange.
Algoritmos
Orange incluye algoritmos para:
- preprocesamiento: selección de variables, discretización, etc.
- modelización predictiva: árboles de clasificación, k-vecinos, SVM, regresión logística, clasificadores basados en reglas, etc.
- métodos de agrupación de modelos: boosting, bagging, bosques aleatorios, etc.
- visualización: SOM, clústering jerárquico, k-medias, escalado multidimensional, etc.
- validación: remuestreo, validación cruzada, medidas estadísticas del ajuste, etc.
Scripting Orange
Una de las principales ventajas de Orange es está construido sobre Python, un lenguaje de script moderno y avanzado que permite que es perfectamente programable y extendible.
Tomamos prestado un ejemplo en el que se importan dos módulos de Orange (orgnTest y orngStat, se leen unos datos y se utiliza un método de validación cruzada para comparar los dos clasificadores a través de su la precisión de la clasificación como el índice de Brier:
import orange, orngTest, orngStat
data = orange.ExampleTable('voting')
bayes = orange.BayesLearner()
tree = orange.TreeLearner()
results = orngTest.crossValidation([bayes,tree], data, folds=5)
print 'Classification accuracy: ', orngStat.CA(results)
print 'Brier Score: ', orngStat.BrierScore(results)
Entorno gráfico
Renunciando a la flexibilidad que permite un lenguaje de script, se puede usar Orange en modo gráfico. La integración de los algorimos de base con Python y de éste con las librerías gráficas Qt ha permitido el desarrollo de un GUI atractivo e intuitivo.
Más información
Las pruebas que he realizado con Orange hasta la fecha han sido satisfactorias. Eso sí, todavía no he realizado con él ninguna prueba de carga pesada. Habrá que ver cómo se comporta enfrentándose a problemas de magnitud empresarial. Estoy seguro de que este artículo contará pronto con otro que recoja mis experiencias con la herramienta. En tanto, invito a mis lectores a que lo prueben.
