Apr 22

¿Es nuevo esto del machine learning?

Pajarito de Weka

Me ha dado por mirar temas de machine learning. Como también he oído mucho de deep learning, lo primero he intentado ver es la diferencia entre uno y otro. Pues parece que machine learning es el término general para a partir de unos datos de entrada encontrar correlaciones y poder hacer predicciones a futuro sobre estos datos, usando determinados algoritmos. Y deep learning es un subconjunto de machine learning en el que el algoritmo a usar es el de redes neuronales.

En machine learning en general se usan cosas como árboles de decisión, redes bayesianas, clustering, etc, etc. En deep learning se usan redes neuronales.

Y una vez entendido el asunto, me he dicho … seguro que hay cosas en java hechas. Y sí, hay bastantes. La que más me han llamado la atención, por la parte de machine learning, es Weka. He estado jugando con Weka y no es muy compleja de usar, me ha parecido bien. También he visto, aunque no jugado todavía, TensorFlow, esta de redes neuronales (deep learning) y al menos la web tiene muy buena pinta y TensorFlow es de google, que siempre hace que al menos merezca la pena mirarla. De todas formas he sido “malo” y le puesto la mosca detrás de la oreja a un compañero de trabajo, que sí ha jugado con ella y me ha dado buenas referencias tras hacer sus experimentos.

Pero tras leer un poco sobre esto y jugar con weka … me he decepcionado un poco. Weka no me ha costado mucho porque he visto que tenía una cosa que se llama árboles de decisión como algoritmo para clasificar muestras y he podido hacer rápidamente mis pruebas porque sé cómo funciona un árbol de decisión. ¿Y por qué lo sé?. Porque allá por 1993 (hace ya 25 años) estuve intentando hacer el doctorado de mi carrera (no lo terminé, por eso “intentando”) y ya entonces existían los árboles de decisión. También por aquella época existían las redes neuronales (ahora por lo visto llamadas deep learning).

Entonces .. . ¿hemos evolucionado algo?. Pues mi conclusión es que en conceptos/algoritmos me da la impresión de que no, posiblemente se han mejorado o se han variado, pero básicamente sigue siendo lo mismo que había al menos hace 25 años. Lo que sí ha evolucionado un montón es que ahora hay un mogollón más de datos, tenemos más potencia de CPU y tenemos más posibilidades de hacer cálculo distribuido en cluster de servidores, por lo que todos estos algoritmos tienen ahora mucha más potencia y posibilidades. De hecho, aunque no he encontrado una referencia clara, en algunos sitios si mencionan que la palabra “deep” es porque ahora se pueden poner muchas más capas en las redes neuronales.

Y lo que más ha evolucionado, en 1993 internet no era lo que es hoy y me tuve que hacer yo desde cero el código de los árboles de decisión, estudiando e implementando las fórmulas de entropía del conjunto de muestras. También me hice desde cero mis redes neuronales. Ahora hay mucha gente que ha hecho librerías que tienen todo esto implementado, como Weka o TensorFlow, y están fácilmente accesibles y documentadas en internet. Sólo nos queda por hacer la parte difícil, elegir bien los parámetros de interés de nuestras muestras y entrenar el algoritmo 🙂