class: middle, inverse background-image: url(media/portadajpg.jpg) background-size: cover --- # Introducción .pull-left[ <img src="media/ImagenIA.jpg" width="790"> ] .pull-right[ <h2 align="justify" style="font-size: 32px;"> Los <b>métodos estadísticos<b> son fundamentales en la <b>inteligencia artificial<b>. Permiten analizar datos, identificar patrones y hacer predicciones. </h2> <h2 align="justify" style="font-size: 32px;"> Hoy exploraremos cómo estos métodos se aplican en diversas áreas de la IA, mejorando la toma de decisiones y la precisión de los modelos. </h2> ] --- # Introducción <h2 align="justify" style="font-size: 28px;font-weight: normal"> La <b>Inteligencia Artificial (IA)</b> es la capacidad de un sistema informático para imitar funciones cognitivas humanas como el aprendizaje y la resolución de problemas. </h2> .center[ <img src="https://i.vas3k.blog/7vw.jpg" width="480" > ] <h2 align="justify" style="font-size: 28px;font-weight: normal"> El <b>Aprendizaje Automático</b> es parte de la inteligencia artificial. Una parte importante, pero no la única. </h2> > [Machine Learning for Everyone](https://vas3k.com/blog/machine_learning/) --- # Aprendizaje automático <h2 align="justify" style="font-size: 30px; font-weight: normal"> Hoy en día existen cuatro direcciones principales en el aprendizaje automático. </h2> .center[ <img src="https://i.vas3k.blog/7vz.jpg" width="600" > ] --- # Aprendizaje automático clásico <h2 align="justify" style="font-size: 28px;font-weight: normal"> Los primeros métodos surgieron de la <b>estadística</b> pura en los años 50. Resolvieron tareas matemáticas formales: buscar patrones en números, evaluar la proximidad de puntos de datos y calcular las direcciones de los vectores. </h2> .center[ <img src="https://i.vas3k.blog/7w1.jpg" width="600" > ] --- # Algoritmos Supervisados Se caracteriza por el uso de conjuntos de datos etiquetados para entrenar algoritmos que clasifiquen datos o predigan resultados con precisión. - El algoritmo necesita que le demos la respuesta correcta (etiqueta). - El algoritmo utiliza estas etiquetas para aprender. - Es útil cuando queremos que la IA realice una tarea a futuro. También se conoce como **análisis predictivo** > Algoritmos populares: regresiones lineales, regresiones polinómiales, Naive Bayes , árbol de decisión , regresión logística , K-vecinos más cercanos , máquina de vectores de soporte. --- # Algoritmos No Supervisados Como contraparte del aprendizaje supervisado, el aprendizaje no supervisado es aquel donde no se conoce la respuesta. - El algoritmo aprende a partir de las variables explicativas sin ninguna variable respuesta observada, lo que le permite determinar los patrones de datos por sí mismo. - Los algoritmos de este tipo de aprendizaje se dejan guiar por sus propios mecanismos para descubrir la estructura de datos. - En el contexto del aprendizaje no supervisado, no existe esa medida directa del éxito. Es difícil determinar la validez de las inferencias extraídas de los resultados de la mayoría de los algoritmos. > Algorimos populares: K-means_clustering , Mean-Shift , DBSCAN, análisis de componentes principales (PCA), descomposición de valores singulares (SVD), asignación latente de Dirichlet (LDA), análisis semántico latente (LSA, pLSA, GLSA), t-SNE (para visualización) --- # ¿Cuál es la diferencia entre clasificar y agrupar? En términos de estructura del problema, - Cuando clasificamos buscamos una relación `\(f(x)\)` tal que mapee `\(x\)` a `\(y\)`, donde `\(y\)` es el target. - Cuando agrupamos buscamos los clústeres `\(c_i\)`, donde `\(x_j \in c_{i}\)`. <center> <img src="media/img1.jpg" width="720" height="350"> </center> --- # En un problema de agrupación, ¿cuál es el output? El output de los algoritmos de agrupación son precisamente, los grupos `\(c_i\)` y la caracterización de cada grupo (las coordenadas del centro) de modo que cada observación pertenezca a un grupo. <center> <img src="media/cluster.jpeg" width="780" height="380"> </center> <h6> Fuente Imagen: www.linkedin.com/company/data-science-dojo </h6> --- class: middle, inverse # 1. Algoritmos Supervisados ## 1.1 Regresión --- # 1.1 Regresión #### Regresión lineal: Este modelo asume una relación lineal entre la variable de respuesta y las variables predictoras. Se supone que los errores de predicción son independientes y siguen una distribución normal. Los parámetros de la regresión lineal son los coeficientes de pendiente y el intercepto. Se puede ajustar a través del método de mínimos cuadrados ordinarios. #### Árbol de regresión: Este modelo utiliza una estructura de árbol para dividir los datos en diferentes regiones. Cada nodo representa una pregunta sobre una variable predictora, y las ramas representan las posibles respuestas. Los árboles de regresión se ajustan dividiendo el conjunto de datos en función de la reducción en la suma de los cuadrados de los errores. Los parámetros incluyen la profundidad máxima del árbol y el criterio de división. --- # 1.1 Regresión #### Suavizamiento Loess: Es un método no paramétrico utilizado para ajustar curvas suaves a los datos. Se basa en la idea de ajustar un polinomio localmente en función de un vecindario de puntos cercanos. El suavizamiento Loess se basa en la suposición de que los datos tienen una estructura subyacente suave. Los parámetros incluyen la ventana de suavizado y el grado del polinomio. #### Random Forest: Este modelo combina múltiples árboles de decisión mediante la técnica de "bagging" (ensamblado). Cada árbol se entrena en una muestra aleatoria de datos y las predicciones se promedian para obtener una predicción final. Random Forest asume que los árboles son débilmente correlacionados y se beneficia de la diversidad de los árboles. Los parámetros incluyen el número de árboles y la cantidad de variables predictoras consideradas en cada división. --- ## Regresión lineal simple * Proporciona técnicas para elaborar una ecuación que exprese la relación lineal entre dos variables. * Estima el valor de la variable dependiente Y con base en un valor seleccionado de la variable independiente X. * Utiliza los datos para trazar una línea que represente mejor la relación entre las dos variables. .center[ <img src="Figuras/formula.png" width="500px"/> ] --- ## Regresión lineal simple .center[ <img src="Figuras/Captura.png" width="550px"/> ] ```r lm(formula, data, subset, weights, na.action, method = "qr", model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE, contrasts = NULL, offset, ...) ``` --- ## Regresión lineal vs correlación .pull-left[ ### Correlación Lineal Cuantifica como se relacionan dos variables. El cálculo es independiente del orden o asignación de cada variable a X e Y, mide únicamente la relación entre ambas sin considerar dependencias. A nivel experimental, se suele emplear cuando ninguna de las variables se ha controlado, simplemente se han medido ambas y se desea saber si están relacionadas. Los estudios de correlación lineal preceden a la generación de modelos de regresión lineal. ] .pull-right[ ### Regresión Lineal Simple Genera una ecuación (modelo) que, basándose en la relación existente entre ambas variables, permite predecir el valor de una a partir de la otra. El modelo varía según qué variable se considere dependiente de la otra (lo cual no implica causa-efecto). Es más común que una de las variables se controle y se mida la otra. Primero se analiza si ambas variables están correlacionadas y, en caso de estarlo, se procede a generar el modelo de regresión. ] --- ### Coeficiente de determinación `\(R^2\)` Es una medida de qué tan bien se ajusta la ecuación de regresión lineal a los datos muestrales. Un ajuste perfecto daría como resultado `\(R^2 = 1\)`. Un menor ajuste se relaciona con un valor de R2 cercano a 0. .center[ <img src="Figuras/r22.png" width="650px"/> ] > Nota: En regresión lineal simple el coeficiente de determinación es igual al coeficiente de correlación al cuadrado. --- ## Prueba de hipótesis ### Pruebas de hipótesis para los parámetros Probar si los parámetros obtenidos son significativos implica comprobar si la variable explica a la respuesta. `$$H_0: \beta_i = 0 \qquad vs.\qquad H_1: \beta_i \neq0$$` Se realizá un test `\(t\)` individual para cada parámetro. Además, se puede obtener los intervalos de confianza de cada uno de ellos. ### Pruebas de hipótesis para la significancia del modelo Probar si al menos uno de los parámetros es significativo. $$ H_0: \beta_1 = \beta_2 = ...\beta_k = 0 \qquad vs.\qquad H_1: Algún \: \beta_i \: \neq0 $$ Se realiza un test `\(F\)` a partir de la tabla ANOVA del modelo. En este caso, se reemplaza la idea de Tratamiento por Regresión. --- ## Residuos Para estimar la ecuación de la recta de regresión utilizamos el método de mínimos cuadrados. Al ajustar cualquier recta a un conjunto de datos existen pequeñas diferencias entre * los valores estimados por la recta * los valores reales observados. Consideramos los residuos, como la diferencia entre el valor real y el valor predicho. O bien, las distancias verticales entre cada punto y la recta. $$ \epsilon_i= y - \hat{y}_i$$ ```r residals() rstudent() fitted() ``` --- ## Diagnósticos del modelo Para que el modelo cumpla las expectativas requeridas, se debe cumplir tres criterios en sus errores: * **Normalidad**: Se espera que los errores tengan distribución normal, con media 0 y cierta varianza. * **Independencia**: Los errores deben ser independientes entre si. * **Homocedasticidad**: Los errores deben tener una dispersión constante en cualquier instante de la variable. --- ## Diagnósticos del modelo .center[ <img src="Figuras/plot2.png" width="650px"/> ] --- ## Diagnósticos del modelo #### Distribución normal de los residuos .center[ <img src="Figuras/qqplot2.png" width="550px"/> ] ```r shapiro.test(residuos) car::qqPlot(residuos) ``` --- ## Diagnósticos del modelo ### Varianza constante (homocedasticidad) .center[ <img src="Figuras/homo.png" width="550px"/> ] ```r lmtest::bptest(modelo) ``` --- ## Valores atípicos y de alta influencia .center[ <img src="Figuras/inf.png" width="750px"/> ] --- ## Valores atípicos y de alta influencia ```r car::influencePlot(modelo) ``` .center[ <img src="Figuras/inf.jpeg" width="350px"/> ] --- ## Modelo de regresión lineal múltiple Un Modelo de Regresión Lineal Múltiple, corresponde cuando se utilizan varias covariables que intentan explicar una variable a pronosticar. `$$Y_i = \beta_0 + \beta_1 X_{i1} + \beta_2 X_{i2} + \ldots \beta_k X_{ik} + \epsilon_i$$` * `\(\beta_0\)`: es el valor de Y cuando todos los predictores son cero. * `\(\beta_i\)`: es el incremento de la variable Y cuando Xi aumenta en una unidad, manteniéndose constantes el resto de variables. * `\(\epsilon_i\)`: es el error, la diferencia entre el valor observado y el estimado por el modelo. --- ## Modelo de regresión lineal múltiple Los modelos estadísticos tienen como fin determinar si una o más variables pueden entregar información para explicar una variable respuesta. Por lo tanto, si se conoce una nueva observación para el conjunto de covariables, se puede realizar un pronóstico de la variable respuesta. La función `predict()` realiza una estimación puntual, junto con un intervalo de confianza para la nueva observación. --- ## Modelo de regresión líneal múltiple ### Modelo con Variables independientes cualitativas .pull-left[ <br> Internamente se construye una variable **Indicadora o dummy** para las categorías, es una variable que indica si la categoría está presente o no. Sólo existen dos resultados posibles, 1 si corresponde a la categoría, 0 si no corresponde a la categoría. ] .pull-right[ <img src="MetEstadisticos_files/figure-html/unnamed-chunk-6-1.png" width="504" /> ] --- ## Selección de modelos Un indicador para elegir un modelo corresponde al Criterio de Información de Akaike (AIC). El AIC es una medida de calidad basada en la bondad de ajuste. Si se poseen varios modelos, se optaría por aquel con valor mínimo de AIC. * ** Método jerárquico**: Según criterio del analista, se introducen predictores determinados en un orden determinado. * **Método de entrada forzada**: Se introducen todos los predictores simultáneamente. * **Método paso a paso (stepwise)**: Emplea criterios matemáticos para decidir qué predictores contribuyen significativamente al modelo y en qué orden se introducen o se eliminan. La función `stepAIC()` del paquete MASS permite seleccionar el método mediante el argumento `direction = c("both", "backward", "forward")`, para ir retirando o agregando variables. --- name: taller class: inverse, middle # Taller práctico --- # Taller práctico Los datos *biomasa.txt* son parte de un estudio realizado por Rick Linthurst, para identificar las características importantes del suelo que influyen en la producción de biomasa aérea de la hierba de marisma Spartina alterniflora. Se muestreó tres tipos de vegetación Spartina (áreas "muertas" revegetadas, áreas Spartina "cortas" y áreas Spartina "altas") en las ubicaciones (Oak Island, Smith Island y Snows Marsh). Se analizaron 5 muestras del sustrato del suelo dentro de cada ubicación para 14 características fisicoquímicas del suelo y la biomasa (BIO) aérea en cada sitio. - Sulfuro libre (H2S) - Salinidad (SAL) - Potenciales redox a pH 7 (EH7) - PH del suelo en agua (PH) - Acidez del tampón a pH 6,6 (BUF) - Concentración de fósforo (P) - Concentración de potasio (K) - Concentración de calcio (CA) - Concentración de magnesio (MG) - Concentración de sodio (NA) - Concentración de manganeso (MN) - Concentración de zinc (ZN) - Concentración de cobre (CU) - Concentración de amonio (NH4) --- # Taller práctico * Determine cuál es la variable dependiente y las variables independientes. ¿Cuáles son las parejas de variables que le permitirían realizar un modelo de regresión lineal simple? * Genere una gráfica que permita observar la relación entre las variables. Comente acerca del grado y tipo de asociación entre las variables. * Calcule el coeficiente de correlación de Pearson en cada caso. ¿Este valor confirma su interpretación en la pregunta anterior? * Determine la ecuación de regresión en cada caso. Ajuste un modelo de regresión lineal simple. Interprete los valores de los parámetros estimados. * Pruebe la significancia de la pendiente. Usando el nivel de significancia 0.05. ¿Podemos concluir que la pendiente de la recta de regresión es cero?. * Calcule el coeficiente de determinación. Evalué la capacidad predictora de una ecuación de regresión. --- # Taller práctico * Estime el valor de la variable Y cuando la variable X es 5.2, entregue el intervalo de confianza. * Establezca el intervalo de predicción 0.95 para un valor proyectado X = 5.2. * Realice un análisis de los supuestos del modelo. * Ajuste un modelo de regresión lineal múltiple, que permita predecir la biomasa en función de pH y K. * Use un método automatizado de selección, para seleccionar el mejor modelo. * Realice un análisis de residuos del modelo seleccionado. * ¿Es posible inferir vínculos de causalidad entre las caractrísticas del suelo y la producción de biomasa? --- class: middle, inverse # 1. Algoritmos Supervisados ## 1.2 Clasificación --- # Modelo de Regresión Logística El modelo de regresión logística es usado para explicar una respuesta dicotómica o politómica en función de una o más covariables. A diferencia de la regresión lineal, la variable respuesta puede ser `\(0\)` o `\(1\)`, por lo que nace de un experimento binomial con probabilidad `\(\pi\)`. La forma específica que se usa para el modelo de regresión logística es: `$$\pi = \frac{e^{\beta_0 + \beta_1 X_1 + \beta_2 X_2 + \ldots + \beta_p X_p}}{1 + e^{\beta_0 + \beta_1 X_1 + \beta_2 X_2 + \ldots + \beta_p X_p}}$$` Otra forma equivalente de representar el modelo es a través de la transformación "logit" datada por: $$ logit(\pi_i) = log(\frac{\pi_i}{1-\pi_i})=\beta_0 + \beta_1 X_1 + \beta_2 X_2 + \ldots + \beta_p X_p$$ Notar que si `\(\beta_i = 0\)`, entonces la probabilidad se mantendrá constante para cualquier valor de `\(X_i\)`. --- # Modelo de Regresión Logística Para estimar los parámetros de la regresión logística se requiere de métodos iterativos (Newton-Raphson), R contiene este método indexado a la función `glm()` . El formato de utilización es ```r glm(formula, data, family =binomial(link = "logit")) ``` --- # Modelo de Regresión Logística ## Odds Un odds (o una chance) es la relación entre la probabilidad de ocurrencia versus la probabilidad de no ocurrencia. Matemáticamente se define como: `$$\frac{\pi_i}{1-\pi_i}=e^{\beta_0 + \beta_1 X_1 + \beta_2 X_2 + \ldots + \beta_p X_p}$$` * Si **odds** > 1, entonces se dice “número de veces más probable en ocurrir el éxito”. * Si **odds** < 1 es menor a 1, entonces se toma la diferencia para llegar a 1, y se interpreta como “menos probable que ocurra el éxito” --- # Modelo de Regresión Logística ## Odds Ratio La razón entre dos odds se conoce como Odds Ratio, o simplemente OR, y cuantifica cuánto más probable es la ocurrencia, respecto al estado de una cierta variable `\(X_i\)` al aumentar en una unidad o categoría. $$ OR = \frac{Odds1}{Odds2} = \frac{e^{\beta_0 + \beta_1 X_1 + \beta_2 X_2 + \ldots+ \beta_i (X_i = 1)+\ldots + \beta_p X_p}}{e^{\beta_0 + \beta_1 X_1 + \beta_2 X_2 + \ldots + \ldots+ \beta_i (X_i = 0)+\ldots+\beta_p X_p}}= e^{\beta_i}$$ --- # Modelo de Regresión Logística ## Interpretación de coeficientes Los coeficientes se interpretan de la siguiente forma: * Si `\(\beta_i > 0\)`, entonces `\(OR >1\)` y por tanto `\(X_i\)` es un factor de riesgo. * Si `\(\beta_i = 0\)`, entonces `\(OR=1\)` y por tanto no hay efecto del factor `\(X_i\)`. * Si `\(\beta_i < 0\)`, entonces `\(OR< 1\)` y por tanto `\(X_i\)` es un factor protector. --- # Actividad Utilice la base de datos **seguros.csv**, que cuenta con las siguientes variables: * Seguro: 1- Si la persona cuenta con seguro complementario. 0– En otro caso. * Edad: En años cumplidos. * Chile: 1- Si la persona vivió fuera de Chile al menos 10 años. 0-En caso contrario. * Sexo: 1- Mujer. 0-Hombre. * Educ: Años de educación. * EstCiv: 1-Casado. 0-Soltero. * Salud: 1-Excelente estado de salud. 2-Muy buena. 3-Buena. 4-Regular. 5-Mala. * Jubil: 1-Jubilado. 2-Trabajando. * Ingreso: Ingreso per cápita. * IngresoQuintil: Categorización en quintiles de Ingreso. El objetivo de este estudio es analizar qué factores influyen en la tenencia o no de un seguro complementario. --- # Punto de Corte El punto de corte es un valor entre 0 y 1, tal que, si la probabilidad de un sujeto es mayor que este, se clasificará como positivo y en caso contrario como negativo. Por ejemplo, si la probabilidad de un sujeto de padecer diabetes es de 0.36 y el punto de corte es 0.5, se clasificará como sin diabetes. El punto de corte dependerá del área de trabajo, ya que, por ejemplo, al disminuir el punto de corte, serán más los casos positivos detectados, pero se cometerá un mayor error con los casos negativos (Esto es deseado, por ejemplo, en los test de embarazo). --- # Matriz de confusión Una matriz de confusión permite evaluar el ajuste del modelo. Se presentan los valores reales versus los valores predichos. <br/> .center[ <img src="Figuras/conf.png" width="700px"/> ] --- # Metricas de evaluación Entre las medidas más usuales para evaluar el modelo se encuentran: .pull-left[ Exactitud = `\(\frac{VP+VN}{TOTAL}\)` Precisión = `\(\frac{VP}{VP+FP}\)` Sensibilidad (Recall) = `\(\frac{VP}{VP+FN}\)` ] .pull-right[ Especificidad = `\(\frac{VN}{FP+VN}\)` Tasa de Error = `\(\frac{FP+FN}{TOTAL}\)` VPN = `\(\frac{VP+VN}{VN+FN}\)` ] F1-Score = `\(\frac{2\cdot Precision \cdot Recall}{Precision + Recall}\)` La función `confusionMatrix()` de la librería **caret** ajusta la matriz de confusión entre valores reales y valores predichos, junto con los indicadores asociados. <br> .right[ [Revise Ejemplo interactivo](https://mlu-explain.github.io/precision-recall/) ] --- # Curva ROC La curva ROC es una herramienta para seleccionar modelos óptimos y descartar modelos sub-óptimos independientemente. Se calcula utilizando los valores de la Sensibilidad y la Especificidad. .center[ <img src="Figuras/roc.png" width="500px"/> ] La interpretación se basa en el área bajo la curva (AUC). --- # Curva ROC El AUC indica el porcentaje que puede clasificar correctamente el modelo, por ejemplo, un AUC de 85% indica que cada 1000 predicciones, 850 estarán bien clasificadas. --- # Curva ROC .pull-left[ .center[<img src="Figuras/90Roc.png">] Valores sobre el 90% de AUC son considerados sospechosos y puede deberse a cosas como predecir la variable respuesta con una variable muy correlacionada. ] .pull-right[ .center[<img src="Figuras/80Roc.png">] Valores entre el 75 % y 90% aprox. son considerados como un buen ajuste. Esto quiere decir que el modelo logra discriminar de buena forma los datos. ] --- # Curva ROC .pull-left[ .center[<img src="Figuras/roc1.png">] Valores entre el 60 % y 75% aprox. se consideran como aceptables, logrando un bajo nivel de discriminación del modelo. ] .pull-right[ .center[<img src="Figuras/50Roc.png">] Valores cercanos al 50% se considera un mal ajuste. Un AUC del 50% es equivalente a no generar un modelo para predecir. ] --- name: taller class: inverse, middle # Taller práctico --- # Taller práctico Se observaron o midieron las características clínicas de 64 pacientes con cáncer de mama y 52 controles sanos. * Age: Edad del paciente (años) * BMI: Indice de Masa Corporal (kg / `\(m^2\)`) * Glucose: Nivel de glucosa en la sangre (mg / dL) * Insulin: Nivel de insulina ($\mu U$ / mL) * HOMA: Homeostatic Model Assesment. Se utiliza para evaluar la función de las células `\(\beta\)` y la sensibilidad a la insulina. * Leptin: hormona utilizada para regular el gasto energético (ng / mL) * Adiponectin: Hormona proteica utilizada para regular los niveles de glucosa (µg / mL) * Resistin: Hormona que causa resistencia a la insulina (ng / mL) * MCP.1 : Proteína que ayuda a la recuperación de lesiones e infecciones. (pg / dL) * Classification: 1 = paciente sano como parte de un grupo de control, 2 = paciente con cáncer de mama Desarrolle y evalue un modelo de predicción que potencialmente se puede utilizar como un biomarcador de cáncer de mama, basado en datos y parámetros antropométricos que se pueden recopilar en análisis de sangre de rutina. Más información del estudio en el siguiente [link](https://bmccancer.biomedcentral.com/articles/10.1186/s12885-017-3877-1). --- # Taller práctico 1. Importe los datos 2. Compruebe si hay sesgo de clase 3. Cree muestras de entrenamiento y prueba 3. Calcule el valor de la información para descubrir variables importantes 4. Construya modelos logit y prediga sobre datos de prueba 5. Haga diagnóstico de los modelos --- # Árboles de Decisión Es un algoritmo de aprendizaje supervisado no paramétrico, que se utiliza tanto para tareas de clasificación como de regresión. Tiene una estructura de árbol jerárquica, que consta de un nodo raíz, ramas, nodos internos y nodos hoja. Cada nodo interno representa una "prueba" o "condición" sobre una característica, cada rama representa el resultado de la prueba, y cada hoja representa una etiqueta de clase (en el caso de la clasificación) o un valor (en el caso de la regresión). .center[<img src="https://media.licdn.com/dms/image/C4E12AQG19i3vFGtvtw/article-cover_image-shrink_720_1280/0/1632989308365?e=1723680000&v=beta&t=tNsG___dEqZnEptHIGtKw_P4xu-92m15IdktF1OrP58" width="600px"> ] --- # Árboles de Decisión #### Estructura del Árbol de Decisión - **Nodo raíz**: Es el nodo superior del árbol, que representa toda la población o muestra inicial. Este nodo se divide en dos o más ramas. - **Nodos internos**: Estos nodos representan las características (atributos) en el conjunto de datos y las pruebas o condiciones sobre estas características. Cada nodo interno se divide en otros nodos (nodos hijos) basados en las condiciones de la característica. - **Hojas (nodos terminales)**: Estos nodos representan el resultado final o la decisión tomada. En un problema de clasificación, cada hoja representa una clase; en un problema de regresión, cada hoja representa un valor. --- # Árboles de Decisión .center[<img src="https://i.vas3k.blog/7w3.jpg" width="700px">] --- # Árboles de Decisión La construcción de un árbol de decisión implica los siguientes pasos: 1. Seleccionar la característica para dividir: La característica seleccionada es aquella que mejor separa los datos en términos de la variable objetivo. Se utilizan medidas como la ganancia de información, el índice de Gini o la reducción de la varianza para determinar la mejor división. 2. Dividir el nodo: Basado en la característica seleccionada y su condición, el nodo se divide en ramas, y cada nueva rama representa un subconjunto de los datos. 3. Repetir recursivamente: El proceso de selección de características y división se repite recursivamente para cada subconjunto, creando nuevos nodos internos y ramas, hasta que uno de los criterios de detención se cumple, como alcanzar una profundidad máxima del árbol, o que los nodos contengan un número mínimo de muestras. --- # Random Forest En Random Forest, se crea un conjunto de árboles de decisión, donde cada árbol se entrena con: 1. Una muestra aleatoria del conjunto de datos de entrenamiento (parámetro ntree o similar). 2. En cada nodo de división de un árbol, se considera solo un subconjunto aleatorio de características para tomar la decisión (parámetro mtry). Para problemas de clasificación, la predicción final del Random Forest se determina por votación mayoritaria entre los árboles. Para problemas de regresión, la predicción final es el promedio de las predicciones de los árboles individuales. --- # Árbol de Decisión vs Random Forest .center[<img src="https://miro.medium.com/v2/da:true/resize:fit:1200/0*YEwFetXQGPB8aDFV">] --- class: middle, inverse # Algoritmos No Supervisados --- # Algoritmos de agrupación Existen distintos algoritmos para obtener los grupos (o también llamados *clústeres*) deseados, el uso de uno u otro depende en gran medida del tipo de variables en nuestra base de datos: #### Agrupamiento jerárquico - Agrupación Aglomerativa - Agrupación divisiva #### Agrupamiento no jerárquico - K means - K mode - K prototype --- class: middle, inverse # Algoritmos de Agrupación No Jerárquico --- # Algoritmos de agrupación no jerárquico Estos algoritmo necesitan los datos y el número de grupos `\(K\)`. ### Algoritmo de K-Means: Se utiliza cuando los datos corresponden a una matriz numérica, es decir, los grupos se obtendrán utilizando variables numéricas. <br> -- ### Algoritmo de K-Modes: Se utiliza cuando los datos corresponden a una dataframe de atributos categóricos, es decir, utilizando variables categóricas. <br> -- ### Algoritmo de K-Prototype: Se utiliza en datos mixtos, es decir, cuando nuestros atributos corresponden a variables numéricas y categóricas. <br> > Veremos más adelante cómo determinar candidatos para `\(K\)`. --- # K-Means Es una técnica de **Machine Learning** de Aprendizaje No Supervisado basado en **centroides** obtenidos mediante el cálculo **iterativo** de **distancias**. Las distancias son calculadas para asignar cada punto a un grupo. En K-Means, cada grupo está caracterizado por un centroide. El agrupamiento se realiza minimizando la suma de distancias entre cada objeto y el centroide de su grupo o clúster. Se suele usar la distancia cuadrática, por lo cual, en este algoritmo solo se utilizan variables numéricas. --- # K-Means <img src="media/AlvinChuaKmeans.gif"> --- # K-Means <img src="media/kmeans.png" width="650"> Link GIF: [shabal.in/visuals/kmeans/4.html]() --- # K-Means Podemos calcular k-medias en R con la función `kmeans()` ```r kmeans(x, centers, iter.max = 10, nstart = 1, algorithm = c("Hartigan-Wong", "Lloyd", "Forgy", "MacQueen"), trace=FALSE) ``` También podemos visualizar los cluster con la función `fviz_cluster()` del package factoextra. --- class: inverse, middle # Taler práctico I --- class: inverse # Taler práctico I #### Agrupamiento de clientes de un mall según características El conjunto de datos Mall_customer.csv contiene datos de clientes de un centro comercial (mall). El equipo de Marketing está interesado en comprender cuántos perfiles de clientes existen de modo de enfocar a cada perfil de cliente una estrategia personalizada. Por ejemplo, para el perfil de clientes que suele comprar menos, incentivarlos a comprar con súperofertas u otros. Los atributos registrados para cada cliente se describen a continuación: - CustomerID: Id del cliente - Gender: Sexo del cliente - Age: Edad del cliente - Annual Income (k$): Ingreso anual del cliente - Spending Score (1-100): Score asignado al cliente dependiendo de la naturaleza del gasto (lo que compra) 1. Realice un gráfico tridimensional de las variables numéricas. ¿Se pueden distiguir algunos centroides? 2. Aplique el método K-means para los centroides que usted encontró anteiormente y grafíque nuevamente distinguiendo los cluster con los colores a su elección. --- class: inverse , middle # Critérios para la elección del K óptimo --- # Sumas cuadráticas en K-Means Dos conceptos muy importantes al realizar clustering es la varianza intra clúster e inter clúster: .center[ <img src="media/cluster1.png" width="500"> ] --- # Sumas cuadráticas en K-Means #### Distancia intra clústers (Within Cluster Sums of Squares - WSS) Indica qué tan separados están los elementos del mismo grupo y qué tan lejos están de su centroide. Los grupos más densos con elementos más cercanos tienen mayor similitud y son más probables para compartir realmente la misma calificación. Se calcula: `$$WSS=\sum_{i=1}^{N_c}{\sum_{x \in C_{i}}{d(x, \bar{x}_{C_i})^{2}}}$$` Donde `\(N_{c}\)` es el número de clústers, `\(C_i\)` corresponde al clúster, `\(x\)` la observación y `\(\bar{x}_{C_i}\)` el centroide del clúster. --- # Sumas cuadráticas en K-Means #### Distancia entre clústers (Between Cluster Sums of Squares - BSS) Indica qué tan lejos están los grupos entre sí. Es una buena señal cuando están distantes entre sí porque muestran un mayor aislamiento de los grupos y probablemente una clasificación más precisa. Se calcula: `$$BSS=\sum_{i=1}^{N_c}{|C_i|\cdot d(\bar{x}_{C_i}, \bar{x})^{2}}$$` Donde `\(\bar{x}\)` es la media global y `\(|C_i|\)` corresponde al tamaño del clúster. --- # Interpretación de las sumas cuadráticas - Distancia intra clústers (WSS): Mide la variabilidad de las observaciones dentro de cada grupo. Una menor suma cuadrática indica que los grupos son más más compactos o pequeños. El WSS también está influenciado por el número de observaciones, a medida que aumenta el número de observaciones, notará que la suma de cuadrados aumenta. Esto significa que WCSS a menudo no es directamente comparable entre grupos con diferentes números de observaciones. - Distancia entre clústers (BSS): Mide la distancia promedio al cuadrado entre todos los centroides, lo cual representa la dispersión entre todos los grupos. Un valor grande puede indicar clústeres que están dispersos, mientras que un valor pequeño puede indicar clústeres que están más cerca unos de otros. <br> Estos dos criterios pueden utilizarse como complemento para la elección del número de grupos según el _criterio de inercia_ que indica que el agrupamiento será óptimo, cuando los grupos formados tengan una distancia mínima intra clúster y una distancia máxima entre clúster. --- class: inverse, middle # Taller práctico II --- class: inverse # Taller práctico II #### Agrupación de vinos según características La base de datos _segmentacion_ contiene información de una carta que incluye 177 vinos que vende cierta empresa. Las variables son todas numéricas, como por ejemplo, grado de alcohol, cantidad de flavonoides, alcalinidad, entre otras. Interesa agrupar los vinos por similitud, de modo tal, que si a un cliente le gusta un vino `\(A\)` se le sugiera un vino `\(B\)` donde `\(B\)` pertenece al mismo grupo de `\(A\)` (es decir, son similares). 1. Aplique el método k-means para distintos valores de K (K = 1, 2, ...,15) 2. Para cada grupo obtenga las sumas de cuadrado WSS y BSS. 3. Compare a través de gráficos las sumas de cuadrado para cada grupo. --- # Método del códo Este método busca seleccionar la cantidad ideal de grupos a partir de la optimización de las sumas cuadráticas. <img src="MetEstadisticos_files/figure-html/unnamed-chunk-9-1.png" width="720" /> Si bien, el criterio de selección puede variar (por ejemplo, dependiendo del conocimiento del negocio), uno de los criterios es seleccionar aquél valor de K tal que posterior a ese punto no se observan drásticas caídas/subidas. Por ejemplo, en ambos gráficos podemos ver que en `\(K = 3\)` ser observa la diferencia más considerable y luego son todos los cambios pequeños, por lo tanto, un valor de `\(k\)` propuesto es 3. --- # Método del códo El package **factoextra** proporciona algunas funciones fáciles de usar para extraer y visualizar las salida de análisis de datos multivariados. ```r library(factoextra) fviz_nbclust(vinos_num, kmeans, method = "wss") + geom_vline(xintercept = 3, linetype = 2, col = "#3182bd") ``` <img src="MetEstadisticos_files/figure-html/unnamed-chunk-10-1.png" width="432" /> --- # Caracterización de los cluster .small[ ```r clusterk3<-kmeans(vinos_num, centers=3) #K-Means con K=3 clusters clusterk3 ``` ``` ## K-means clustering with 3 clusters of sizes 62, 65, 50 ## ## Cluster means: ## Alcohol Acido Malico Ceniza Alcalinidad de ceniza Magnesium ## 1 0.8291162 -0.3018295 0.3609767 -0.6067450 0.57041440 ## 2 -0.9226664 -0.3915536 -0.4936469 0.1696492 -0.49566718 ## 3 0.1713623 0.8832882 0.1941298 0.5318199 -0.06294652 ## Compuesto fenolico Flavonoides Fenoles no flavonoides Proantocianidinas ## 1 0.87733087 0.97013868 -0.55499742 0.57216171 ## 2 -0.08420394 0.01220686 -0.02806838 0.04896298 ## 3 -0.97842515 -1.21884088 0.72468569 -0.77313239 ## Intensidad del color Matiz del vino OD280 Prolina ## 1 0.1841627 0.4655796 0.7712676 1.1163471 ## 2 -0.8962423 0.4533681 0.2628807 -0.7562155 ## 3 0.9367532 -1.1666972 -1.2981167 -0.4011902 ## ## Clustering vector: ## [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ## [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 3 2 2 2 2 2 2 2 2 2 2 2 1 ## [75] 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ## [112] 2 2 2 2 2 2 2 3 2 2 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ## [149] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ## ## Within cluster sum of squares by cluster: ## [1] 385.9875 559.4499 321.9366 ## (between_SS / total_SS = 44.6 %) ## ## Available components: ## ## [1] "cluster" "centers" "totss" "withinss" "tot.withinss" ## [6] "betweenss" "size" "iter" "ifault" ``` ] --- # Caracterización de clústers Se puede caracterizar cada clúster dependiendo de cómo se mueven las variables en el clúster, de esta forma podemos obtener perfiles de vinos, en otro contexto pudieran ser, por ejemplo, perfiles de clientes, usuarios, etcétera. .center[ <img src="MetEstadisticos_files/figure-html/unnamed-chunk-12-1.png" width="504" /> ] --- # Método de la Silueta El método de la silueta mide la calidad de una agrupación. Es decir, determina qué tan bien se encuentra cada observación dentro de su grupo. El rango del valor de silueta está entre +1 y -1. Es deseable un valor alto e indica que el punto está ubicado en el grupo correcto. Si muchos puntos tienen un valor de silueta negativo, puede indicar que son demasiados o muy pocos clústeres. La silueta `\(s(i)\)` para cada punto `\(i\)` de la data, se obtiene, como sigue: `$$s(i)=\frac{b(i)-a(i)}{max\left\lbrace a_i, b_i\right\rbrace} \ \ \ \text{ si } |C_i| >1$$` Y `\(s(i)=0 \ \ \ \text{ si } |C_i| =1\)`. `\(s (i)\)` se define como igual a cero si `\(i\)` es el único punto del grupo. Esto es para evitar que la cantidad de clústeres aumente significativamente con muchos clústeres de un solo punto. --- # Método de la Silueta `\(a(i)\)` es la medida de similitud del punto `\(i\)` con su propio grupo. Se mide como la distancia media de `\(i\)` desde otros puntos del clúster: `$$a(i)=\frac{1}{|C_i|-1}\sum_{j \in C_i, i \not = j}{d(i,j)}$$` De forma similar, `\(b(i)\)` es la medida de disimilitud de la observación `\(i\)` con puntos de otros clústers: `$$b(i)=min_{i \not = j}\frac{1}{|C_j|}\sum_{j\in C_j}{d(i, j)}$$` --- # Método de la Silueta El gráfico de silueta muestra una medida de cuán cerca está cada punto en un clúster de los puntos en los clústeres vecinos y por lo tanto proporciona una forma de evaluar parámetros como el número de clústeres visualmente. <center> <img src="media/aibi.png" width="750" height="400"> </center> --- # Método de la Silueta ```r fviz_nbclust(vinos_num, kmeans, method = "silhouette") ``` <img src="MetEstadisticos_files/figure-html/unnamed-chunk-13-1.png" width="432" /> --- # Estadístico Gap El estadístico *gap* compara la variación total intraclúster para diferentes valores de `\(k\)` con sus valores esperados bajo una distribución de referencia nula de los datos. La estimación de los clúster óptimos será el valor que maximice el estadístico gap (es decir, que arroje la brecha más grande). - Paso 1: Clusterizar la data con `\(k=1,...,k_{max}\)` clúster y calcula la variación intraclúster total `\(W_k\)`. - Paso 2: Genera `\(B\)` conjuntos aleatorios de una distribución uniforme. Clusterizar estos conjuntos con `\(k=1,...,k_{max}\)` clúster y calcula la variación intraclúster total `\(W_{kb}\)`. - Paso 3: Calcula el estadístico Gap: `$$Gap(k)=\frac{1}{B}\sum_{b=1}^{B}{log(W_{kb}^{*})-log(W_{k})}$$` Y también su desviación estándar. - Paso 4: El `\(k\)` óptimo será el mínimo `\(k\)` tal que el estadístico gap `\(k\)` esté a una desviación estándar del estadístico gap `\(k+1\)`: `$$k_{Gap}= min_{k} \left\lbrace Gap(k) \geq Gap(k+1)−s_{k+1} \right\rbrace$$` --- # Estadístico Gap ```r fviz_nbclust(vinos_num, kmeans, nstart = 25, method = "gap_stat", nboot = 50) ``` <img src="MetEstadisticos_files/figure-html/unnamed-chunk-14-1.png" width="432" /> --- class: middle, inverse # K-Modes --- class: # K-Modes Es una técnica de Machine Learning de Aprendizaje No Supervisado diseñado para agrupar grandes conjuntos de datos categóricos y tiene como objetivo obtener las K modas que representan al conjunto. El algoritmo K-Modes es una versión del K-Means para datos categóricos con las siguientes modificaciones: - Usa diferentes medidas de disimilaridad (ya no puede calcular distancia euclideana porque los datos no son numéricos). - Sustitución de K medias por K modas para obtener los centros. - Actualiza las modas a partir de las frecuencias de los datos. --- # K-Modes <center> <img src="media/kmodes.png" width="800" height="540"> </center> --- class: middle, inverse # K-Prototype --- # K-Prototype Es una técnica de Machine Learning de Aprendizaje No Supervisado que permite agrupar grandes conjuntos de datos mezclados. Básicamente unifica _K - Means_ y _K - Modes_. El algoritmo k-Prototypes integra al algoritmo K - Means y K - Modes para poder trabajar con todo tipo de datos. Esto lo hace de la siguiente forma: se asume que si `\(s^{r}\)` es la medida de disimilaridad entre atributos numéricos definida por el cuadrado de la distancia Euclidiana y `\(s^{c}\)` es la medida de disimilaridad entre atributos categóricos definida por el número de no coincidencias (mismatches) de categorías entre objetos. La disimilaridad en un algoritmo de K-Prototypes se medirá entonces como: `$$s^{r}+\gamma s^{c}$$` Donde `\(\gamma\)` es un peso usado para equilibrar ambas partes, asegurándose de que un tipo de variable no pese más que la otra. --- # Consideraciones al momento de usar <br> Algoritmos de Agrupación Los algoritmos K-Prototypes y K-Modes son altamente variables debido a la no unicidad de las modas, es decir, el resultado depende fuertemente de la selección de las modas durante el proceso de agrupamiento. Por lo que una mala elección de la moda puede llevar a errores en el agrupamiento y considerar todas las modas implica un alto costo computacional. Asimismo, estos algoritmos heredan uno de los principales problemas del algoritmo K-Means el cual consiste en una fuerte dependencia de las condiciones iniciales. --- class: middle, inverse # Algoritmos de Agrupación Jerárquico --- # Algoritmos de Agrupación Jerárquico Con el objetivo de agrupar convenientemente los ítems o sujetos, dadas sus características, una herramienta útil es asignar jerarquías en las distancias. Existe dos metodologías para construir estas jerarquías: - Aglomerativa - Divisiva --- # Algoritmos de Agrupación Jerárquico ### Agrupación Aglomerativa Se empiezan calculando los puntos de los datos de entrada que estén más cercanos y se crea un grupo entre ellos. Luego se calculan los siguientes pares más cercanos y de manera ascendente se van generando grupos de clases. Suponga que se tienen `\(n\)` items: 1. Comenzar con `\(n\)` clusters. 2. Identificar los ítems que se encuentran mas próximos. 3. Unir aquellos ítems que tienen asociada la mayor similitud. 4. Repetir los pasos 2 y 3 `\(n − 1\)` veces. También se debe decidir el tipo de enlace entre los grupos. - Enlace simple - Enlace Completo - Enlace Promedio --- # Algoritmos de Agrupación Jerárquico ### Agrupación divisiva Consiste en asumir que cada observación es un cluster en si mismo y luego se procede de forma iterativa para fusionar dichos cluster. El algoritmo divisivo propuesto por Macnaughton Smith et al. (1965): 1. Comienza con todas las observaciones en un ´unico conglomerado G. 2. A continuación, elige la observación cuya disimilitud media con respecto a todas las demás observaciones es mayor. Esta observación forma el primer miembro de un segundo conglomerado H. 3. En cada paso sucesivo se transfiere a H aquella observación de G cuya distancia media con respecto a las de H, menos la de las restantes observaciones de G, sea mayor. Es decir, ya no hay observaciones en G que estén, en promedio, más cerca de las de H. 4. El resultado es una división del cluster original en dos clusters hijos: las observaciones transferidas a H y las que permanecen en G. 6. Estos dos clusters representan el segundo nivel de la jerarquía --- # Algoritmos de Agrupación Jerárquico - En R se puede utilizar la función `dist()` para las diferentes distancias. - En R se puede utilizar la función `hclust()` para agrupar de forma jerarquica. - En R se puede utilizar la función `diana()` de la libreria cluster para agrupar de forma jerárquica divisiva. - En R se puede utilizar la función `plot()` o `fviz_dend()` de factoextra para construir los dendrogramas. --- # Dendrograma Una herramienta gráfica para visualizar las distancias y grupos formados corresponde al Dendrograma. .center[ <img src="MetEstadisticos_files/figure-html/unnamed-chunk-15-1.png" width="504" /> ] --- class: inverse, middle # Referencias y material complementerio --- # Referencias y material complementerio * Machine Learning for Everyone [link](https://vas3k.com/blog/machine_learning/) * Logistic regression with R [inglés](http://r-statistics.co/Logistic-Regression-With-R.html). * Logistic regression with tidymodels [inglés](https://stateofther.github.io/finistR2019/s-tidymodels.html). Paquetes con funciones útiles al momento de hacer modelos: * Regresión logística en tidymodels con el paquete [parsnip](https://parsnip.tidymodels.org/reference/logistic_reg.html#examples). * El paquete **broom** tiene algunas funciones muy útiles cuando se trata de modelos, pueden ver una introducción al paquete [aquí](https://cran.r-project.org/web/packages/broom/vignettes/broom.html). --- class: middle, inverse background-image: url(media/fondo.jpg) background-size: cover # **¡Gracias!** <br/> <br/> ## Ana María Alvarado ### amalvara@uc.cl