Programa del curso
Descripción general
Este curso introduce a estudiantes de ciencias sociales en los fundamentos de la Inteligencia Artificial y el Machine Learning usando R. Se cubren conceptos básicos, aprendizaje supervisado y no supervisado, análisis de texto y modelos de lenguaje extensos (LLMs). El enfoque es aplicado, priorizando la intuición y el uso de herramientas computacionales sobre la teoría matemática.
Objetivos
Al finalizar el curso, los estudiantes podrán:
- Comprender los conceptos fundamentales de IA, Machine Learning y Deep Learning
- Aplicar algoritmos de clasificación y regresión para resolver problemas de investigación social
- Implementar técnicas de aprendizaje no supervisado y análisis computacional de texto
- Evaluar críticamente las capacidades y limitaciones de los LLMs como herramientas de investigación
- Analizar las implicancias éticas, sesgos y desafíos de equidad en el uso de sistemas de IA
Público objetivo
Estudiantes de grado y posgrado de ciencias sociales con conocimientos básicos de métodos de investigación y manejo intermedio de R. No se requiere conocimiento previo de Python ni de matemáticas avanzadas.
Modalidad
Presencial. El curso se dicta en un formato intensivo de 20 horas totales (5 días, 4 horas por día). Cada jornada se divide en dos sesiones de 2 horas que combinan exposición teórica con laboratorios prácticos en R, donde aplicaremos los métodos discutidos a datos reales.
Contenido por día
Día 1: Fundamentos de IA y Machine Learning
Sesión 1.1: ¿Qué es la Inteligencia Artificial?
- Definición de IA, historia (de la IA simbólica al deep learning)
- Tipos de aprendizaje: supervisado, no supervisado, refuerzo
- Ética básica y contexto actual
Sesión 1.2: Fundamentos de Machine Learning
- Flujo de trabajo: datos, entrenamiento, evaluación
- División train/test y validación cruzada
- Sobreajuste, compromiso sesgo-varianza y métricas de evaluación
- Reproducibilidad en ML
Laboratorio 1: Primer flujo de trabajo con tidymodels
- Configuración de RStudio y primer flujo de trabajo con
tidymodels
Laboratorio 2: Exploración avanzada y comparación de modelos
- Feature engineering, comparación de modelos (logística, árboles, KNN)
Día 2: Aprendizaje supervisado
Sesión 2.1: Métodos de clasificación
- Regresión logística, árboles de decisión y Random Forests
- Aplicaciones: predicción de comportamiento político y social
Sesión 2.2: Regresión y predicción
- Predicción vs. explicación en ciencias sociales
- Regularización: LASSO, Ridge, Elastic Net
- Ingeniería de variables para datos sociales
Laboratorio 3: Clasificación avanzada con Latinobarómetro
- Random Forest con tuning de hiperparámetros, XGBoost
- Interpretación con VIP y Partial Dependence Plots
Laboratorio 4: Regresión y regularización
- Regresión lineal, LASSO, Ridge y Elastic Net con
glmnet - Comparación de modelos de regresión y selección de variables
Día 3: Aprendizaje no supervisado y análisis de texto
Sesión 3.1: Clustering y reducción de dimensionalidad
- K-means y clustering jerárquico
- Evaluación de clusters: método del codo y coeficiente de silueta
- PCA: componentes principales, loadings y biplot
- Aplicaciones: tipologías de países y actores políticos
Sesión 3.2: Análisis computacional de texto
- Tokenización y preprocesamiento de texto
- Bag-of-words y TF-IDF
- Análisis de sentimiento con diccionarios
- Topic Modeling (LDA)
Laboratorio 5: Clustering y PCA
- Segmentación de países latinoamericanos con indicadores del Banco Mundial
- K-means y clustering jerárquico con evaluación (codo, silueta)
- PCA e interpretación de componentes con biplot
Laboratorio 6: Análisis de texto
- Tokenización y limpieza de discursos políticos con
tidytext - TF-IDF para identificar vocabulario distintivo por tema y país
- Análisis de sentimiento con diccionarios de valencia
- Síntesis: combinar las dos lentes (de qué habla vs. cómo lo dice)
Día 4: Modelos de lenguaje extensos (LLMs) y aplicaciones
Sesión 4.1: Entendiendo los LLMs
- La gran idea: predicción del próximo token
- Tokens, embeddings contextuales y ventana de contexto
- Atención y arquitectura transformer
- Escala, emergencia, alucinaciones y el ecosistema actual
Sesión 4.2: LLMs como herramientas de investigación
- Caso completo: el abogado y los seis casos fantasma
- Cuatro defensas: buenos prompts, salida estructurada, RAG, validación
- Anotación automática, datos sintéticos y comparación con métodos clásicos
- Acceso desde R: OpenRouter, Ollama y el paquete
ellmer
Laboratorio 7: Primeros pasos con ellmer
- Configurar
ellmercon OpenRouter (alternativa local con Ollama) - System prompts, zero-shot y few-shot
- Clasificación de textos políticos y comparación con LDA del Día 3
Laboratorio 8: Codificación y confiabilidad con LLMs
- Codificar texto con
quallmer: diseñar un codebook y medir en escala de intervalo - Validar contra códigos humanos (
qlm_validate) y medir confiabilidad (qlm_replicate,qlm_compare) - Auditoría de sesgo con un LLM como codificador y generación de datos sintéticos de encuesta
Día 5: Modelos locales, ética y cierre
- Modelos de pesos abiertos y por qué la ciencia los necesita
- Cuantización: cómo entra un LLM en una laptop
- Ollama desde la terminal y desde R
- Modelos locales en la investigación: datos sensibles, corpus grandes, reproducibilidad
Sesión 5.2: Ética y regulación
- Tipos de sesgo y casos en América Latina
- Métricas de equidad y el teorema de imposibilidad
- Privacidad y datos sensibles: Ley 18.331 (Uruguay) y GDPR
- Regulación: EU AI Act y legislación latinoamericana
Laboratorio 9: Modelos locales y auditoría de equidad
- Codificar entrevistas sensibles (simuladas) con
quallmery un modelo local - Validar contra un gold standard humano y mejorar el codebook
- Auditar un modelo de crédito con
fairmodels: regla del 80%, métricas por grupo y mitigación
Sesión 5.4: Mini-propuestas de investigación
- Integración de IA en el flujo de investigación
- Estructura de una mini-propuesta: pregunta, datos, técnica, evaluación y consideraciones éticas
- Taller: cada estudiante (individual o en parejas) diseña una mini-propuesta aplicando una técnica del curso a una pregunta de ciencias sociales relevante para América Latina
- Discusión y cierre del curso
Software necesario
Los estudiantes deben tener instalado antes del inicio del curso:
- R (versión 4.3 o superior)
- RStudio (versión 2022.07 o superior, que ya incluye Quarto)
- Ollama, para ejecutar modelos de lenguaje en la propia computadora (Día 4)
- Una cuenta gratuita en OpenRouter con una clave de API (Día 4)
Instrucciones de instalación
Paso 1: Instalar R desde https://cran.r-project.org/. Elijan la versión correspondiente a su sistema operativo (Windows, macOS o Linux) y sigan las instrucciones del instalador.
Paso 2: Instalar RStudio desde https://posit.co/download/rstudio-desktop/. RStudio es el entorno de desarrollo que usaremos en el curso. Las versiones recientes ya incluyen Quarto, que necesitaremos para los laboratorios.
Paso 3: Abrir RStudio y ejecutar el siguiente código en la consola para instalar todos los paquetes necesarios:
install.packages(c(
# Núcleo
"tidyverse", "tidymodels",
# Día 2: clasificación, regresión y regularización
"ranger", "xgboost", "glmnet", "kknn",
"rpart", "rpart.plot", "broom", "vip", "pdp", "patchwork",
# Día 3: clustering, PCA y análisis de texto
"cluster", "factoextra", "dendextend", "corrplot",
"tidytext", "topicmodels", "tm", "ggwordcloud",
# Día 4: modelos de lenguaje (LLMs)
"ellmer", "jsonlite", "pak", "usethis",
# Día 5: auditoría de sesgo algorítmico
"fairmodels", "DALEX"
))El paquete quallmer (Día 4) no está en CRAN, así que se instala desde GitHub con pak (que acaban de instalar en el bloque anterior):
pak::pak("quallmer/quallmer")La instalación puede tomar unos minutos. Si aparecen errores, asegurarse de tener una conexión a internet estable y de estar usando una versión reciente de R (4.3 o superior).
Paso 4: Para verificar que todo funciona, ejecutar:
library(tidyverse)
library(tidymodels)
cat("Todo listo para el curso!")Si ambos paquetes se cargan sin errores, la instalación fue exitosa.
Paso 5: Instalar Ollama y descargar el modelo local. En los Días 4 y 5 vamos a ejecutar modelos de lenguaje directamente en la computadora, sin enviar datos a internet.
- Descargar Ollama desde https://ollama.com/download e instalarlo siguiendo las instrucciones para su sistema operativo
- Abrir una terminal y descargar el modelo que usaremos en clase. En Windows, buscar “Símbolo del sistema” o “PowerShell” en el menú de inicio; en macOS, abrir “Terminal” (está en Aplicaciones → Utilidades, o buscándola con Spotlight con
Cmd + Espacio); en Linux, abrir la aplicación “Terminal” (en muchas distribuciones, conCtrl + Alt + T). Una vez en la terminal, ejecutar:
ollama pull granite4.1:3bEs IBM Granite, un modelo abierto (licencia Apache 2.0) optimizado para salida estructurada en JSON y con buen soporte multilingüe. Es el que usamos para codificar texto en los laboratorios y las tareas. Ocupa unos 2,1 GB.
- Para verificar que el modelo quedó descargado, ejecutar
ollama list. Debería aparecer en la lista de modelos instalados:
ollama list- Para comprobar que el modelo responde, ejecutar en la terminal:
ollama run granite4.1:3bEscribir una pregunta cualquiera y, para salir, escribir /bye. Mientras Ollama esté instalado y abierto, R podrá conectarse al modelo durante el laboratorio.
Clave de API de OpenRouter
Para el Día 4 también usaremos modelos en la nube a través de OpenRouter, un servicio que da acceso a muchos modelos con una sola cuenta. Tiene modelos gratuitos, así que no hay que pagar nada para el curso.
Paso 1: Crear una cuenta gratuita en openrouter.ai. Basta con un correo electrónico.
Paso 2: Ir a openrouter.ai/keys y generar una clave nueva (“Create Key”). Ponerle un nombre (por ejemplo, “Curso IA”) y dejar el límite de gasto en $0.00.
Paso 3: Copiar la clave y guardarla en un lugar seguro. Empieza con sk-or-... y se muestra una sola vez.
Paso 4: Guardar la clave en R como variable de entorno, para no tener que escribirla en cada script. En la consola de RStudio, ejecutar:
usethis::edit_r_environ()Esto abre un archivo personal llamado .Renviron. Agregar esta línea (sin comillas), reemplazando el ejemplo por la clave propia:
OPENROUTER_API_KEY=sk-or-...
Guardar el archivo y reiniciar R (menú “Session” → “Restart R”). Para comprobar que quedó bien configurada, ejecutar:
Sys.getenv("OPENROUTER_API_KEY") != "" # TRUE si está bienNunca pegar la clave directamente en un script que se sube a GitHub. Guardarla siempre en .Renviron, como muestra el Paso 4