11/11/2020

Motivación

  • Uno de los objetivos de DS es predecir alguna variable de interés.

  • Dado lo que vimos en la clase pasada, podemos utilizar regresión lineal como una herramienta de predicción.

  • Pensemos el siguiente modelo lineal que intenta explicar el crecimiento de las ventas.

Los datos

Regresión

Evaluar Predicciones

Raíz del error cuadrático medio

\[RMSD =\sqrt{\frac{\sum_{t=1}^T(\hat{y}_t-y_t)^2}{T}}\]

Media absoluta del error \[MAE=\frac{\sum_{i=1}^N|\hat{y}_t-y_t|}{n}\]

Para nuestro caso

Raíz del error cuadrático medio

Media absoluta del error

En la realidad…

  • Predecir los valores “fuera de muestra” es siempre un desafío, porque:

  • Las predicciones tienden a ser bastante diferentes a lo que pasa en la muestra.

  • Esto es lógico, ya que se generó la predicción a partir de la muestra.

Validación Cruzada

Validación Cruzada

Revisaremos dos métodos:

  • Leave one out (LOO).

  • K-folds.

Pero primero es fundamental introducir una noción básica de los procesos iterativos (control flow).

Procesos iterativos (Control flow)

Al trabajar en DS, muchas veces necesitaremos repetir algún proceso: un cálculo, la creación de alguna variable o generar una base consolidada a partir de bases más pequeñas.

La generación de este proceso en general va a estar condicionada a algún parámetro o característica de los objetos que estemos trabajando.

Automatizar estos procesos nos permite realizar esto de forma más eficiente que realizando de forma manual. A veces nos permite realizar tareas que de forma manual serían imposible (Ej: LOO)

Procesos iterativos (Control flow)

En general, la estructura de las funciones será similar:

# funcion(condición){acción}

# funcion(condición){acción 1 ; acción 2}

# funcion(condición){acción 1
#                    acción 2}

La(s) acción(es) se realiza(n) solo si se cumple la condición(es).

El cómo se realiza la acción, esta dado por el tipo de función.

IF

Si se cumple la condición se realiza una acción.

# if(condición){acción}

FOR

Para cada elemento del conjunto se realizará la acción que le precede.

La “condición” es ser parte del conjunto.

# for(elemnto en un conjunto){acción}

Validación Cruzada

La lógica detrás de la validación cruzada es poder testear el “como sería” nuestro modelo con datos que no están en la muestra.

En esencia, ambos métodos que revisaremos aquí, tienen la misma estructura:

  • Dividir la muestra disponible en N partes.
  • Utilizar N-1 submuestras para correr el modelo (entrenamiento) y la restante para probar que tan bien predice nuestro modelo (test).
  • Realizar este proceso iterativamente para cada una de las N partes, es decir, cada N debe ser usado una vez para predecir.

La utilidad de este método es que nos permite comparar modelos en términos predictivos.

Validación Cruzada: Leave One Out

La estructura de este método es la siguiente:

  • Dividir la muestra disponible en 2 partes, una tiene N-1 observaciones y la otra una observación.
  • Utilizar la muestra con N-1 observaciones para correr el modelo (entrenamiento) y la observación restante para probar que tan bien predice nuestro modelo (test).
  • Realizar este proceso iterativamente para cada una de las N observaciones de la base de datos.

Para bases de datos muy grandes, este método tiene un costo computacional altísimo.

Validación Cruzada: K-folds

La estructura de este método es la siguiente:

  • Dividir la muestra disponible aleatoriamente en k submuestras, cada una de las k submuestras debe tener similar número de observaciones.
  • Utilizar k-1 submuestras para correr el modelo (entrenamiento) y la submuestra restante para probar que tan bien predice nuestro modelo (test).
  • Realizar este proceso iterativamente para cada una de las k submuestras.

En general, la literatura recomienda usar k=5 o k=10.

Laboratorio 9

En primer lugar, programaremos nuestra propia validación cruzada(CV) con las herramientas vistas en el curso más, lo que revisamos esta clase de procesos iterativos.

Posteriormente utilizaremos las bondades del paquete “caret”, para realizar CV. Las funciones a utilizar son las siguientes:

  • trainControl(): Nos permite elegir el tipo de validación cruzada y utilizarlo como argumento de la función train(). Argumentos:
    • method: método de CV a utilizar. Para kfolds method=“cv” y para LOO method=“LOOCV”.
    • number: En los métodos k folds y relacionados, nos permite elegir el número de submuestras (valor de k)

Laboratorio 9

  • train(): Nos permite realizar CV, dadas las opciones que seteamos en el objeto creado a partir de la función trainControl(). Argumentos:

    • formula: modelo (misma sintaxis que para regresión lineal)
    • data: base de datos
    • method: tipo de modelo a evaluar, para regresión lineal method=“lm”.
    • trControl: se inserta el objeto creado con trainControl().