- Introducción
- Contexto
- Objetivo
- Temario
- Recursos
- Horarios
- Evaluación
- Ambiente de trabajo
- Tareas
- ¿Dudas?
- Contribuidores
- Bibliografía
Este es el repositorio con el contenido del curso en Modelación Bayesiana de la maestría en ciencia de datos. También puede ser ofrecida de manera simultánea para alumnos avanzados en las licenciaturas de matemáticas aplicadas, ciencia de datos y actuaría.
Our goal is
not to eliminate uncertainty
, but to understand and quantify the uncertainty in order to make sound decisions. —Netflix Tech Blog
A previous acquaintance with probability and statistics is not necessary; indeed, a certain amount of innocence in this area may be desirable, because there will be less to unlearn. —Jaynes, 2003.
Probability theory is nothing but common sense reduced to calculation. —Laplace, 1819.
Este es el curso EST-46115: Temas Selectos de Estadística
. Lo conoceremos como
Modelación Bayesiana
y corresponde al segundo semestre de la Maestría en Ciencia
de Datos.
En este curso se verán temas avanzados en la visualización, simulación y diagnóstico de modelos bayesianos para: inferencia, análisis de potencia y calibración de procedimientos estadísticos. Se estudiará un flujo de trabajo bayesiano que permite validar y evaluar hipótesis. Se introducirán algunos modelos modernos utilizados en distintas áreas como: modelos predictivos, selección de variables y sistemas de recomendación. El material se complementará con algunos podcasts y lecturas de artículos de divulgación e investigación a lo largo del curso.
El temario para el semestre de primavera 2022 se puede encontrar aqui. Este es un plan preliminar que está sujeto al avance del curso a lo largo del semestre.
En esta iteración del curso se estudiarán las bases algorítmicas
de la
inferencia bayesiana (métodos de simulación por cadenas de Markov) así como los
diagnósticos
pertinentes. De igual manera estudiaremos un flujo de trabajo
basado en calibración y simulación para poder identificar rutas potenciales de
mejora en nuestros modelos y revisaremos principios basados en el método
científico. El curso continuará con métodos de inferencia aproximada
que han
dado lugar a aplicaciones del estado de arte como sistemas de recomendación o
análisis de texto.
El curso está planeado alrededor de tres temas centrales:
- Cómputo probabilístico.
- Flujo de trabajo Bayesiano.
- Modelación predictiva probabilística.
El contenido actual del curso se encuentra en la rama: spring-2023. La estructura del repositorio se muestra a continuación donde a grandes razgos tenemos:
.
├── docs # Handouts con las notas de clase (pdf).
├── images # Material visual de apoyo (png).
├── modelos # Directorio con los modelos que usaremos en el curso (stan).
├── notas # Material fuente de las notas (emacs).
├── renv # Archivos de estructura de ambiente (R).
└── rscripts # Codigo de R para interactuar con Stan (R).
6 directories
El curso será los días Lunes y Miércoles en el horario de 17:30 a 19:00 horas.
El curso será completamente presencial
. Por otro lado, salvo se indique lo
contrario, las evaluaciones serán presenciales
.
Utilizaremos este LMS para gestionar la comunicación fuera de los horarios de clase. Asimismo, ahi tendrán acceso al calendario y las sesiones de zoom que se necesiten a lo largo del semestre.
- 6 de Febrero no hay clase.
- 20 de Marzo no hay clase.
- 3 y 5 de Abril no hay clase.
- 26 de Abril último día de bajas.
- 1 de Mayo no hay clase.
- 10 de Mayo última clase.
El horario de atención a alumnos será Lunes y Miércoles en un horario de 12:00pm
a 2:00pm. Recomiendo utilizar el sitio de calendly. Por supuesto, si no les
queda algún horario podemos agendar por correo electrónico
.
Importante
: les estoy proporcionando la facilidad de agendar con plena libertad las
sesiones de asesoría. Consideren que al ustedes agendar una reunión están privando ese espacio a
alguien mas en mis cursos. Asi que por favor no desperdicien ese espacio.
La evaluación del curso será por medio de:
- Participación y tareas (30%)
- Evaluaciones parciales (30%)
- Evaluación final (40%)
Trabajo basado en un paper, método, modelo, aplicación relacionado con la temática de la clase. Entregables:
- Presentaciones de Seguimiento (25%),
- Reporte escrito (50%)
- Presentación final (25%).
El curso puede ser seguido en Python, Julia, etc (básicamente cualquier lenguaje de scripteo con interface a Stan
). El curso utilizará
Stan como lenguaje para definir y ajustar modelos bayesianos (tanto
asintóticamente correctos, como aproximados). En particular utilizaré la
interfase de R por medio de cmdstanr
pero de igual manera son bienvenidos en
utilizar la interfase de python o la que les acomode$^†$.
Como herramienta de trabajo se sugiere utilizar Rstudio
Visual Studio Code para
poder trabajar en sus proyectos y sus tareas. En particular, el material de
clase es editado en GNU Emacs a través de orgfiles
(archivos de texto plano con sufijo .org
) pero pueden ser visualizados en Github
.
Nota: Si van a utilizar R
se recomienda tener instalada la versión 4.2.1
para
tener la mejor compatibilidad con el código del curso.
Utilizaremos renv
para mantener actualizada las herramientas de R
junto con el
contenido del curso. En la carpeta principal se encuentran los archivos de
requerimientos (renv.lock
) con el que podrán usar los archivos que se vayan
decantando en la carpeta rscripts
. Aún asi, la configuración se irá refinando
en los ejercicios de tarea que vayamos utilizando en el curso.
Si utilizas MacOS
o alguna distribución Linux
se recomienda escribir en el
archivo ~/.Renviron
la siguiente línea lo cual mantendrá el cache de renv
en un
lugar centralizado y de fácil acceso:
RENV_PATHS_ROOT=~/.renv
Las imágenes de agarbuno/bayesiana
(puedes ver imágenes en mi hub de Docker
aqui, y/o los
Dockerfiles
aqui) permiten tener un ambiente para trabajar con
Docker
en nuestro curso.
Mi idea de ambiente computacional es el que se puede reproducir en cualquier
sistema operativo. Para esto Docker
es la herramienta ideal y el uso de los
Codespaces
de GitHub ha resultado increíble para una solución dentro de un
ámbito educativo.
Para la imagen agarbuno/bayesiana
consideren que:
- El tag
notas
basado en una distribución linux en una emulación con un procesadorIntel
, tiene la configuración mínima necesaria para poder reproducir el ambiente de cómputo para poder ejecutar el material del curso.
La idea es que si usamos el combo Docker
+ Visual Code Studio
, entonces ¡tod@s tenemos la misma computadora para trabajar! 🥲.
Y si lo quieren correr en la nube entonces: Docker
+ Visual Code Studio
+ Github Codespaces
🥲 $× 1078$.
Importante
: Si espero que sepan reproducir ustedes la configuración del ambiente de
trabajo. Parte del curso contemplará organizar una sesión para discutir esto a profundidad.
De momento, lo importante es que lo sepan utilizar en su computadora o en un explorador de internet.
Esto es, que pueden utilizarlo para las prácticas del curso.
Esta imagen provee de un ambiente donde se podrán instalar las paqueterías que utilizaremos sin ningún problema$^†$. La idea, adicional, es que utilicemos volumes para poder tener permanencia en nuestro trabajo.
El contenedor se podrá levantar sin ningún problema por medio de la siguiente serie de instrucciones en terminal (también se puede establecer un script de shell).
# Ruta del cache de renv en el contenedor
RENV_PATHS_CACHE_CONTAINER=/home/rstudio/.renv
# Ruta del cache de renv en tu maquina
RENV_PATHS_CACHE_HOST=~/.renv/cache
# Ruta donde guardes los clones de las tareas
PATH_TRABAJO_HOST=<ruta hacia las carpetas de los repos de tareas>
docker run -p 8787:8787 \
-e PASSWORD=<contraseña de tu preferencia> \
-e "RENV_PATHS_CACHE=${RENV_PATHS_CACHE_CONTAINER}" \
-e "RENV_PATHS_ROOT=${RENV_PATHS_CACHE_CONTAINER}" \
-v "${RENV_PATHS_CACHE_HOST}:${RENV_PATHS_CACHE_CONTAINER}" \
-m 6g \
-v "${PATH_TRABAJO_HOST}:/home/rstudio/documentos" \
agarbuno/bayesiana:<tag>
La imágen de Docker para el ambiente de RStudio está basada en la imagen de rocker/verse de los desarrolladores en el Proyecto de Rocker con las siguientes herramientas agregadas para la materia de modelación bayesiana:
Para instrucciones de uso, se sugiere seguir la Documentación de Rocker
Un ejemplo de como construir y correr este contenedor sería lo siguiente. En un terminal, dentro del folder del repo, correr la siguiente línea
docker build --tag bayesiana:notas .
El contenedor lo podemos despertar con
docker run -e PASSWORD=qwerty -p 8787:8787 --rm bayesiana:notas
Para vistarlo basta con utilizar la ruta localhost:8787
en cualquier browser de
internet y utilizar la contraseña especificada. Se puede agregar la bandera de
-v
si se quiere acceder a un folder local. Mas información de volúmenes se
pueden encontrar en la documentación.
Las primeras tareas del semestre son básicamente configuración y es recomendable
hacerlas si no cuentan con experiencia en: Git
, Github
, R
y el tidyverse
.
Las tareas las gestionaremos a través de Github Classroom
lo cual me permite
administrar sus entregas como proyectos de Git
. Además, habrá ejercicios de las
tareas que tendrán mecanismos de calificación automatizada.
AdrianTJ (ambiente en Docker
).
\nocite{*} bibliographystyle:abbrvnat bibliography:references.bib