En el episodio de hoy de Un podcast ninja sobre Big Data vamos a hablar de esa cosa terrorífica llamada matemáticas y cuántas matemáticas hace falta saber para ser un ninja de los datos.
Si alguna vez os habéis planteado hacer un grado universitario de ciencia de datos y habéis ido alegremente a echar un vistazo al programa de estudios habréis comprobado con horror que los primeros cursos están plagados de asignaturas matemáticas.
Álgebra, probabilidad, análisis matemático, inferencia estadística, cálculo I, cálculo II, cálculo XVI…
Tal vez, una tímida asignatura de introducción a la ciencia de datos.
Francamente, es un bajón. Una travesía por el desierto.
Y, posiblemente innecesario desde el punto de vista del aprendizaje de la ciencia y análisis de datos para el mundo laboral.
A ver, está claro que hay que tener unas bases y algunos conceptos claros para entender qué hay detrás de los modelos de Machine Learning.
Y que para saber correr antes es necesario saber andar.
Eso es una cosa y otra cosa es que a un bebé que está aprendiendo a caminar le expliques los fundamentos teóricos de la biomecánica.
En el mundo de los datos esto equivaldría a dominar los tres pilares sobre los que descansa todo este tinglado.
Estoy 100% de acuerdo en que para ser un ninja supremo de los datos hay que tener unas bases matemáticas sólidas.
Sin embargo, en vez de adquirir todos los conocimientos matemáticos en profundidad de primeras, que nos va a hacer sentir igual de abrumados que el típico cervatillo cruzando una carretera por la noche cuando le dan las largas, pues vamos a hacerlo poco a poco y en paralelo al aprendizaje de las técnicas de Machine Learning, de análisis de datos y de todo lo que decidamos aprender.
Si nos atiborramos a matemáticas antes de saber nada de Machine learning ni siquiera sabremos a qué estamos mirando y por qué es importante para nuestro objetivo final.
Esta estrategia es la clásica en la que se empieza a aprender todas las bases matemáticas y se va construyendo hacia arriba.
Queremos resolver un problema, aprendemos a construir lo que queremos construir y después entendemos la teoría de lo que hay detrás.
Y sobre todo el por qué de las cosas.
O en vez de hacerlo después, puede ser al mismo tiempo.
Le podéis dedicar un rato a la semana a rellenar todos esos vacíos matemáticos que se van presentando mientras aprendéis Machine Learning.
Una vez que veamos dónde se aplican todos esos conocimientos matemáticos estaremos mejor equipados para asimilarlos.
Sabremos para qué sirven.
Evidentemente tenemos que al menos entender las bases fundamentales.
Para empezar tenemos el álgebra lineal.
Vamos a ver por qué el álgebra lineal es importante…
Bien.
Imaginad el típico problema de datos tabulares.
Una hoja de cálculo con sus filas (observacione) y con sus columnas (características).
Si nuestro conjuntos de datos fuera uno con viviendas, cada vivienda del dataset sería una fila u observación y cada columna sería una característica de las casas: el número de habitaciones, los metros cuadrados, el precio, el año de construcción… esas cosas.
Es posible que una de esas columnas sea nuestra columna objetivo, la que queremos predecir, es decir la etiqueta.
En nuestro ejemplo, igual esa columna se corresponde con el precio de la casa, no sé…
Bueno pues todo esto de filas y columnas no deja de ser una matriz.
Así que… hola al álgebra lineal 👋
Vamos un paso más allá.
Un modelo lineal no es más que un conjunto de coeficientes que multiplicaremos por las características para obtener la etiqueta de una observación.
Así de sencillo.
Se trata de multiplicar para cada observación cada una de las características por el coeficiente correspondiente del modelo.
Si sabéis de programación, habréis visto súper rápido que esto se puede hacer con bucles for
anidados.
Para cada fila de la hoja de cálculo vamos recorriendo cada columna y multiplicándola por cada coeficiente del modelo y luego lo sumamos, obteniendo la predicción de la etiqueta para esa fila.
Se podría hacer así y no necesitaríamos álgebra lineal en este punto peeeero es mucho más ineficiente.
Además, cuando tenemos datasets con miles de columnas, o el caso de modelos de deep learning que hay que hacer todo esto para cada neurona, calcular esto tarda muchísimo.
A los ordenadores les gusta mucho más eliminar los bucles for
y utilizar la vectorización.
Es decir, representar nuestro dataset como una matriz, los coeficientes del modelo como un vector y multiplicar.
BAM. Hecho
Pero la cosa no queda ahí, el álgebra lineal y los espacios vectoriales están detrás de la representación de las palabras que se hacen en los modelos del lenguaje a través de embeddings.
Literalmente se representan palabras y su significado semántico a partir de vectores.
Luego tenemos la estadística y probabilidad.
Estas ramas de las matemáticas son importantes porque en el mundo real los datos contienen ruido y variabilidad.
Hay una componente de incertidumbre que impide que los modelos de Machine Learning puedan predecir las cosas de manera exacta.
Conceptos estadísticos como la media, la desviación típica, la mediana, la distribución de los datos nos permiten realizar la exploración y el análisis de unos datos que , como digo, no son exactos sino que tienen una componente de incertidumbre.
El mero hecho del modelado de los datos que se realiza mediante el entrenamiento de los algoritmos de Machine Learning no es más que generalizar el resultado sobre el caso de uso cuando solo tenemos las muestras que tenemos en el dataset de entrenamiento.
Tenemos un dataset con unos cuantos miles de viviendas y nuestro modelo de Machine Learning pretende generalizar la predicción del precio de cualquier vivienda si le dan los datos.
Además, la estadística desempeña un papel crucial en la evaluación y validación de modelos de Machine Learning.
Las propias métricas que se utilizan para medir el rendimiento de los modelos son métricas estadísticas (como el error cuadrático medio, por ejemplo).
Sin olvidar, que muchos algoritmos de Machine Learning se basan en modelos probabilísticos.
Los propios modelos de regresión lineal se basan en el análisis regresivo, que es un concepto estadístico.
Y el tercer pilar matemático del Machine Learning sería el cálculo.
El cálculo multivariable lo vemos en todo su esplendor cuando pensamos en el proceso de aprendizaje de un modelo.
Bien.
Tenemos nuestro dataset y nuestro modelo y a partir de esto obtenemos una predicción de las etiquetas, que es nuestro objetivo.
Entre nuestra predicción y el valor real de nuestra etiqueta hay un error.
Dependiendo del modelo que hayamos escogido para nuestro modelo y el caso de uso tendremos una métrica que querremos optimizar.
Un saludo a los estadísticos del apartado anterior y a sus métricas 👋
El proceso de aprendizaje no es más que ir ajustando de manera iterativa los coeficientes del modelo de manera que la métrica que hemos elegido (o que en su defecto, los ninjas de la estadística definieron para nuestro modelo en su momento) se vaya optimizando.
Tal vez os suene el algoritmo del descenso del gradiente.
Pues aquí es donde aparece el cálculo.
Este algoritmo es capaz de calcular de manera iterativa un mínimo de la función de coste.
Es decir, el punto en el que nuestra métrica es óptima o el error de nuestro modelo es menor.
Funciona de manera similar a si quisierais bajar una montaña con una venda en los ojos.
Aquí la montaña es el error de nuestro modelo, que queremos optimizar haciéndolo lo más pequeño posible..
Así que queremos llegar al punto más bajo de nuestra montaña/error con los ojos cerrados y paso a paso.
Haremos lo siguiente:
El gradiente no es más que la derivada parcial de la función de coste con respecto a cada uno de los parámetros del modelo.
Ahí es donde entra el cálculo multivariable.
La mayoría de las veces será calcular la derivada parcial de una función lineal para poder ir actualizando los coeficientes del modelo durante el proceso de optimización.
Lo que viene siendo la parte de aprendizaje de los modelos.
Una vez que ya empezamos a entender cómo va encajando el puzzle podemos profundizar más en la teoría matemática que hay detrás si es necesario.
Podemos investigar por qué cada modelo de Machine Learning optimiza la función de coste que optimiza y de qué hipótesis salen todas esas ecuaciones.
Y con todos esos conocimientos matemáticos podremos leer artículos de investigación y entender el potencial y limitaciones de los últimos avances.
Incluso podréis dedicaros a la investigación y ser vosotros mismos quienes hagáis avanzar todo esto, si es lo que os llama más la atención.
Porque en la investigación en ciencia de datos e Inteligencia Artificial, ahí sí que las matemáticas son un superpoder.
La conclusión es básicamente que no os dejéis intimidar por la gente que dice que si no tienes nivel alto de matemáticas no podéis convertiros en ninjas de los datos.
Aquí el rollo va sobre datos y como ninjas de datos pasaréis más tiempo explorando, visualizando y comprendiendo datasets que resolviendo ecuaciones diferenciales.
Igual se da el caso alguna vez, si tenéis que implementar alguna métrica muy particular a vuestro caso de uso y no os vale con las métricas habituales.
Eso sí, implementar al menos una vez los modelos desde cero, ya sea una regresión lineal o una red neuronal, y entender la base matemática que hay detrás es lo que os ayudará a entender realmente cómo funcionan.
Igual no empecéis por ahí, pero tampoco os saltéis ese paso.
Espero que el episodio de hoy os sea de provecho y que aprendáis algo de valor.
Si es así, no olvidéis dejar una valoración de 5 estrellas del podcast en Apple podcasts, en Spotify, en Ivoox o donde quiera que escuchéis el podcast.
Recordad que si tenéis cualquier duda o pregunta podéis contactar conmigo a través del formulario de contacto o podemos seguir la conversación en Twitter.
Muchas gracias por estar ahí y os espero en el próximo episodio de Un Podcast Ninja sobre Big Data.