Machine Learning: enseñando a aprender

por Ricardo Vega el 20/07/2017

¡Buenas! ¿Qué tal?

Yo he pasado estas primeras semanas de verano investigando sobre Inteligencia Artificial y Machine Learning. He pensado que puede ser una buena idea recopilar aquí, en un post, mis descubrimientos al respecto :). Concretamente, me voy a centrar en el Machine Learning.

En primer lugar, decirte que el Machine Learning (frecuentemente traducido al español como aprendizaje automático) se considera un subcampo de la informática y un rama (esencial) de la inteligencia artificial donde se busca generar comportamientos automáticos a partir de la información disponible (normalmente tomada de muestras anteriores). Su uso está ampliamente generalizado como tecnología de alto nivel capaz de proveer grandes ventajas competitivas en entornos complejos. Algunos ejemplos de su uso pueden ser: motores de búsquedas, análisis de riesgos, control de fraudes, análisis financieros, procesamiento de lenguaje natural, videojuegoso o ensayos y estudios en biotecnología y medicina.

Machine Learning

Como simplificación, podemos decir que el Machine Learning consta del siguiente flujo de trabajo:

  • Adquisición de datos (mediante observación).
  • Manipulación, caracterización y representación de dichos datos orientandolos a un modelo teórico basado en el diseñador.
  • Creación del modelo como tal a partir de los pasos anteriores capaz de resolver el problema dado con los datos de partida.
  • Establecimiento de pruebas y predicciones basándose en el modelo.

De estos cuatro puntos, todos queremos llegar al último pero "la chicha" está en los anteriores.

Mi caso particular de estudio es la estimación de la temperatura de la casa en las siguientes horas basándome en el funcionamiento o no de la caldera y la temperatura interior y exterior actuales. La series temporales de las tres variables las tengo por lo que parece un buen caso de estudio que además puede ser tomado como un caso de referencia en el IoT / Domótica.

Workflow Machine Learning

Por tanto, tengo el punto 1 y también conozco perfectamente donde quiero llegar. Donde me he chocado es en el punto 2 (bloqueandome el punto 3). Como sabrás si has leído la sección "Sobre Mí", mis estudios superiores son de Ingeniería Industrial y dentro de ellos he cursado varias materias que están relacionadas con el Machine Learning (métodos matemáticos, estadística e inteligencia artificial). Con eso en mente, he pensado que tendría la suficiente base técnica como para generar mis predicciones y, nada más lejos de la realidad.

El reto de tratar los datos obtenidos por sensores para homogenizarlos en el tiempo es, en mi opinión, complejo y se lleva a cabo con técnicas y algoritmos que escapan del ámbito que (al menos yo) estudié en la carrera. Aquí cometí mi primer error: subestimar el Machine Learning, pensando que la gran cantidad de librerías disponibles y mi conocimiento básico serían suficientes.

El segundo error que cometí fue pensar en la facilidad que tendría para trabajar con Machine Learning dado que gran parte de las librerías están escritas y pensadas en Python, siendo este un lenguaje que conozco y en el cual considero que me manejo bastante bien. Se usa Python, pero principalmente librerías de Python orientadas al manejo de datos o su tratamiento matemático como son SciPy, NumPy o pandas. Con ellas se realizan las operaciones necesarias para tratar los datos de entrada y después llevarlos a Scikit Learn u otra librería de Machine Learning. ¿Desconocía estas librerías? No, al contrario, ya las había empleado con anterioridad, pero no las conozco con la profundidad suficiente que exige este caso.

Por último (al menos de momento), mi tercer error: atacar el problema directamente a través de un par de lecturas técnicas donde se habla del uso de las APIs pero que obvian el aspecto teórico por debajo. Para nada estoy diciendo que sea necesario ser un teórico experto, pero si veo más que recomendable un conocimiento básico que fácilmente se puede obtener a través de la realización de cursos online como los siguientes:

Aprendiendo Machine Learning

Por tanto, a todo el que empiece con esto, le recomiendo replantearse sus pasos. Primero aprendería Python básico (creo que con mi curso gratuito puedes obtener la base necesaria) y posteriormente realizaría alguno de los cursos online que he puesto arriba o cualquier otro que te atraiga (buscando que empleen scikit-learn como librería de soporte).

A partir de ahi busca realizar ejemplos simples con datos donde puedas poner en práctica algoritmos y redes neuronales diferentes, familiarizándote con ellos. Una vez te encuentres en este punto, creo (y espero) que se podría abordar un problema no demasiado complejo (como el que yo me planteo).

Precisamente yo estoy empezando este nuevo camino y espero hacerlo con tranquilidad para poder en unos meses dar una resolución al problema que me he planteado.

Por supuesto, me gustaría ir documentando en parte este proceso en este blog así que no te extrañe que veas alguna entrada más al respecto.

Mientras tanto, me interesa tu opinión; ¿te has pegado alguna vez con estos temas? Si es así, ¿tienes alguna recomendación que hacernos a quienes estamos empezando?.

Muchas gracias y nos vemos muy pronto.

Apoya al blog


Si te ha gustado este artículo, valora apoyarme económicamente a través de Patreon, una plataforma de Micro-mecenazgo con la que puedes hacerme un donativo que ayude a la continuidad del blog. Una pequeña ayuda significa mucho. 😃

Deja tu comentario!

Permanezcamos en contacto!


¿Quieres enterarte de todas las novedades del sector? ¿Te gustaría trabajar conmigo? ¡Puedes contactar conmigo de forma muy sencilla!