Usando el dataset penguins
del paquete palmerpenguins
queremos crear un modelo que permita estimar el largo del pico conociendo el peso de los pinguinos. En principio vamos a trabajar sólo con los pinguinos de la especie Gentoo.
Antes de empezar a construir el modelo, grafiquen! Hagan un scatter plot del largo del pico en función del peso para los pinguinos Gentoo.
El primer paso es la representación o especificación del modelo. Es decir, definir cómo se relacionan las variables largo de pico y peso según el modelo. En este caso vamos a usar una función lineal. ¿Tiene sentido proponer este modelo de acuerdo a cómo se ven los datos en el gráfico que hicieron?
Aunque este problema se puede resolver con la función ´lm()´, entre otras, en este caso vamos a hacer explícitos los tres pasos que requiere el modelado.
a- Crear una función que tenga como inputs la ordenada al origen, la pendiente y el peso, y como output el largo del pico estimado por el modelo.
b- El siguiente paso es la evaluación. Es decir, dado un modelo con sus parámetros, queremos conocer una medida del ajuste del modelos a los datos. Para eso vamos a crear una función que tenga como inputs la variable a explicar (largo del pico) y las predicciones del modelo. La llamamos función de pérdida (fun_loss
) y en este caso queremos que devuela la raiz cuadrada del error cuadrático medio (RMSE). Noten que la función de pérdida podría ser otra.
c- Por último, la optimización. Es decir, cómo vamos a encontrar los parámetros que minimizan la función de pérdida. En este caso vamos a usar un método de optimización aleatoria. Es decir, queremos una función que:
(a,b)
y un rango inicial de cada parámetro.(a,b)
y si no achico la region de busqueda.Mas detalles en el apunte y videos de Andres Farall. El factor de reduccion y la tolerancia pueden estar definidas por defecto en la funcion. Por ejemplo, ´0.95´ y ´1e-10´ respectivamente. Tenga en cuenta que esta función tiene que llamar a las otras dos funciones creadas anteriormente.
d- Usando las 3 funciones creadas, armar un script que cargue los datos, ajuste el modelo, devuelva los parametros optimos y grafique los datos y la recta estimada por el modelo.
e- ¿Les dio una recta razonable? ¿Cómo están seguros de que el método está convergiendo? Repitan el proceso anterior pero modifiquen las funciones para guardar en cada iteración aleatoria el valor de los parámetros (ordenada al origen y pendiente) y la función de pérdida. Grafiquen. Vean qué pasa si empiezan muy lejos de los valores óptimos. Comparen, por ejemplo, empezar la búsqueda por \(y=1+0~x\) o con \(y=26+0~x\). ¿LLegan al mismo resultado?
f- Otro test del proceso de optimización. Si repiten el proceso de optimización aleatoria empezando con los mismos valores iniciales, ¿llegan a la misma solución? Una propiedad importante de un método de optimización es que los parámetros óptimos que encuentra el método no sean casuales Para estudiar esto, repitan el proceso de optimización 100 veces y hagan una descripción de los parámetros estimados. Pueden hacer un histograma de a
y de b
. Estudien nuevamente si los valores estimados dependen de los valores iniciales para a
y b
.
g- ¿Cuál es el método de optimización que usa la función lm
? Comparen los parámetros estimados con el método de optimización aleatoria en f- con los que se obtienen con la función lm
. Si el método funciona bien, un histograma de los parámetros estimados con el método de optimización aleatoria debería incluir a los valores estimados con la función lm
.
h- Cambien la función de pérdida por otra que se les ocurra y estudien si los parámetros estimados son compatibles con los que obtuvieron usando como función de pérdida a la raíz cuadrada del error cuadrático medio.
El objetivo de este ejercicio es crear los 3 elementos de la tarea de modelado para reconocer el sexo de los pinguinos de la especie Gentoo conociendo sólo la información del peso.
La idea es encontrar una forma de separar a los pinguinos masculinos y femeninos. Vamos a usar lo siguiente:
Por ejemplo, en la figura de abajo se muestra un ejemplo usando como peso de corte p0 = 5300 gramos.
a- Ustedes tienen que encontrar cuál es el mejor peso de corte p0 y cuál es el error para ese criterio adaptando lo que hicieron en el ejercicio 1 a esta nueva situación.
b- Ahora consideren que pueden usar también el largo del pico. Una posibilidad es dividir al plano con una recta como la de la figura de abajo.
El ejercicio es reemplazar el modelo anterior que usaba sólo el peso por uno que usa también el largo del pico. Es decir:
y > a + b x
es masculino. si no, es femenino.c- ¿Cuánto mejora la clasificación ahora que incluyeron esta otra variable?
d ¿Qué pasaría si la recta óptima es una recta vertical? ¿Cómo podrían modificar el modelo para que incluya también el caso de una recta vertical?