¿Has escuchado hablar del aprendizaje supervisado en data mining? Si te interesa el mundo del Big Data, es posible que en algún momento te hayas encontrado con este concepto. En este artículo, profundizamos en él para que comprendas de manera más exacta qué es el aprendizaje supervisado en data mining.
¿En qué consiste el aprendizaje supervisado en data mining?
En el aprendizaje supervisado en data mining, el algoritmo creará una función a partir de ejemplos. Este proceso se llama entrenamiento, que es donde el algoritmo aprende. Cuando le damos datos nuevos, una función entrenada nos dará el resultado correcto.
El aprendizaje supervisado en los niños es simple: con un par de instrucciones, un conjunto de datos adecuado y algunas técnicas de aprendizaje, la exactitud de sus predicciones cotidianas es increíble. Con el machine learning es distinto, ya que las máquinas aprenden lenguaje automático más lentamente y necesitan miles de ejemplos y de algoritmos de aprendizaje supervisado para poder hacer predicciones precisas.
¿Has escuchado hablar alguna vez del juego Puppy or food? Este juego consiste en descubrir si la imagen que ves es una mascota o si es comida. Parece mucho más fácil de lo que es y está basado en la misma lógica de aprendizaje supervisado.
A modo de ejemplo
Primero, debes recordar lo que era una regresión lineal en estadística: un modelo matemático usado para aproximar la relación de dependencia entre una variable dependiente Y, las variables independientes X, y un término aleatorio E. Este modelo puede expresarse como:
Un modelo de aprendizaje supervisado va a aprender de unos ejemplos que le pasemos de la forma más general posible. Así, la próxima vez que le mostremos datos nuevos dará un resultado confiable.
In [1]: Library("dslabs")
Vamos a simular que soltamos un objeto desde lo alto de la torre de Pisa (55.86m) y medimos la distancia hasta al suelo que ese objeto presenta pasados t segundos.
Evientemente, nuestras medidas tendrán un error, por eso vamos a tomar varias medidas y repetir el experimento varias veces.
In [2]: data train<-rfalling_object(n = 10) [c("time", "observed distance")]
head(data_train)
Aquí se presentan datos de un elemento que cae desde la torre de Pisa.
In [3]: data_train<- rbind(data_train, rfalling_object (n = 5) [c("time", "observed distance")])
data traine-rbind(data_train, rfalling_object (n = 7) [c("time", "observed distance")])
data_train<-rbind(data_train, rfalling_object (n =20) [c("time", "observed distance")])
Tenemos, pues, en data train, un montón de objetos que hemos medido en diferentes periodos de tiempo. El rfalling_object lo que hace es generar n muestras (en este caso 10) haciendo las simulaciones en las que se tira este objeto desde la torre de Pisa.
Así pues, se hacen distintas simulaciones y, en la anterior imagen, se ven los datos resultantes.
Lo que haremos a continuación es pintar los datos. Por tanto, cargamos la librería ggplot2, ponemos tamaño de fuente en las imágenes con height y width y pintamos el data train, es decir, pasamos el data train que queremos ver y luego le decimos las coordenadas. En la coordenada X va el tiempo y en la coordenada Y va la distancia (observed distance):
In [9]: library(ggplot2)
options(repr.plot.height=6, repr.plot.width=8)
ggplot(data_train, aes(x-time, y-observed distance) )+geom_point (color="blue")
El resultado final será este:
Con ggplot2 también se pueden crear regresiones lineales:
In [10]: ggplot(data_train, aes(x-time, y-observed_distance) )+geom point (color='blue')+geom_smooth (method=lm', color="red")
geom_smooth() using formula ‘y-x’
El resultado nos añade una línea roja al gráfico que ya habíamos creado:
Si lo que se quiere es averiguar la distancia a la que está el objeto en función del tiempo, esto sería aprendizaje supervisado, ya que lo que se pretende es enseñarle a la máquina a hacer predicciones a partir de unas variables que ya le hemos dado.
Este procedimiento se puede realizar con una regresión lineal:
In [12]: model<-lm (formula=observed_distance~time, data=data_train)
summary (model)
In [13]: confint (model)
En este caso, estamos tratando de mejorar el error cuadrático medio.
Queremos minimizar la función de error.
In [ ]: sqrt(mean((data_train$observed_distance-model$fitted.values)^2))
La próxima vez que tengamos datos nuevos, podremos realizar una estimación del resultado esperado.
In [ ]: data_test<- data.frame(time=c(1,3,5))
Ten en cuenta que el modelo solo puede generalizar cuando los datos son parecidos a los que hemos visto. Aquí, el modelo falla en predecir que una vez que el objeto toca el suelo no va a seguir cayendo.
Si quieres seguir aprendiendo sobre aprendizaje supervisado y otras temáticas relacionadas con el data mining, te invitamos a seguir nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp. Con esta formación íntegra e intensiva, en pocos meses puedas incursionar en el mundo laboral siendo todo un experto. ¡Te estamos esperando!