Estadística y minería de datos Apuntes PDF

Summary

Estos apuntes proporcionan una introducción a la estadística y la minería de datos. Cubren conceptos clave como variables objetivo, medidas de tendencia central y dispersión, así como distintos tipos de estudios, como los supervisados y no supervisados. Se incluyen ejemplos y diagramas. El documento también menciona técnicas como la transformación de variables, manejo de outliers y diferentes métodos de evaluación de modelos, incluyendo RMSE, MAE y R^2.

Full Transcript

**[Estadística y minería de datos]** **Conceptos:** - **Target (variable objetivo):** es la etiqueta o el resultado que se intenta predecir, es decir la variable que queremos que el modelo aprenda a predecir. - **Percentil:** los datos se tienen que ordenar y se "parten" los datos...

**[Estadística y minería de datos]** **Conceptos:** - **Target (variable objetivo):** es la etiqueta o el resultado que se intenta predecir, es decir la variable que queremos que el modelo aprenda a predecir. - **Percentil:** los datos se tienen que ordenar y se "parten" los datos en partes iguales, por ejemplo, en 100. Es útil para entender la distribución de los datos e identificar como se comparan los valores individuales con el resto del conjunto de datos. Si tenemos un P25, significa que el 25% de las casas baratas. - **Media:** La media es el centro, ya que compensa las distancias que están por encima y por debajo. Proporciona una idea general de donde se sitúan los datos en su conjunto. Tiene en cuenta posición y valor. Es mejor cuando tenemos datos actualizados, ya que puede ser influenciada por valores extremos (outliers). - **Mediana:** Solo tiene en cuenta la posición, es el valor que se encuentra en el medio, entonces no se ve arrastrada por los valores de los datos. Esta medida no se ve afectada por valores extremos, es útil en conjuntos de datos con distribuciones sesgadas y útil en contextos en que los outliers pueden distorsionar la media. - **Medida de dispersión:** describe la variabilidad de un conjunto de datos. Ayuda a entender como de dispersos están los datos alrededor de la media. Una baja dispersión indica que los datos están mas concentrados, y una alta indica que los datos están más dispersos. Cosa muy importante para medir la consistencia y la variabilidad de los datos. - **Valor outlier:** un punto que se sale mucho de la "normalidad", puede ser un valor extremadamente alto o bajo en comparación con el resto. Estos puntos pueden influir en las medidas de tendencia central y distorsionar los resultados. - **Transformación de la variable:** Cuando se da una variable cuantitativa que se sale de los limites aplicamos logaritmos. Sirve para mejorar la interpretación de los resultados y ayuda a disminuir la influencia de outliers. Aunque se haga una transformación y cambien los valores originales, los resultados se interpretan sobre términos de cambios porcentuales. - **Variable cualitativa o categórica:** son aquellas que describen características o cualidades que no se miden numéricamente. - **Variable cuantitativa:** son aquellas que representan cantidades y se pueden medir numéricamente. - **Features:** son las variables o atributos que se utilizan como entrada para el modelo. El modelo aprende hacer predicciones basándose en ellos, es importante identificar los mas relevantes para el problema que se esta solucionando. - **Tuning:** procesos de optimizar los parámetros del modelo que no se aprenden directamente durante el entrenamiento. Controlan el comportamiento del algoritmo de aprendizaje. - **Overfitting:** es un problema que ocurre cuando un modelo se ajusta demasiado a los datos de entrenamiento, comprometiendo la capacidad de generar nuevos datos. Por eso, es esencial validar los modelos utilizando conjuntos de datos distintos. - **Correlación:** indica la relación entre dos variables. Si la correlación es 1, significa que hay una correlación perfecta, ua que cuando una variable aumente la otra también lo hará en la misma proporción. Si la correlación es -1, significa que cuando una variable aumenta, la otra disminuye en la misma proporción. Si la correlación es 0, significa que no hay relación entre las dos variables. Si la correlación esta cerca de 1, significa que hay una fuerte relación positiva entre las dos variables. Si esta cerca de -1, significa que hay una fuerte relación negativa entre estas dos variables, y cuando esta cerca de 0, significa que hay relación débil entre las variables. - **[Tipos de estudio:]** - **Supervisado:** Hay dos tipos**:** - **Clasificación:** nuestro target es categórico. Es un factor que tiene valores que son categorías. Es para un target categórico. - **Regresión:** Si el target es cuantitativo. - **No supervisado:** es un trabajo cuando no se tiene un target claro des de un principio. Y se agrupan, por ejemplo, los consumidores que tienen características similares. Se etiqueta a los datos para encontrar patrones o estructuras en los datos. Por ejemplo, queremos analizar el mercado de la vivienda y tenemos 3.000 variables, donde muchas de ellas serán similares y hay correlación. Como hay muchas variables, metemos mucha basura en el sistema, entonces se intenta reducir la dimensionalidad, y coger lo común de las 3000 variables, y por tanto reducir la dimensión de las variables. **[Tipos de datos]** - ***fct***-- variable categórica, es decir cualitativa. - ***Dbl*** -- variable cuantitativa. **[Tipos de diagrama]:** - **Diagrama de barras:** es para variables cualitativas - **Histograma:** es para variables numéricas, es decir cuantitativas y la detección de anomalías. - ![](media/image2.png)**Diagrama de caja:** proporciona un resumen de la distribución y está especializado en detectar puntos outlier. En este ejemplo podemos ver que hay dos puntos muy outlier. Cuando aplicamos logaritmos, es lo que llamamos transformación de la variable. Al aplicar el logaritmo lo que provoca que el gráfico se asimila más a una normal. Los puntos outliers serán menores y a la vez también aparecerán más puntos. Aplicando logaritmo: ![](media/image4.png) Con el **coeficiente de variación** nos servirá para comparar la variabilidad entre diferentes conjuntos de datos con relación a su media. No tiene en cuenta las unidades. Hace los cálculos en términos relativos. Si da un valor bajo indica que los datos están concentrados alrededor de la media, ósea hay poca variabilidad en relación con la media. Si el valor es alto, indica una gran dispersión de los datos en relación con la media, lo que indica que los valores individuales son más variables. **[Sppliting de datos:]** Se divide un conjunto de datos para training y otro para el test (evaluación). Lo habitual de dividir los datos en 70% y 30% para BD que son de miles, si es muy grande con un 50% podría ser suficiente. Los datos del **training** se utilizan en el procese de selección de features, tuning, estimación de parámetros y comparativa de los distintos modelos alternativos. Los datos de **test** se utilizan para ver la capacidad de generalización del modelo elegido a partir de los datos del training. Es importante que el conjunto de test no se utilice para comparar entre distintos modelos, es decir en el training. El test sirve para cuando se tenga el modelo bueno y final, se aplica el modelo una vez ha sido entrenado en el training. El test indica que el modelo que escoges con el margen de error que tu presentas es correcto y bueno. [Tipos de muestreo:] - Muestreo Aleatorio: los datos del training y test se seleccionan a través de un muestreo aleatorio sin reemplazamiento entre los individuos. Cada elemento del conjunto tiene la misma probabilidad de ser seleccionado. - Muestreo **Estratificado**, se cogen diferentes datos de los diferentes cuartiles. Si la variable target es cuantitativa se asegura que la distribución de los cuartiles de la variable se mantenga en training y test. Si la variable target es un factor cualitativo se asegura que la proporción de cada grupo se mantenga en training y test. La semilla sirve para que cuando uses diferentes algoritmos entre con los mismos datos de entrenamiento, para descartar que si comete error no sea por los datos sino por el algoritmo. Sino puede dar un error muy diferente al del entrenamiento que he hecho yo al de otro usuario, y no se sabrá si el error proviene de los datos o del algoritmo. Fijando una semilla si podemos determinar, si hay diferencia de error, se debe a la eficiencia del algoritmo. Cuando esta estratificado en logarítmico, la forma de los gráficos ya no es la misma, eso es porque en la BD estratificamos en Precio de Venta, pero eso no garantiza que cuando aplicamos el logaritmo lo haga bien. Por tanto, si se tiene que predecir por el target transformado se haga sobre el target transformado. **[Remuestreo de datos]** Para casi todos los algoritmos, es necesario en el proceso de training validar los modelos con conjuntos de datos distintos para evaluar la generalización de los algoritmos e impedir el overfitting sin utilizar los datos de test. **Validación cruzada:** se aplica para los datos de training. Implica dividir un conjunto de datos en subconjuntos para entrenar y evaluar un modelos. Utiliza diferentes combinaciones de datos para entrenar y probar el modelo. Divides entre 5 grupos, uno de ellos se utiliza como conjunto de validación y los otros 4 como conjunto de entrenamiento del algoritmo. Para la siguiente ronda, si se ha sacado el primero fuera, se saca el segundo y se entrena con el resto. (en el grafico es el Test). Imatge que conté text, captura de pantalla, quadrat, Font Descripció generada automàticament En R esto se simula así: ![Imatge que conté text, Font, captura de pantalla, línia Descripció generada automàticament](media/image6.png) **El *set.seed*** sirve para fijar una semilla para el generador de números aleatorios. En **K** se define el número de pliegues (folds) o subconjuntos de datos que se utilizara para la validación cruzada. La variable **ames\_cv1,** almacena la información sobre la validación cruzada, se utiliza la función **vfold\_cv** para realizar esta validación cruzada, **ames\_train** es el conjunto de datos que se utiliza para la validación cruzada, se indica que se hará la validación con K pliegues y por último **strata = "lSale\_Price"** indica que debe hacer un muestreo estratificado basando en la variable lSale\_Price. Imatge que conté text, Font, captura de pantalla, línia Descripció generada automàticament **Train\_1** extra el conjunto de entrenamiento del primer pliegue de la validación cruzada, se accede a él a través de **ames\_cv1\$splits\[\[1\]\].** Y **assesment\_ 1** extrae el conjunto de evaluación del primer bloque (fold o pliegue) de la validación. ![](media/image8.png)**RMSE:** mide la magnitud promedio de los errores en las predicciones. Si el resultado es bajo indica que el modelo tiene un mejor ajuste de los datos. Se utiliza para evaluar la precisión de un modelo de regresión. Es útil para penalizar más los errores grandes, por tanto, es mejor utilizarlo cuando los errores grandes son mas problemáticos. **MAE:** mide la magnitud promedio de los errores en las predicciones, no tiene en consideración si el modelo tiende a sobreestimar o subestimar los valores. Es la diferencia absoluta entre los valores predichos y los valores reales. A diferencia del resto no penaliza los errores grandes ya que no utiliza el cuadrado de las diferencias, puede proporcionar una visión mas equilibrada del rendimiento del modelo **R^2^:** indica la proporción de la varianza entre la variable dependiente que es predecible a partir de las variables independientes. El r2 da la correlación entre los valores que quiero predecir y los valores predichos. Esta métrica varía entre 0 y 1, si el resultado es 0 indica que el modelo no explica ninguna variabilidad, y 1 indica que explica toda la variabilidad. Un resultado alto no siempre significa que el modelo es bueno, ya que puede ser engañoso en algunos contextos, como en los modelos sobreajustados (modelo que es incapaz de generalizar nuevos datos ya que hay un ajuste excesivo a los datos de entrenamiento). **RECM:** evalúa la efectividad de un modelo de clasificación. Proporciona una estimación de la precisión que se puede esperar de un clasificador cuando se aplican nuevos datos. Se utiliza para comparar diferentes modelos de clasificación y seleccionar el que mejor se adapte a los datos y problema específico. El RECM es mas sensible a los puntos outliers. Te hace una visión "más real". En resumen el RMSE tiene mas sensibilidad a los errores grandes y el MAR tiene robustez frente a los valores atípicos. **[Bootstrapping]** El **bootstrapping** obtienen muestreos con reemplazamiento del conjunto de datos inicial. Cada muestra se obtiene seleccionando aleatoriamente observaciones de la muestra original con reemplazo. ![Imatge que conté text, captura de pantalla, Font, línia Descripció generada automàticament](media/image10.png) Sus ventajas es que es flexible ya que no requiere suposiciones sobre la distribución de los datos, además es relativamente fácil de implementar. **[Tema 1.1: Métricas y funciones de perdida:]** **[Métricas para regresión:]** Están basadas en la medición de los errores de predicción. Sirven para determinar cuán bien un modelo se ajusta a los datos y como de precisas son sus predicciones. Cuando se calculan los errores con los mismos datos con los que se ha entrenado un modelo, se obtienen residuos in-sample. Estos residuos son propensos a **leakage data** por lo que no evalua bien el posible **overfitting** (cuando el tamaño medio del residui es menor que el tamaño medio del error de predicción out-of-sample) [Tipos de métrica:] **MSE:** Es el error cuadrático de predicción. Mide la media de los errores al quadrado entre las predicciones del modelo y los valores reales. El MSE penaliza más los errores grandes a causa del cuadrado de las diferencias, lo que significa que es sensible a los outliers. Un MSE más bajo indica un mejor ajuste del modelo. **Unbiased (No sesgado)** Si el error de predicción da positivo significa, que por **término medio** el valor observable es mayor que el que se predice. Si el error en cambio tiene un negativo, por término medio el valor observable es menor que el que se predice. No significa que sea incorrecto, ya que es por término medio. Lo que nos indica es si en promedio me paso con la predicción o me quedo corto. **RMSE**: Es la raíz cuadrada del MSE. Cuantifica la diferencia entre los valores predichos por un modelo y los valores reales observadors. Es una de las formas de medir el error de un modelo de regresión. ![](media/image12.png)El RMSE tiene la ventaja de estar en las mismas unidades que la variable de salida, lo que facilita la interpretación. Es decir, si estamos prediciendo precios en dólares, el RMSE también estará en dólares. Un [valor bajo] indica que el modelo tiene un buen ajuste a los datos, ya que significa que las predicciones están cerca de los valores reales. En cambio un RMSE [valor alto] sugiere que hay diferencia entre las predicciones del modelo y los valores reales, y por tanto el modelo no esta capturando la relación entre las variables. **MAE:** es el error absoluto medio. Es la media del error absoluto. Cuando hay outliers en el caso del RMSE hace que sea mayor al usar al cuadrado, en cambio el MAE trata todos los errores de manera uniforme, lo que lo hace menos sensible a outliers tal y como se hace el RMSE. El MAE se expresa en las mismas unidades de salida. En esta métrica un [valor bajo] indica que el modelo tiene un buen ajuste a los datos y las predicciones se ajustan a los valores reales. En cambio, [un valor alto], significa todo lo contrario. **Coeficiente de determinación (R^2^):** Esta métrica indica la proporción de la varianza en la variable dependiente que es predecible a partir de las variables independientes. Por ejemplo, si tenemos el precio de la casa versus la antigüedad y el tamaño y el resultado del coeficiente es del 70%, quiere decir que, el 70% la variabilidad de las oscilaciones vendría explicadas por la antigüedad y el tamaño. Y el 30% del precio de la casa vendrá explicado por otros factores. Es decir, el 70% del precio de las casas puede ser explicada por la antigüedad y el tamaño. Una de las problemáticas del R^2^ es que mide la relación lineal entre los valores observados y predichos, pero no mide el *agreement* (concordancia de los valores a la línea de 45 grados)*.* Es decir, el coeficiente evalúa cuánta variabilidad de la variable dependiente es explicada por la variable independiente en un modelo lineal, pero no proporciona información sobre cuán cerca están las predicciones del modelo de los valores reales en términos absolutos. Un coeficiente alto no garantiza que las predicciones sean precisas, ya que puede haber casos en los que el modelo explique bien la variabilidad, pero las predicciones individuales estén lejos de los valores reales. ![Imatge que conté text, captura de pantalla, línia, diagrama Descripció generada automàticament](media/image14.png) La línea de 45 grados es una referencia que indica donde los valores predichos son iguales a los valores reales. Un modelo que predice correctamente se ajusta a esta línea. Por tanto, un modelo que tiene un R^2^ alto pero que no se alinea bien con la línea de 45 grados puede tener predicciones mas altas o bajas, lo que indica un mal ajuste en términos de precisión. **[Métricas de clasificación:]** Las métricas de clasificación son herramientas utilizadas para evaluar el rendimiento de modelos de clasificación, es decir, aquellos que asignan etiquetas a instancias basándose en características de entrada. Hay dos tipos de predicción: - **Hard predictions** son predicciones categóricas definitivas. Es una **predicción de grupo** a partir de unas características, si por ejemplo está enferma o no. Se hace una **predicción hard**, no distingue el % de la predicción, tiene una predicción binaria. La tabla de confusión es útil en las predicciones hard. Se da éxito cuando se da la característica, y no éxito no se da la característica, normalmente el éxito es el minoritario. En la tabla los verticales son los observables y horizontal son los predichos. ![Imatge que conté text, captura de pantalla, Font, nombre Descripció generada automàticament](media/image16.png) El 73 es un true positive, porque son aquellos que hemos predicho como enfermos y están enfermos. El 35 son false negative porque hemos predicho que no estaban enfermos, pero si lo están. El 42 es un false positive porque hemos predicho que están enfermos pero no lo están y por ultimo el 545 son los true negative, ya que hemos predicho que no estaban enfermos y no lo están. - Si hacen predicciones numéricas, en lugar de grupo, se llaman una **predicción soft**. Son aquellas que se hace el estudio de las predicciones de probabilidades pertenecientes a cada grupo. Indican la confianza del modelo en cada clase [Métricas de clasificación de predicción hard:] - **Misclassification rate:** mide la tasa de clasificación incorrectas en la tabla de confusión. Mide porcentaje de los incorrectos del total. Si da valores bajos significa que el modelo clasifica correctamente los casos. Se usa para evaluar el error global del modelo FP: False Positive; FN: False Negative - ![](media/image18.png)La **acuracidad** mide la tasa de clasificación correcta en la tabla de confusión (% clasificado bien). Cuando las clases son muy asimétricas, uno muy minoritario es muy engañoso. Es más útil, cuando no hay un gran desequilibrio en las clases. - **Precisión:** El denominador, es lo que yo predigo como positivo. Mide la tasa de predicciones positivas correctas respecto al número total de predicciones positiva, es decir, el resultado indica de los que hemos predicho como positivo, la probabilidad de que sea cierto. Es útil cuando los costos de un falso positivo son altos - **Sensitividad/Sensibilidad o recall:** Es la proporción de instancias positivas correctamente identificadas. Esta métrica nos da la probabilidad de que por ejemplo el que hemos detectado como enfermo realmente este enfermo. La métrica mide la capacidad del modelo de identificar correctamente las instancias positivas del total de casos que pertenecen a la clase positiva. Mide la tasa de positivos correctos respecto al total de positivos reales observados. ![](media/image20.png) - **Especificidad:** Esta mide la tasa de negativos correctos respecto al total de negativos reales observados. - ![](media/image22.png)**F1 -- measure:** es una medida objetivo, se usa en datos que no son asimétricos, es decir que los datos están muy desbalanceados. Esta medida combina la precisión y el recall (recuperación). Es especialmente esencial en problemas de clasificación donde el equilibrio entre la precisión y el recall es esencial. - **Detección de prevalencias:** es el número de predicciones positivos del total. El resultado indica el porcentaje total de las predicciones cuales están etiquetadas como positivas. Es útil para entender como el modelo tiende a etiquetar las clases. - **J -- Index Youden:** es una métrica que combina la sensibilidad y especificidad para evaluar el poder diagnóstico del modelo. Es útil para seleccionar punto optimo de la curva ROC. Su valor esta entre -1 y 1, si se acerca a -1 es peor y a 1 perfecto. ![](media/image24.png) - **AUC (Area bajo curva ROC):** el AUC es el área bajo la curva ROC, es un valor que esta entr 0 y 1, e indica el rendimiento general del modelo. El AUC mide la probabilidad de que el modelo asigne un puntuaje mas alta a una instancia positiva que a una negativa. Por ejemplo, un AUC de 0,9 indica que en el 90% de las veces el modelo clasifica correctamente una instancia positiva sobre una negativa. En el caso de clases desbalanceadas, la Accuracy puede ser engañoso, en cambio el AUC proporciona una evaluación mas robusta de la capacidad discriminativa del modelo. - AUC = 1 significa que el modelo clasifica perfectamente las instancias positivas y negativas. - AUC = 0, 5 significa que el modelo no tiene capacidad discriminativa y es equivalente a una predicción aleatoria. **[Código:]** Ejemplo de clase: Se basa en una Base de Datos de una empresa y sus trabajadores y predecir que trabajadores abandonan. Imatge que conté text, captura de pantalla, Font, línia Descripció generada automàticament Carga el conjunto de datos llamado attrition. Establece una semilla para garantizar que los resultados sean reproducibles y divide el dataset en dos subconjuntos, donde el 70% se utilizara para el entrenamiento: entrenamiento y testing. ![Imatge que conté text, Font, captura de pantalla, àlgebra Descripció generada automàticament](media/image26.png) Crea 3 formulas para los diferentes modelos de regresión logística. - Fm1\_log: la variable attrition solo depende de MonthlyIncome - Fm2\_log: la variable attrition depende de MonthlyIncome y OverTime. - Fm3\_log: la variable Attrition depende de todas las variables disponibles del dataset. Después especifica el modelo de regresión logística. Indica que para el log\_model crea una especificación para un modelo de regresión logística y indica que usara la función glm() de R para ajustar el modelo. Glm representa el modelo de regresión lineal generalizada Finalmente se crean tres objetos de tipo workflow, que son flujos que combinan una formula para definir las variables predictoras y la respuesta y la especificación del modelo. Básicamente, incluye al formula que relaciona la variable dependiente (Attrition) con las independientes (MonthlyIncome, OverTime, etc.). Y integran el modelo especifico que se va a usar, en este caso la regresión logística con glm. Por ejemplo, el log\_wf1 solo predice Attrition usando MonthlyIncome ![Imatge que conté text, Font, nombre, captura de pantalla Descripció generada automàticament](media/image28.png) Imatge que conté text, Font, captura de pantalla, àlgebra Descripció generada automàticament La diferencia entre unos resultados y los otros es que en el primer modelo solo tenemos en cuenta dos variables, en cambio en el segundo nos basamos en todas las características de la BD, y por tanto más información, y el algoritmo es capaz de detectar el abandono de los trabajadores. ![Imatge que conté text, captura de pantalla, nombre, Font Descripció generada automàticament](media/image30.png) Estos resultados nos indican: - **Accuracy:** indica que el modelo clasifica bien el 85,9% de los casos de abandono de trabajadores. - **Detection Prevalence:** indica que el 11,2% son identificados como abandonos por el modelo. - **F-measure:** mide la armonia entre la precisión y la sensitividad o recall. - **Precisión:** indica que el 61,2% de los trabajadores que el modelo identifica como abandonos, lo son. - **Recall:** indica que el modelo identifica 41,7% de los trabajadores que realmente abandonaron. - **ROC AUC:** un resultado del 0,815 sugiere una buena capacidad del modelo para discriminar entre trabajadores que abandonan y los que se quedan. - **Specificity:** indica que el modelo identifica correctamente el 94,7%. **[Curva ROC y AUC:]** **Gráfico ROC ,** es un plano bidimensional para evaluar el performance de los algoritmos de clasificación binaria. En el **eje de la y,** se mide valores de sensitividad es decir la tasa de verdaderos positivos, y el **eje de la x**, e mide la tasa de falsos positivos, es decir 1 -- especificidad. La curva indica cómo evoluciona la relación entre los dos ejes, según los umbrales de probabilidad que clasifiquen a los individuos como positivos. (umbral es como el % que ponemos nosotros para marcar que se clasifique como un positivo). La línea que aparece en puntitos es la curva ROC (es como si lo haces a dedo), representa un modelo que clasifica aleatoriamente ya que no tienen discriminación entre clases, el modelo tiene un 50% de probabilidades de clasificar correctamente un caso positivo o negativo. Cuanto mayor sea el área respecto a la curva de predicción por encima, significa que el modelo de predicción es mejor. Una curva ideal es esa que subir rápidamente hacia el punto (0,1), ya que significa que alta tasa de verdaderos positivos y una baja tasa de falsos negativos.Lo ideal es estar en (1,1)porque significa que aciertas todos los positivos. **AUC (Área Bajo la Curva):** es el área bajo la curva ROC, su valor esta entre 0 y 1. Proporciona una medida cuantitativa de la capacidad de discriminación del modelo. - Un AUC de 0,5 significa que el modelo no tiene capacidad de discriminación (es igual a una clasificación aleatoria). - Un AUC de 1 significa que el modelo clasifica perfectamente todos los positivos y negativos. - Un AUC de 0,5 y 1, indica que el modelo tiene alguna capacidad de discriminación, siendo los valores cercanos a 1 mejores. ![](media/image32.png)**[Código: Calcular la curva ROC]** Primero de todo, se ajustan tres modelos diferentes, utilizando el conjunto de datos de entrenamiento que se llama *attr\_train*. La función fit es la que se encarga de ajustar o entrenar el modelo. Después se calculan las predicciones de probabilidad sobre el conjunto de datos de entrenamiento usando el modelo ajustado. El argumento *type = "prob"* indica que se deben devolver probabilidades en lugar de clases directamente. Imatge que conté text, captura de pantalla, Font, nombre Descripció generada automàticament Incluye las predicciones al conjunto de datos. Se utiliza *mutate* para añadir columnas al conjunto de datos *attr\_train. Estas* columnas contienen las probabilidades estimadas para cada clase (No y Yes) de la variable objetivo de cada modelo. Es decir, por ejemplo, *predm1\_soft\_tr\_Yes* contiene las probabilidades de la clase positiva predichas por el primer modelo, y así por los 3 modelos. Estos resultados se almacenan en attr*\_train\_pred.* Después se realizan de nuevo las predicciones de probabilidad, pero esta vez para el conjunto de datos test utilizando los modelos ajustados anteriormente. ![](media/image34.png)Al igual que en los datos de entrenamiento, se están añadiendo las predicciones de probabilidad al conjunto de datos test. Se añaden tres nuevas columnas que contienen las probabilidades de la clase positiva predichas por cada uno de los modelos. Calcula la curva ROC para cada uno de los modelos, utilizando el conjunto de datos de entrenamiento. La función *roc\_curve* toma como argumentos: 1. El conjunto de datos que contiene las predicciones y las etiquetas verdades (*attr\_train\_pred*). 2. La variable de respuesta que indica si ocurre el evento de interés, es decir abandona o no (*Attrition*). 3. Las columnas que contienen las probabilidades predichas de la clase positiva para cada modelo. 4. ![](media/image36.png)*event\_level = \"second\"* este argumento indica que esta considerando la segunda clase ("Yes") como el evento positivo para el cálculo de la curva ROC. Al igual que el caso anterior calcula la curva ROC, pero esta vez con los datos de test. Se calculas los valores de AUC para los 3 modelos diferentes utilizando los datos de entrenamiento. La función *roc\_auc* toma como valores, los mismo que la función *curve\_roc*. Los resultados se almacenan entre las variables *aucrocmod1\_tr, aucrocmod2\_tr* y *aucrocmod3\_tr*. Segudamente se combinan los resultados de los AUC de los 3 modelos en un solo objeto. ![Imatge que conté text, captura de pantalla, Font Descripció generada automàticament](media/image38.png) Hace lo mismo para el conjunto de datos de test. En el ejemplo de clase el área del test es más pequeña que la del training. Imatge que conté diagrama, línia, Trama Descripció generada automàticament Coger el tercer gráfico, significa como coger el punto más alto del índice de Young. Uno lo vemos de manera visual y otro con datos. ![](media/image40.png)Para verlo con datos, se usa el índice de Youden: Se calcula el índice de Youden para el modelo m3 utilizando el conjunto de datos de entrenamiento. Añade 3 nuevas columnas al dataframe: 1. El recall o la sensitivity: calcula la sensibilidad (tasa de true positives) del modelo utilizando las predicciones de entrenamiento (*attr\_train\_preds*), la variable Attrition y las estimaciones de las predicciones (*hardpreds\_fitwf3\_train)*. 2. *specificity()*, calcula la tasa de verdaderos negativos del modelo de manera similar. 3. *j-index* se calcula como la suma de la sensibilidad y la especifidad -- 1. El índice nos sober para evaluar el rendimiento del modelo, combina ambas métricas. El resultado se almacena en *youden\_index\_tr.* Selecciona el umbral óptimo para el conjunto de entrenamiento. Busca ese umbral que maximiza el índice de Youden. Primero filtra el data frame para encontrar la fila donde el índice de Youden es máximo. Y seguidamente extrae el valor del umbral que corresponde a ese índice máximo. Este umbral máximo se guarda dentro de la variable *best\_threshold\_tr*. ![Imatge que conté text, Font, línia, captura de pantalla Descripció generada automàticament](media/image42.png) Hace exactamente el mismo proceso, para el conjunto de datos de test. [Métricas de clasificación de predicción soft:] Las métricas soft prediction son esas evaluaciones de los modelos de clasificación que generan probabilidades en lugar de predicciones categóricas directas. Son útiles cuando se quiere saber cuán de seguro está el modelo de la predicción. - **MSE:** Mide la distancia cuadrática entre la probabilidad predicha y la observación real, es decir, mide la media de los errores al cuadrado entre las predicciones de un modelo y los valores reales. Un MSE más bajo indica que el modelo tiene un mejor ajuste a los datos. En general no se utiliza mucho esta métrica. - **Entropía cruzada:** Es una medida entre la distribución real y la distribución predicha por el modelo. Penaliza las predicciones que dan un valor de probabilidad pequeña para la verdadera clase. La entropía cruzada mide cuán de bien se predice la distribución de probabilidad real. Un valor bajo significa que el modelo está haciendo mejores predicciones Random forest: busca que los individuos sean lo más homogéneo posible. Los criterios que se utilizan para clasificar es la entropía, la entropía mide la cantidad de información que tu necesitas para guardar algo. La entropía es una mesura del desorden. Cuando haya más distinción entre las probabilidades más entropía encontramos y cuanta menos distinción menos entropía y por tanto más homogeneidad. Lo ideal sería un 1 -- 0 o 0 -- 1. - **Índice de Gini**: Es una medida que mide la desigualdad que se utiliza en el contexto de clasificación para evaluar la pureza de las predicciones. El índice varía entre 0 y 1, un valor 0 indica que todas las observaciones pertenecen a una sola clase (pureza total), mientras que un valor de 1 indica que las observaciones están distribuidas uniformemente entre todas las clases (impureza total). En el contexto de clasificación, un índice de Gini bajo indica un mejor rendimiento del modelo. **[Feature Engineering:]** Un feature engineering consiste en transformar la variable para obtener un mejor resultado. Tendremos features cualitativos y cuantitativos. El feature enginnering mejora los datos para que el modelo pueda aprender patrones más fáciles, la información irrelevante o ruidosa no interfiera y se capturen relaciones complejas o no obvias entre los datos. Los feature enginering incluyen: - **Codificación de features cualitativos:** hace referencia al proceso de convertir variables categóricas en un formato que pueda ser utilizado por los algoritmos. Estas codificaciones pueden ser: - [One-hot Encoding]: Crea una nueva columna para cada categoría y asigna valor 0 o 1 dependiendo de si la observación pertenece a esa categoría o no. - [Label Encoding:] Asigna un numero entero a cada categoría. Este método es más problemático para algunos algoritmos. - **Transformaciones de feaures cuantitativos:** Implica modificar variables numéricas para mejorar su distribución o hacerlas mas adecuadas para el modelo. Algunas de ellas son - [Normalización]: escalar los datos para que estén en un rango especifico. - [Estandarización:] transformar los datos para que tengan una media de 0 y una desviación estándar de 1. - [Transformaciones logarítmicas:] aplicar una transformación logarítmica a variables que tienen una distribución sesgada para hacer uqe la distribución sea mas normal. - **Interacciones:** es la creación de nuevas características que representan la combinación de 2 o más características existentes. Estas pueden ayudar a capturar relaciones no lineales entre variables y capturar relaciones más complejas entre los datos. - **Imputaciones de missing:** hace referencia a rellenar esos **datos missing** que son esos datos que no hay. Los datos missing pueden afectar negativamente el rendimiento del modelo por lo que es importante manejarlos. Hay varias opciones para tratar estos datos, reemplazar los datos missing con la media, mediana, por la Moda, u otras técnicas mas sofisticadas. [ ] **[Codificación de feature cualitativos (factores)]** La mayoría de los algoritmos no entienden los features cualitativos, por tanto, se tienen que expresar la información en forma numérica para que esta información se pueda usar en el algoritmo. Las únicas excepciones de algoritmos que no es necesario son aquellos basados en árboles y los modelos naive Bayes, ya que utilizan la información sin la necesidad de tener que recodificarlas numéricamente. Hay dos tipos de features cualitativos: - **String:** son esas variables categóricas, que se le llama factor la variable, y a cada categoría de llama nivel (level). Un ejemplo sería el tipo de casa por ejemplo si es un piso, adosado, un chalet, etc. - **Factores:** - [Factores nominales]: son esos que no se puede establecer un orden en los niveles. Por ejemplo, el barrio de una ciudad. Lo mas habitual es codificar los calores de la variable a través de dummies o binarias. La **codificación dummy** es la técnica que convierte cada categoría de una variable nominal en una nueva variable binaria (dummy), el método más utilizado es la codificación **one-hot.** - [Factores ordenados u ordinales]: son esos factores que somos capaces de establecer un orden en las categorías. Por ejemplo, nivel de satisfacción. Para las variables ordinales se puede utilizar la **codificación ordinal** que asigna un numero entero a cada categoría de acuerdo con su orden. En Python la mayoría de las variables las lee como string, y en R como factores nominales. Por tanto, en R tendremos que transformar las variables nominales en ordinales si es necesario. **[Contraste de treatment o reference cell:]** Es el proceso de convertir la variable factor en variables dummies binarias se le suele denominar *contraste* o *parametrización* en R. ***El treatment*** significa construir tantas variables dummies como niveles de la variable. Luego se elimina una de estas variables dummy para evitar la multicolinealidad (ocurre cuando hay variables altamente correlacionadas). La variable que se elimina se convierte en la categoría de referencia o grupo de referencia. Entonces en el modelo, el intercepto representará el efecto de la categoría de referencia (la que hemos quitado). Lo que significa que el modelo estima el valor esperado de la variable dependiente cuando la variable categórica es la que hemos quitado. El resto de las variables dummies representar los efectos diferenciales de cada grupo en comparación con la categoría referencia. ![](media/image44.png)[Ejemplo:] Carga la librería tidymodels, y carga el conjunto de datos ames. Imatge que conté text, Font, línia, captura de pantalla Descripció generada automàticament **Para los features nominales**: Transforma la variable de *Sale\_Price*. Crea una nueva variable, que es el logaritmo en base 10 del precio de venta. ![Imatge que conté text, Font, captura de pantalla, línia Descripció generada automàticament](media/image46.png) Crea una lista de las variables nominales. Crea un vector llamado *nominal\_feautures* que contiene el nombre de las variables que se desea convertir en factores nominales. ![](media/image48.png)Convierte todas las variables de *nominal\_features* en factores. Recodifica la variable *Pool\_QC.* Cambia los valires de varias categoiras a solo dos categorías binarias. **Para los features ordinales**: Imatge que conté text, captura de pantalla, Font, línia Descripció generada automàticament Define un vector que contiene los nombres de las variables que son ordinales. Seguidamente se hace un bucle for que itera sobre cada elemento del vector, cuenta cuantas veces aparece cada nivel de la variable en el conjunto de datos y ordena los resultados por los niveles de la variable. Se realizan diferentes transformaciones del conjunto, se recodifica y se especifican los niveles en un orden particular en alguna de ellas. Algún ejemplo de ellos son estos: POSAR FOTOS DEL CODI **Contraste *treatment* o *reference cell*** La variable que se codificara con treatment, es un factor cualitativo con 5 niveles: Primero, muestra las opciones actuales de contraste que se están utilizando para las variables categóricas. Esto puede ser útil para entender como manejar las variables categóricas en los modelos. Seguidamente, crea una tabla de frecuencias para la variable *Bldg\_Type*. La función *table()* cuenta cuantas veces aparece cada nivel de la variable y devuelve un resumen, es útil para tener una visión general de la distribución. ![](media/image50.png)Para que el programa R entineda esta variable es necesario convertir-la, esto se hace a partir de la codificación de contrastes. ***Contrasts(ames\$Bldg\_Type)*** nos devolverá una matriz de contrastes Las filas representan los niveles de referencia, en este caso OneFam es el nivel de referencia por defecto. Y las columnas representan los otros niveles de la variable. Un valor 0, indica que la fila correspondiente no esta presente en esa columna y 1 que sí. La interpretación será: Tenemos 4 dummies, y el nivel OneFam que es el de referencia i no se incluye en el modelo. Lo que el resto de parámetros asociados al resto de dummies darán los efectos diferenciales respecto del grupo de referencia. - La primera fila son todo 0, lo que indica que es el nivel de referencia. - Segunda fila: En la primera columna tiene un 1, lo que significa que cuando el tipo de edificio es TwoFmCon se asigna un valor 1 para esa categórica en comparación con el nivel de referencia (OneFam). - Tercera fila: Tiene 1 en la columna Dúplex, lo que significa que cuando el tipo de edificio es Dúplex, se asigna un valor 1 para esa categoría en comparación con el nivel de referencia. - Cuarta fila: Tiene 1 en la columna Twnhs, lo que significa que se asigna 1 para esa categoría en comparación con el nivel de referencia. - Quinta fila: Tiene 1 en la columna TwnhsE ,lo que significa que se asigna 1 para esa categoría en comparación con el nivel de referencia. Cuando asigna esta 1 en comparación con el nivel de referencia, significa que el modelo esta evaluando como se comporta la categoría en relación con el nivel de referencia. Si por ejemplo el coeficiente de TwoFmCon, es de 5000, significa que, en promedio, las casas clasificadas como TwoFmCon tienen un precio que es de 5000 unidades mas alto que las casas clasificadas como OneFam. **Contrastes one\_hot** La codificación que mete una dummy por categoría, se llama one-hot. Este sirve para aquellos algoritmos que no es una regresión. ![](media/image52.png)En este caso no se elimina ningún dummy y la matriz muestra multicolinealidad-exacta. **[Codificación de factores ordinales:]** Muchas veces los niveles de los factores que muestran una ordenación. Si se codifican con *contraste treatment,* que corresponde a esta ecuación: Donde esta estimado diferentes coeficientes, para cada uno de los niveles de la variable ordinal en comparación con un nivel de referencia, en este caso bajo. Lo que prodira pasar, es que sino se considera que los factores son ordinales y se tratan como factores nominales (sin orden) se podría dar el caso que el coeficiente de Beta 2 sea mayor que el coeficiente de beta 3. Esto podría ser problemática ya que significaría que la diferencia entre medio y alto, es mayor que la diferencia entre medio-alto y bajo, por lo que no tiene sentido en un contexto ordinal. En resumen, si se codifica con dummiesno tenemos garantizados que en las estimaciones los parámetros sigan el orden establecido. Pero igualmente es posible poder codificar los features ordinales con dummies. [Contraste Poly:] Para evitar esta problemática, los ordinales no los categorizaremos con ordinales, sino con poly. El contraste poly o polinomico es una forma de codificación que mantiene la relación ordinal y permite que la distancia entre los niveles guarde una relación polinomial. Con el contraste poly (polinomios) nos garantizamos que el orden se mantenga. Se codifica con valores centrados. Lo hace a través de que la distancia entre los valores guarde una relación polinomial. En R, por defecto, se utiliza un polinomio de orden (C-1), C representa el numero de niveles del factor ordinal. ![](media/image54.png)Esta tabla muestra los coeficientes para diferentes ordenes polinómicos (lineal, cuadrática, etc), para cada nivel de un factor ordinal. El contraste poly es útil cuando se espera que los efectos de los niveles sobre la variable respuesta sigan un patrón que se parezca a una relación polinómica. Eso significa que las diferencias entre los niveles no son constantes, sino que pueden augmentar o disminuir de manera no lineal. En ocasiones los factores ordinales se codifican con valores enteros. También si cuando se analizan los datos se observa que los efectos de los distintos niveles no guardan ningún patrón claro (no hay una relación lineal o polinómica evidente), entones se tratará el factor como si fuera ordinal. **[Transformaciones de features cuantitativos:]** Son técnicas para modificar la escala o la distribución de las variables numéricas. Ayudan a mejorar el rendimiento de los modelos estadísticos y de aprendizaje automático. Se puede utilizar la transformación para la normalización de la distribución, la estabilización de la varianza o mejorar la linealidad. **[Transformación Box - Cox]** En los feactures cuantitativos es normal una fuerte asimetría y/ o dispersión creciente. En estos casos se suele utilizar la transformación logarítmica o una transformación general llamada Box -- Cox. Transforma los datos que no son normales en datos que se asemejan más a una distribución normal Depende del parámetro *Landa.* El valor de este se escoge para maximizar y buscar el valor que mejor normalice la distribución. Cuando landa = 1, no se modifican los datos, simplemente desplazamos los datos. Al final dependiendo del valor que se le da a landa haremos una transformación u otra. - Si landa = 0 transformación logarítmica - Si landa = -1 transformación inversa. - Si landa = 0,5 transformación raíz cuadrada. - Si landa = 1 no realiza ninguna transformación en la variable original. Estas transformaciones las vamos a automatizar, y las vamos a llamar recipes. **[Transformación Yeo Johnson:]** El problema de esta transformación Box -- Cos es que solo vale por los valores positivos. En el caso que hay feautures que puedan tomar valores positivos y negativos hay una generalización de esta transformación, la transformación Yeo -- Johnson. Esta implementada en el paquete de *recipes.* Al igual que la transformación Box -- Cox, permite ajustar el parámetro landa para encontrar la mejor transformación que normalice la distribución de los datos. **[Centrado y escalado:]** Centrado y escalado son técnicas utilizadas para estandarizar características cuantitativas en un conjunto de datos. Es importante cuando las variables tienen diferentes escalas o unidades de medida. Una transformación es: restar la media (centrado) y dividir entre la desviación estándar (escalado) para estandarizar o tipificar. **Centrado**: Centra los datos y se asegura que la media de la variable se 0. Lo que ayuda a mejorar la interpretación de los coeficientes, en casos de que haya múltiples variables ayuda a reducir la correlación entre las variables independientes. Cambia la referencia de los datos. Por ejemplo tenemos una media de 70 kg, al centrar haces que un valor de 75 kg se convierta en +5 o uno de 65 en -- 5 (65 - 70). **Escalado:** Transforma la variable de tal manera que su nueva desviación estándar sea 1. Los valores se expresan en términos de cuantas desviaciones estándar esta por encima o debajo de la media. Por ejemplo, si el peso del individuo es de 0,8 significa que esta a 0,8 desviaciones típicas por encima de la media. Eliminamos las unidades a partir de la desviación típica Se estandariza la variable y eliminamos las unidades, lo que nos permite que diferentes variables se comparen en la misma escala. Por ejemplo si comparamos el peso de la población, podremos comparar diferentes habitantes de la población, ya que una variable con mucha variabilidad puede dominar el modelo sino se estandariza. La ventaja de trabajar con variables estandarizadas es que podemos comparar entre variables, ya que se convierten a una escala común. Otra de las ventajas es que mejora el rendimiento de modelos, nos reduce los valores atípicos o outliers ya que reduce su influencia en el análisis. **[Código:]** ![](media/image56.png)[Agrupación niveles en récipe**:**] Crea una receta para predecir el *Sale\_Price,* utilizando las variables de *Gr\_Liv\_Area*, *Year\_Built*, *Neighborhood* y *Bldg\_Type*, Seguidamente agrupa las categorías de *Neighborhood* que tienen una frecuencia menor al 1% en una categoría "otra". Convierte las variables categóricas (nnominales) en variables dummy, pero le indica que no use la codificación one-hot. (*one\_hot = FALSE*). Después aplica la transformación Box -- Cox a *Gr\_Liv\_Area* para estabilizar la varianza y hacer que la variable sea mas normal. Finalmente normaliza (escalado) las variables de *Gr\_Liv\_Area *y *Year\_Built* para que tengan media 0 y desviación estándar 1. Toda esta información la guarda en la variable ***rec1\_ames*** que representa la receta. Después prepara la receta, es decir que ajusta la receta a los datos y se calculan los parámetros necesarios para cada uno de los pasos definidos. Después de preparar la receta, se utiliza la función *tidy()* para mostrar información sobre la recete. En el caso de *number = 1* indica que muestre los resultados correspondientes al primer paso, que de la variable *Neighborhood* los que tenían una frecuencia menor al 1%. Es importante que si el objeto receta se entrena con datos del training, los parámetros estimados se mantendrán al utilizar la receta con los datos frescos de test para impedir el data leakage. Por ejemplo, si calculamos la media y la desviación estándar de una variable en el conjunto de pruebas y de entrenamiento, y utilizamos esos valores para normalizar, estaríamos introduciendo data leakage. Pero si calculamos la media y la desviación solo en los datos de entrenamiento y después aplicamos esos valores a los datos de prueba, evitas la filtración de datos. [Factores ordinales en recipes:] Los factores ordinales se pueden clasificar en el objeto *récipe* como valores numéricos utilizando las funciones de ***step\_ordinalscore()*** o ***step\_integer()*.** Es importante que los factores ordinales se codifiquen antes de la codificación de los factores nominales como dummies. Ya que de esta manera nos aseguramos que el modelo los trate como variables ordinales. **[Splines no lineales:]** Los splines no lineales nos permiten modelar relaciones complejas entre variables. Pueden capturar patrones mas complejos y no lineales de los datos, a diferencia de las modelos lineales que asumen que la relación entre variables es constante. Hay veces que las relaciones entre la variable dependiente y los features numéricos pueden ser no lineales y no responde a ninguna relación paramétrica de tipo polinómico, trigonométrico o de cualquier otro tipo funcional paramétrico, como por ejemplo una regresión lineal. Y por tanto la función no se acerca a los puntos. ![](media/image58.png)Una opción es transformar las variables utilizando splines, donde estimamos una función dentro de cada nodo (un nodo es la separación por trozos del "grafico"). La función que suele estimar es un polinomio cubico, ya que puede captar casi captar cualquier tipo de curvatura. Cuantos más nodos pongamos más se retorce la función, y eso es un problema, ya que, logramos que la función pase por todos los puntos, entonces provoca que fuera de esos puntos no va servir de nada, es decir adaptamos demasiado la función a ese conjunto de datos y sería muy probable que se produciría un overfitting. Con los splines estimamos las funciones para cada una de las x (nodos). [Código:] Imatge que conté text, Font, captura de pantalla, línia Descripció generada automàticament Se crea una receta para preprocesar los datos. En esta receta hacemos diferentes transformaciones: - Aplica la transformación Box-Cox en la variable *Gr\_Liv\_Area.* Estabiliza la varianza y hace que la variable se asemeje más a una distribución normal. - Aplica una regresión spline natural a partir de *step\_ns()* a las variables *Longitude* y *Latitude*. Con 20 grados de libertad, estos grados indican cuán de flexible será el modelo al ajustar la relación entre la variable independiente y la variable dependiente. - Convierte las variables categóricas en variables dummie. - Normaliza alguna de las variables, para que tengan una media 0 y una desviación estándar de 1. De tal manera, que las variables estén en la misma escala. ![Imatge que conté text, Font, blanc, línia Descripció generada automàticament](media/image60.png) Prepara la receta y calcula los parámetros necesarios para las transformaciones especificadas y visualiza los resultados de algunos de ellos. **[Reducción de la dimensión:]** Hay veces que se tienen muchas variables predictoras (features) que pueden incluirse en el modelo, pero están muy correlacionadas entre ellas. Es decir, que las variables tienen mucha información en común. Una opción para estos casos es intentar reducir la dimensión del espacio realizando un análisis previo de componentes principales (pca) o parciales (pls). En el caso del PCA es encontrar las direcciones (componentes principales) en las que los datos varían más. En el caso de PLS busca encontrar una relación entre las variables independientes (predictoras) y las variables dependientes (respuesta).Estos procedimientos construyen nuevas variables features a partir de las originales con dos condiciones: - El número de componentes sea inferior al número de features originales y que retengan la máxima información en común posible del conjunto original. El algoritmo ***pls*** intenta, que cada componente tenga la mayor correlación posible con la variable target. - Que los componentes estén incorrelacionados (no correlacionados) entre ellos. Para empezar el proceso se tendrían que estandarizar las variables. Un criterio para escoger el primer componente es intentar que maximice la información común de todas, como por ejemplo la varianza. Por ejemplo, si la varianza es un 60, significa que puede explicar ya el 60% del sistema. Para escoger los demás componentes, tenemos que intentar que maximice la información común y además que explique información que no explique el resto de los componentes. El propósito es reducir los features para que puedan explicar la información y que retenga la máxima información común posible del conjunto original. Además, se intenta que cada uno de los componentes tenga la mayor correlación posible con la variable target. Se puede perder información, pero la ventaja que tenemos es que tenemos mucha menos "basura" en el sistema y por tanto es más fácil de manejar. En los modelos que se introduce una gran cantidad de features sin analizar individualmente cada uno, es probable que algunos de los feautures muestren muy poca o ninguna variabilidad (su varianza sea nula). En este tipo de features suelen ser perjudiciales para muchos algoritmos. Las características que no aportan información útil al modelo pueden introducir ruido, lo que puede afectar negativamente su rendimiento y también puede provocar problemas de estimación. El paquete ***recipe*** permite eliminar de manera automática este tipo de feautures a través de las funciones ***step\_nzv()*** (filtra aquellos feautures con varianza casi nula) o ***step\_zv()*** (filtra aquellos feautures con varianza nula). [Código:] Preparamos la receta, como anteriormente, donde aquí como mas pasos: - Elimina la variable *Sale\_Price* del conjunto de predictores, ya que es la variable objetivo y no se debe utilizar en el predictor. - Excluye aquellos predictores con varianza casi nula con *step\_nvz()*. - En la ultima línea, realiza un análisis de componentes principales (PCA) en todas las variables numéricas, menos en *Year\_Built.* El *threshold = 0,6*, indica que se seleccionaran componentes principales que expliquen al menos el 60% de la varianza total. ![](media/image62.png) Une la receta con un algoritmo. Con el fin de crear un ***workflow***, es una estructura que encapsula tanto el preprocesamiento de los datos como el modelo que se va aplicar en esos datos. En el caso del código, se crea un objeto que representa el modelo de regresión lineal. Y seguidamente se crea el workflow donde se añade el modelo de regresión lineal y la receta hecha. Se utiliza el modelo definido en el workflow para ajustarlo a los datos de entrenamiento. ![Imatge que conté text, Font, captura de pantalla, línia Descripció generada automàticament](media/image64.png) Una vez ajustado el modelo con la función *fit*, se obtiene un objeto que contiene el modelo ajustado y el preprocesamiento que se realizo en los datos de entrenamiento. Se utiliza este objeto para realizar predicciones tanto **in-sample** (hacer predicciones sobre los mismos datos que se utilizaron para entrenar en el modelo) como **out-of-sample** (hacer las predicciones con los datos de test). Todo el preprocesamiento se realiza con los datos de training de tal manera que el ejercicio de predicción con datos de test simula una situación real donde esos datos eran absolutamente desconocidos cuando se realiza el training. Imatge que conté text, captura de pantalla, Font, nombre Descripció generada automàticament Se crea un data frame para los datos de entrenamiento, contiene la columna Sales Price y la columna pred que contiene las predicciones realizadas y se calculan las métricas de rmse y mae. **[Interacción entre factores]** En muchas ocasiones pueden existir interacciones entre variables predictoras que hacen que la combinación de valores de estos features tenga un efecto distinto sobre la variable target, y eso es lo que se llama interacción entre factores. Estas interacciones se pueden dar tanto en features cualitativos, cuantitativos a los dos. La manera de incluir las interacciones en un modelo es a través del *product feautures.* Incluir interacciones en el modelo puede mejorar la capacidad para ajustarse a los datos y hacer predicciones más precisas, también pueden proporcionar información valiosa sobre diferentes factores y pueden ayudar a identificar relaciones no lineales entre variables. **[Interacción entre factores cualitativos:]** Por ejemplo, tenemos una BD de pacientes, donde el factor target es el infarto y los factores predictores son la obesidad y si es fumador. ![](media/image66.png)**Modelo sin interacción**: En este caso, los efectos de obesidad y el tabaquismo se consideran de manera independiente. Es decir, el impacto de ser obeso en la probabilidad de infarto no depende de si la persona es fumadora o no. **Modelo con interacción**: En este caso, el B3 captura como la combinación de ser obeso y fumador afecta la probabilidad de infarto. Si B3 es grande, la combinación de los dos factores afecta mucho mas a la probabilidad de infarto de cada uno de ellos, ya que afecta mas que la suma de los efectos individuales de ser obeso y fumador por separado. Si por ejemplo el B3 recoge si es fumador y obeso, el efecto afecta mucho más, y por tanto en este ejemplo la probabilidad de tener infarto es mayor que cada uno por separados La interpretación de la formula es: Si B1 es positivo indica que ser obeso aumenta la probabilidad de infarto, si B2 es positivo significa que ser fumador también aumenta la probabilidad de infarto i si B3 es grande y positivo, sugiere que los pacientes que son tanto obesos como fumadores tienen un riesgo mucho mayor de infarto de lo que se esperaría solo sumando los efectos de ser obeso y fumador por separado.. **[Interacción cualitativo-- cuantitativo:]** Hay veces que el efecto de un feauture cuantitativo puede cambiar según los niveles de otro feature cualitativo. Por ejemplo, en un modelo de regresión, la pendiente de una predictora puede ser distinta según los niveles de otra variable factor. ![Imatge que conté captura de pantalla, diagrama, línia, Trama Descripció generada automàticament](media/image68.png) Se puede observar que es bastante lineal, y podemos observar que si que hay una relación entre el precio de casa y metros de la casa con el tipo de casa. No vale lo mismo augmentar un metro cuadrado en un piso que un chalet. Para introducir las interacciones dentro de la receta (objeto recipe) se ha a través de la función *step\_interact()*. **[Imputación de variables missing:]** **[Definición de datos missing:]** Hay ocasiones que las bases de datos incluyen datos missing (codificados como NA) que es necesario tratar antes del proceso de modelización. Hay algunos algoritmos, por ejemplo, los basados en árboles, que se pueden tratar los datos missing directamente sin la necesidad de realizar ninguna imputación. **[Tratamiento missing en R:]** La opción que utiliza R por defecto para el tratamiento de missing suele ser *na.rm*. Esta opción se puede replicar en un objecto recipe (receta) con la función ***step\_naomit().*** Esta función elimina todas las observaciones que contengan valores NA o NaN. ![](media/image70.png)Por ejemplo, cuando encuentre cualquier de las casas que tenemos en la BD encuentre una NA, esa la quita. Esta función se pone al principio de la receta. **[Técnicas de imputación:]** Si los datos missing están diseminados por toda la base, nos podemos encontrar con el problema de eliminar una parte sustancial de los casos, es decir eliminar gran parte de nuestra base de datos y por tanto influiría el poder predictivo de los modelos. Una solución es las **técnicas de imputación** que consisten en dar valores a los datos missing utilizando la información disponible en la propia base de datos como puede ser la media o la mediana por los feature numéricos, para los cualitativos se tendría que hacer con la moda, por ejemplo. [Imputación unidimensional:] Imputan los valores missing a partir de la información contenida en la propia variable. Se basa únicamente en la distribución de la variable que tiene datos faltantes. - Features cuantitativos: lo hace a través de la media, la mediana y en el caso de series temporales imputa los valores utilizando medias móviles. (step\_impute\_mean() , step\_impute\_median(), step\_impute\_roll() ). - Features cualitativos: reemplaza los valores con la moda o en ocasiones, para este tipo de variables se puede crear una nueva categoría que recoja este tipo de valores. [Imputación multidimensional:] Utiliza la información de otras variables de la base de datos para ver si hay algún patrón predecible en los datos missing y se imputan los datos missing a través de ese patrón. Se utilizará para variables de valor cuantitativo: ![](media/image72.png)Para variables tanto cuantitativas como cualitativas se puede utilizar **vecinos más cercanos** o **Bagged Trees**: ![](media/image74.png)**[Guion para las recipes:]** **[Tema 3: ]** **[Modelo de Regresión:]** **[Regresión Lineal Simple:]** La regresión línea simple modela la relación entre dos variables: una variable independiente (predictora) y una variable dependiente (respuesta). Su objetivo principal es encontrar la mejor recta que se ajuste a los datos, para que pueda predecir el valor de la variable dependiente a partir de la variable independiente. ![](media/image76.png) La B1 es la pendiente de la recta. Indica cuando cambia la y~i~ por cada unidad que cambia la x~i.~ La B0 es la ordenada en el origen. Indica cuanto vale la yi para un valor nulo de xi. Los valores estimados de B0 y B1 se determinan a través del proceso que minimiza la suma de cuadrados de los residuos o maximizando la función de verosimilitud. [Ejemplo de Regresión Simple:] Imatge que conté text, captura de pantalla, Font Descripció generada automàticament En este caso el precio de venta medio augmenta en 112 dólares por cada pie cuadrado adicional de espacio habitable. Pero hay que tener en cuenta que es una estimación, y por tanto hay un margen de error, en este caso de 2,07. ![](media/image78.png) - El estadístico **t**: sirve para contrastar la significatividad individual. Se usa para evaluar la significatividad del coeficiente. Es decir, evalua si un coeficiente de regresión es significativamente diferente de 0 si las medias de dos grupos son significativamente diferentes entre si. [La hipótesis nula (H0]) es que el coeficiente es igual a 0. En el caso del ejemplo es que no hay efecto de *Gr\_Liv\_Area* en *Sale\_Price*. [La hipótesis alternativa (H1)] es que el coeficiente no es igual 0. La nula es la de interés. Queremos contrastar si el Beta es 0 o no, para poder ver la relevancia de la variable, es decir que si explique el comportamiento. - El p.value es el estadístico de contraste. Indica la probabilidad de observar un efecto tan extremo como el observado si la hipótesis nula es verdadera. Un valor de p.value muy pequeño sugiere que rechace la hipótesis nula, lo que indicaría que el área habitable tiene un efecto significativo en el precio de venta. En el ejemplo, en el **intercepto** (representa el valor de la variable dependiente cuando la variable predictora o independiente es igual a 0): - tenemos un *valor de t* de 4,064 lo que indica que hay una diferencia significativa entre el valor del intercepto y cero, lo que significa que el precio de venta esperado cuando *Gr\_Liv\_Area* es 0 es significativamente diferente a 0. - El [valor de p] es muy pequeño , lo que significa que podemos rechazar la hipótesis nula de que el intercepto es igual a 0. Es decir, el precio de venta esperado cuando el área habitable es 0 es significativamente diferente de 0 En ***Gr\_Liv\_Area*** - [El t valor] es de 54,061, un valor muy significativamente diferente a 0. Sugiere que el efecto del área habitable en el precio de venta es muy fuerte y que el área habitable tiene un impacto significativo en el precio de venta. - [El valor de p:] es muy pequeño, lo que indica que es baja la probabilidad de que el coeficiente de *Gr\_Liv\_Area* sea igual a 0. Lo que sugiere es que el área habitable tiene un efecto significativo en el precio de venta. Rechaza la hipótesis nula, lo que significa que el área habitable si es un predictor significativo del precio de venta. [Inferencia:] La varianza se estima de la siguiente manera: El valor de p representa el número de variables predictoras sin incluir el intercepto de B0. Los estadísticos de ***t*** contrastan la hipótesis de significatividad individual con no individual: ![](media/image80.png) VERSUS Imatge que conté Font, tipografia, esbós, disseny Descripció generada automàticament Los ***p-valores*** pequeños asociados a estadísticos t indican rechazo H0 y coeficientes significativos **[Regresión Lineal Múltiple]** ![](media/image82.png)Metemos mas de una variable en la regresión. Imatge que conté text, Font, captura de pantalla, blanc Descripció generada automàticament El valor cambia respeto al anterior, ya que hemos añadido más variables. En este caso hemos fijado a antigüedad. En el caso de ***Gr\_Liv\_Area*** se espera que el precio de venta augmente 95,97 dólares por cada pie cuadrado adicional del área habitable. El *t valor* de 54,6 es muy alto y el valor p es también muy pequeño, lo que sugiere que el efecto del área habitable en el precio de venta es muy significativo. ![](media/image84.png)Los valores significan que por ejemplo por cada año menos de antigüedad el precio augmenta 1,087 dólares en esas casas que son del mismo tamaño. Y por cada pie cuadrado adicional del augmento de la vivienda, el precio aumenta 96 dólares. - Residual standard error: indica la desviación estándar de los residuos del modelo. Valor bajo significa que el modelo se ajusta bien a los datos. - Multiple R - squared: Indica que aproximadamente el 65% de la variabilidad del precio se puede explicar por las variables independientes del modelo - Adjusted R- squared: es una versión ajustada del R^2^ que tiene en cuenta el número de predictores en el modelo, es útil para comparar modelos con diferentes números de variables. [Efectos interacción]: Una interacción se produce cuando el efecto de una variable depende del valor que tome la otra. Se "cambia" o se modeliza añadiendo como predictor adicional el producto de las dos variables. Es una manera de hacer que la pendiente de cada variable cambie según los valores que tome la otra variable. Las interacciones meten elementos no lineales y por tanto la pendiente de una variable influye con el valor de la otra variables. **Una interacción de segundo grado** no se considera solo el efecto directo de las variables independientes sobre la variable dependiente, sino que también como el efecto de una variable independiente puede cambiar en función de otra variable independiente. Por cada pie cuadrado adicional de augmento en la vivienda, el precio augmenta -1033\$ + 0.57\*Year\_Built. Por cado año menos de antigüedad, la vivienda aumenta el precio en 182,5 dólares + 0,57\* Gr\_Liv\_Area. En este caso el año de construcción depende del tamaño de la casa. **[Hipótesis del modelo de regresión:]** 1. Linealidad en los parámetros no en las variables. La hipótesis establece que la relación entre la variable dependiente y los parámetros del modelo (coeficientes) es lineal ![](media/image86.png) En este caso vemos que los coeficientes con variable logaritmos representan cambios porcentuales. Al tomar logaritmos se reduce la asimetría y outliers. 2. Varianza Constante. La hipótesis establece que la varianxa de los errores (residuos) tiene que ser constante a lo largo de todos los niveles de la variable independiente. Si esta cambia (heterocedasticidad), puede afectar a la validez. Cuando se toman logaritmos en las variables se reduce este problema. 3. No autocorrelación. No debe haber correlación entre los errores de diferentes observaciones. Si hay autocorrelación lleva a estimaciones ineficientes de los coeficientes y pruebas de hipótesis incorrectas. Esta hipótesis sules incumplirse con datos de series temporales con fuerte correlación espacial. 4. No multicolinealidad y p\> n. Esta hipótesis habla de la situación en las que dos o más variables independientes están altamente correlacionadas entre si. Esta situación se puede dar cuando se crean dummies. Y p \> n se refiere a tener mas variables (p) que observaciones (n). Cuando el numero de variables es superior al número de observaciones, se pueden utilizar métodos de regresión penalizada (como Lasso o Ridge) que ayudan a manejar la multicolinealidad y a seleccionar esas variables que son relevantes para mejorar la estabilidad del modelo. **[Regresión logística]**: **[Modelo de Regresión Logística:]** **[Regresión Logística:]** Se utiliza para variable target binaria. Si se usa una regresión lineal para el caso logístico, no esta garantizado que las predicciones de probabilidad estén en el intervalo \[0,1\]. **[Distribución Logística:]** La hipótesis es que las observaciones se generan a partir de la distribución logística. Lo que significa que la probabilidad de que la variable dependiente sea igual a 1 dado un conjunto de variables independientes se modela utilizando la función logística. La probabilidad siempre estará en el intervalo \[0,1\]. 1 es el éxito, y 0 no se da el éxito. Estas probabilidades crecen en forma de S (curva logística). ![](media/image88.png)Una de las características es que pase lo que pase no va a ser mínimo de 0. El mínimo siempre va a ser 0, y el máximo 1. [Transformación logit: ] El odds- ratio (formula arriba) divide las probabilidades de default divido por las no default. Por ejemplo, si el resultado da 2, da la probabilidad de default es el doble que del no default, si es 1 significa que tiene la misma probabilidad. [Interpretación Parámetros:] El modelo es lineal en el algoritmo de los odds-ratio. El valor de exp(β1) mide cuanto cambia el *odds -- ratio* (ratio de probabilidades de éxito vs no éxito) cuando la variable predictora xi cambia en una unidad (si es cuantitativa) o de una categoría o otra si es un dummy binaria. **Ejemplo:** ![](media/image90.png)La variable yi representa default de crédito (1) vs no default (0) y la variable xi es también binaria. Cuando hacemos el coeficiente entre los dos, estamos haciendo el odds-ratio entre los dos, entre los que trabajan y las que no. - Si el que trabaja( β1)= 0,5,significa que para que alguien que trabaja es la mitad de la no default. - Si el B1, vale -0,5, la exponencial es 0,6 y dice que el odds-ratio del que trabaja es el 60% de los que no trabaja. Si es negativa significa que hay una relación negativa entre la variable independiente (que trabaja) y la probabilidad de tener un default. En resumen, significa que la probabilidad de tener un default es un 60,65% menor cuando la variable independiente esta presente en comparación cuando no lo esta. - Si el B1, vale 0, queda la exponencial de B1 vale 1, i por tanto no cambia el odds - ratio. - Si es mayor que 1, el odds -ratio que trabajan es mayor que los que no trabajan. Si en vez de ser cualitativa, es cuantitativa, en este caso el odds-ratio muestra el cambio por cada unidad de aumento. [**Regresión Logística Múltiple**:] Es la extensión de la regresión logística. Se utiliza para modelar la relación entre una variable dependiente categórica y múltiples variables independientes. Es útil si se desea entender como varias variables influyen en la probabilidad de que ocurra una cosa en específico. [Ejemplo:] ![Imatge que conté text, Font, captura de pantalla, blanc Descripció generada automàticament](media/image92.png) Los primeros valores son los Betas. La segunda variable es binaria, lo que significa que vale 1 cuando se da esa categoría. **Interpretación de coeficientes:** El 1,39 significa que el ods cambiaria exp(1,39), por tanto es 4. Lo que significa que el individuo que hace overtime manteniendo su renta constante, su ods augmenta 4 en comparación con el que no trabaja horas extras. Por tanto tiene 4 veces mas probabilidades de dejar la empresa en comparación con aquellos que no trabajan horas extras. El coeficiente de la renta es de -0,000137, lo que significa que por cada aumento de 1 unidad en el ingreso mensual, el odds de que un empleado deje la empresa disminuye 0,000137. Es decir a mesura que el ingreso mensual aumenta la probabilidad que un empleado deje la empresa disminuye, por tanto los empleados con renta mas alta tienen menos probabilidades de dejar la empresa. Por ejemplo, si la renta aumenta en 1000 dólares el odds -- ratio disminuiría en un 13% ya que exp(−0.0001367)1000=0.872. Por tanto 1 - 0.872 = 0,128. Por lo que los empleados son mucho menos propensos a dejar la empresa cuando su ingreso augmenta. Imatge que conté text, Font, nombre, captura de pantalla Descripció generada automàticament Le indicamos que indique la probabilidad de cada uno de que abandone. Por ejemplo, el primero, indica que el trabajador si abandono la empresa, con una renta X y hace overtime es 0,303, por tanto, un 30% de abandono. ![Imatge que conté captura de pantalla, línia, Trama, text Descripció generada automàticament](media/image94.png) El sombreado gris significa el intervalo de confianza, como hay menos datos de gente que cobre más el intervalo es más amplio. Imatge que conté text, captura de pantalla, Trama, línia Descripció generada automàticament Podemos observar que si tiene que ver Overtime con el abandono. También podemos ver que en el Yes hay mucha más variabilidad, el rango de abandono es superior en el Yes. ![](media/image96.png) Analizamos la influencia que puede tener el Overtime en abandonar la empresa. Dibujamos dos uno por los que abandonan y las que no. De primera podemos ver que hay interacción, ya que, si no hubiera la distancia entre las dos curvas seria siempre la misma, ya que valga lo que valga una variable la diferencia entre las dos siempre será la misma. La gente que cobra más ya está más dispuesta tanto si hace overtime como que no que se queden dentro de la empresa, porque ya están más dispuestos. Imatge que conté text, captura de pantalla, Font, línia Descripció generada automàticament En estos datos, podemos ver la ultima fila indica la interacción entre las dos variables, el sueldo y el overtime. La interacción es negativa, lo que significa es que los que tienen overtime un dólar la renta, al ser negativo el ods va a ser mas bajo cuando cambie el numero de renta. ACABAR. El coeficiente de interacción no es importante, ya que numéricamente no es elevado. **Métricas:** ![](media/image98.png) Miramos la prevalencia de Si en el total de la BD, nos dice el porcentaje de abandonos en la base de datos. Un 16% de los empleados en el conjunto de datos han dejado la empresa. Imatge que conté text, Font, captura de pantalla Descripció generada automàticament En el primer modelo le añadimos una variable, le llamamos predAttry. Coge los valores de probabilidad de Predichos, lo que le dice es si es mayor a la prevalencia los clasifica en Yes sino en No. Si le da una probabilidad de abandono mayor a la prevalencia de abandono, lo va a poner en Yes. Pasa de una predicción soft a una hard. ![Imatge que conté text, Font, captura de pantalla Descripció generada automàticament](media/image100.png) Este resultado indica que si alguien va a abandonar, la probabilidad que sea verdad es de casi un 55%. Imatge que conté text, captura de pantalla, Font Descripció generada automàticament De los que nosotros predecimos que abandonan, la probabilidad de que sea verdad es de un 34,3%. ![Imatge que conté text, captura de pantalla, Font, línia Descripció generada automàticament](media/image102.png) La detección de prevalencia es de un 25,8 %. Imatge que conté text, Font, captura de pantalla Descripció generada automàticament La especificidad nos da casi un 80%. Lo que significa que de los empleados que realmente no abandonan la empresa fueron identificados por el modelo como "no abandano". ![Imatge que conté text, captura de pantalla, Font, línia Descripció generada automàticament](media/image104.png) Un valor de 72,3 % nos indica que el modelo tienen una capacidad moderada para discriminar entre empleados que abandonan y no abandonan. **Interpretación con vip:** El paquete vip nos dice la importancia de cada una de las variables. Esto nos da este resultado: Imatge que conté text, captura de pantalla, disseny Descripció generada automàticament **[Modelos de Regresión Penalizados o Regularizados.]** **[Modelos de Regresión Penalizados:]** Los modelos de regresión penalizados son una técnica estadística para poder mejorar la precisión de los modelos de regresión lineal a través de agregar penalización a la función de perdida. Se utilizan cuando se dispone de bases de datos ancha con una gran cantidad de predictores o features muy correlacionades entre ellos. Estas penalizaciones ayudan a evitar un overfitting (un modelo se ajusta demasiado a los datos de entrenamiento y no generaliza bien a nuevos datos). Hay mucho ruido en el sistema, y las estimaciones sean más heterogéneas. Los modelos introducen una penalización en la función de perdida para evitar el sobre ajuste y reducir la complejidad del modelo. La penalización que se añade castiga los coeficientes de los predictores que tienen valores grandes. Los modelos de regresión penalizados minimizan la función SSR + P: - SSR: es la suma de cuadrados residual habitual en los modelos de regresión. Mide cuán de bien el modelo se ajusta a los datos, valor bajo menor ajuste. - P: es un término de penalización sobre el tamaño de los coeficientes B~i~ de la regresión. Restringe el tamaño de los coeficientes del modelo. Los modelos de regresión penalizada minimizan un término de penalización de tamaño de los betas. Un requisito es que las variables numéricas se tendrán que estandarizar para que sea efectivo. **[Regresión Ridge:]** La regresión Ridge es un método que se utiliza para abordar problemas de multicolinealidad (es cuando dos o más variables independientes están altamente correlacionadas) y sobre ajuste en modelos de regresión. Si se tiene muchas variables, que están correlacionadas. No hace selección automática. ![](media/image106.png)La regresión Ridge introduce un término de penalización a la función de perdida de la regresión lineal. La función se modifica para incluir un término que penaliza el tamaño de los coeficientes: El parámetro λ debe determinarse a priori y pondera el grado de penalización o regularización. Esta landa si es 0, sería una regresión normal, a medida que la landa augmenta penaliza más. Cuando mayor es más se penaliza el tamaño de los coeficientes B~i~ en relación a la suma de cuadrados residual. Los coeficientes no llegan hacerse 0 ya que la regresión Ridge no realiza la selección automática de features o predictores. Hacer selección automática es identificar un conjunto de feautures que son mas relevantes para el modelo predictivo y elimina aquellos que no contribuyen significativamente en el modelo. Es fundamental que el valor de landa, un procesamiento para procesarlo puede ser a través de la validación cruzada, es que lo se le llama **tunea**r, es dar valores a parámetros y comparar con cual es mejor. [Ejemplo:] Imatge que conté text, Font, captura de pantalla, línia Descripció generada automàticament Hace la receta. **Ridge con Tuneado:** Tunear significa crear diferentes valores y a partir de los valores creados usamos la validación cruzada. Nos vamos a quedar con ese valor que nos de ese valor más pequeño. El parámetro de landa debe ser escogido a priori y lo podemos escoger mediante tuneado eligiendo el valor utilizado en la validación cruzada. Para que se sepa que vamos a tunear se lo tenemos que indicar, en este caso le indicamos que el parámetro de penalización lo vamos a tunear: ![Imatge que conté text, captura de pantalla, Font Descripció generada automàticament](media/image108.png) Nos creamos otro objeto donde generamos los valores de landa, para hacer después la validación cruzada:, en este caso se utiliza máxima entropía y se le indica que genere un total de 100 valores de landa. Una vez tenemos los valores de landa, hacemos la validación cruzada: ![Imatge que conté text, Font, captura de pantalla, àlgebra Descripció generada automàticament](media/image110.png) En este código después de crear la validación cruzada y definir las métricas que queremos recoger. Se ajusta el modelo utilizando el objeto donde tenemos los valores de landa. Y durante este proceso se evaluará el rendimiento del modelo para cada combinación de parámetros en la cuadricula. Una vez tenemos todas las combinaciones hechas con su rendimiento, se utiliza la función ***show\_best()*** que realiza un ranking de las métricas para los tuneados y la función ***select\_best*** selecciona ese modelo con mejor performance en la métrica elegida. Imatge que conté text, captura de pantalla, Font Descripció generada automàticament En el caso del ejemplo se basa en la métrica de *rmse*. Una vez escogido los mejores parámetros, actualizamos el workflow con estos mejores parámetros obtenidos en proceso de tuneado. Finalmente reestimamos el mejor modelo tuneado con lo muestra de training completa **[Regresión LASSO:]** Lasso también incluye un término de penalización en la función de perdida. ![](media/image112.png)Penaliza la suma de valores absolutos de los coeficientes del modelo: El parámetro landa debe determinarse a priori y pondera el grado de penalización o regularización. A mayor landa más se penaliza el tamaño de los coeficientes βi en relación con la suma de cuadrados residual. Penalizar la suma de valores absolutos tiene dos efectos: - Reduce los coeficientes, por lo que Lasso tiene a reducir su magnitud y ayuda a evitar el sobreajuste. - Selección de las variables, la regresión Lasso puede llevar algunos coeficientes a 0. Lasso puede realizar una selección automática de variables, eliminando aquellas que no son relevantes para la predicción. Selecciona variables, si nos conviene más explicar ya que coge esas variables que son mejor. La curva de nivel dice cuando vale la suma de valores residuales. Sino se penaliza el valor seria el del centro. En la segunda figura, es del Ridge, el valor "correcto" es el punto en el que el circulo azul y la circunferencia roja se tocan, ya que lo azul significa lo factible. Lasso, figura 1, es capaz de excluir variables tal y como podemos ver los valores factibles son lo azul. La interacción entre el rombo y las curvas de nivel ocurre en los ejes [Ejemplo:] ![Imatge que conté text, Font, captura de pantalla Descripció generada automàticament](media/image114.png) Creamos Lasso, el valor de landa es 5. Y le aplicamos la receta ya hecha con anterioridad a Lasso. Imatge que conté text, captura de pantalla, Font, línia Descripció generada automàticament Tunea el valor, añadimos los valores tuneados y los añadimos a la receta. Y por último que genere los valores de landa para hacer la validación cruzada. Genera los valores de landa con entropía total, igual que con Ridge. ![](media/image116.png)Selecciona las mejores métricas basándose en rmse: Finalmente actualizara el workflow con el mejor valor de los parámetros obtenidos en proceso de tuneado y reestimara el mejor modelo tuneado con la muestra de training completa y evalúa las métricas predictivas en el conjunto de test. **[Regresión elastic - net:]** Es una combinación de Lasso y Ridge. Minimiza la función: Cuando landa1 vale 0, significa que estamos en el caso de Lasso, y si landa 2 vale 0, significa que es Ridge. Cuando este cerca de 0 pesa más Ridge y cuando se acerque a 1 Lasso. De tal forma, que landa1 es el parámetro de regularización para la penalización de Lasso y landa2 es el parámetro de regularización para la penalización de Ridge. La regresión elastic -- net permite realizar selección automática de feautures como Lasso y trata bien el caso de feautures muy correlacionados. Es decir coge las ventajas de cada uno de ellos. [Ejemplo:] Definimos el modelo Elastic Net con una penalización de 5 y un mixture de 0,5. El mixture controla la mezcla de penalizaciones Lasso y Ridge, con 0,5 indica que esta utilizando una combinación equitativa de ambas penalizaciones. ![Imatge que conté text, Font, captura de pantalla Descripció generada automàticament](media/image118.png) Tendremos que tunear dos parámetros ahora, tanto el penalty como el mixture. Imatge que conté text, Font, línia, captura de pantalla Descripció generada automàticament En este ejemplo, también utiliza un enfoque de máxima entropía, lo que ayudar a explorar el espacio de hiperparámetros de manera eficiente. ![](media/image120.png)Se ajusta el modelo con la búsqueda de hiperparámetros. Genera las diferentes combinaciones con los dos valores tuneados: Y se selecciona aquellos parámetros que son mejores, basándonos con la métrica *rmse*. ![](media/image122.png)Finalmente se actualiza el workflow con el mejor valor de los parámetros obtenidos en el proceso de tuneado. Una vez tuneados los parámetros se evalúa el performance del modelo utilizando validación cruzada: Finalmente reestimamos el mejor modelo tuneado con la muestra del training completa y evaluamos las métricas en el conjunto de test. **[Comparación de los 3 modelos:]** ![Imatge que conté text, captura de pantalla, Font, nombre Descripció generada automàticament](media/image124.png) - Usar Lasso si busca simplicidad e interpretabilidad a través de la selección de un subconjunto de variables relevantes. - Usar Ridge si se quiere un modelo estable y se prefiere mantener todas las variables incluso con coeficientes pequeños. - Usar Elastic Net si se tienen problemas con muchas variables correlacionadas o se necesita una combinación de las fortalezas de Lasso y Ridge. **[Tema 4: Aprendizaje No Supervisado:]** **[Aprendizaje No Supervisado]** El Aprendizaje no supervisado es aquel que no tenemos un target en concreto y su objetivo no es predecir. Se utiliza básicamente para dos cosas: - Reducir la dimensión del conjunto de variables en la base de datos. - Agrupar observaciones con patrones comunes. Se agrupan las variables de la base de datos, por las características que tienen en común. Es decir, por ejemplo, agrupar los clientes que están más cercanos a ellos, eso es lo que se llama el clustering. **[Análisis de Componentes Principales (PCA):]** El objetivo es encontrar unas cuantas variables que expliquen el total de las variables. Es decir, intentar explicar la máxima información posible reduciendo las variables. Se pretende encontrar una representación de los datos en menos variables que retenga la máxima variabilidad posible de los datos originales. Se utiliza cuando tenemos muchas variables numéricas correlacionadas, que lo queremos es encontrar unas variables que mantengan la mayor información común, pero reduciendo las variables. Se construyen combinaciones lineales y cada variable (dimensión) nueva es una combinación lineal de las variables originales: Estas ecuaciones representan como se construyen los componentes principales. Z1 y Z2 son los coeficientes (loadings) que determinan la contribución de cada variable original X~1~, X~2~, etc al componente Z. Con los componentes X, se tienen que normalizar las variables para tratar los datos en la misma escala. Los componentes que escojamos nos tienen que dar la máxima información posible y encontrar los coeficientes que maximicen la varianza. Si nos da una varianza de 6 significa que la combinación de los componentes escogidos explica el 60% de los datos, y a parte entre una Z y la otra no estén relacionadas, es decir que estén incorrelacionados. Esta regresión se le llama regresión con componentes lineales. En este caso se hace mucho más difícil poder entender que significa los Betas, esto puede ser conveniente dependiendo del objetivo que se tenga, si por ejemplo es predecir es útil. [Ejemplo PCA:] ![Imatge que conté text, captura de pantalla, Font, nombre Descripció generada automàticament](media/image126.png) Imatge que conté text, Font, captura de pantalla, àlgebra Descripció generada automàticament Los resultados de *pca\$center*, muestran la media de cada variable original que se utilizo para centrar los datos. Los resultados de *pca\$scale* muestra la desviación estándar de cada variable original que se utilizo para escalar los datos. ![Imatge que conté text, captura de pantalla, Font, nombre Descripció generada automàticament](media/image128.png) El rotation contiene el valor de los loadinsgs para cada componente. Tendríamos que estandarizar los resultados. El primer componte recoge mayoritariamente la información sobre los delitos. Son negativos, lo que sugiere que a medida que aumentan las tasas de asesinatos, asaltos y violaciones, el componente principal dismunye. Es decir, PC1 captura que un aumento de crimines esta asociado con una disminución en el valor PC1. El PC2 está relacionado con el % de la población urbana, ya que tiene una carga positiva elevada. PC3 está más asociado a las violaciones, y tiene una carga negativa lo que significa que a medida que las tasas de violaciones aumentan, el valor de PC3 disminuye. ![Imatge que conté text, Font, captura de pantalla, àlgebra Descripció generada automàticament](media/image130.png) Estos resultados corresponden a la matriz de cargas (loadings) de los componentes principales obtenidos en nel PCA. A partir de esta matriz R es capaç de calcular como cada variable original contribuye a los componentes principales obtenidos. [Biplot:] BiPlot es una representación grafica que combina información sobre las observaciones y las variables en un análisis de componentes principales (PCA). En muchas ocasiones se representa los dos primeros componentes en un grafico bidimensional. [Varianza explicada:] Podemos decir lo que explica cada componente a través de la varianza explicada, ya que la varianza explicada se refiere a la cantidad de variabilidad de los datos que es explicada por un modelo del conjunto de componentes. Se examina la varianza explicada por cada componente, la proporción respecto al total y la proporción de varianza acumulada. Nos da la desviación estándar de cada componente. Si lo elevamos al cuadrado nos da la varianza explicada: ![Imatge que conté text, Font, línia, captura de pantalla Descripció generada automàticament](media/image132.png) El primero explica el 62%, y el segundo un 25%, de tal manera que los dos primeros componentes ya explican más del 80%. [Screenplot:] Se elige el número de componentes utilizando el screeplot y viendo donde hay un punto de giro: Imatge que conté línia, captura de pantalla, Trama, diagrama Descripció generada automàticament En este ejemplo, se elige el punto donde la pendiente empieza hacer "mas plana". [Ejemplo de código:] Como siempre, se leen los datos, se hace un spliiting de test y training y se procede hacer una receta. ![Imatge que conté text, Font, captura de pantalla, línia Descripció generada automàticament](media/image134.png) Se añade un paso de mas en la receta donde se indica que se deben calcular 4 componentes principales. Es decir, el PCA transformara las variables originales en 4 nuevas variables que capturaran la mayor parte de la varianza de los datos. Se procede hacer el tuneado: Imatge que conté text, captura de pantalla, Font, nombre Descripció generada automàticament Indicamos que el parámetro a tunear es el umbral para la varianza explicada por los componentes principales. Lo que significa que buscara el mejor valor que determine cuantos componentes principales se deben retener en función de la varianza explicada. Extraemos todas las combinaciones sobre los parámetros ajustables. Utiliza máxima entropía. Hacemos una validación cruzada con las diferentes combinaciones. Ajusta el modelo utilizando la cuadricula. Una vez obtenidas todas las métricas, escogemos aquellos resultados basándonos en el *rmse.* ![Imatge que conté text, Font, nombre, captura de pantalla Descripció generada automàticament](media/image136.png) En estos datos podemos observar que el primer componente es el mejor, ya que puede explicar el 94,8%, no vale la pena hacer componentes principales. El siguiente paso es hacer validación cruzado con el tuneado: Y finalmente reestimamos el mejor modelo tuneado con la muestra de training y calculamos las métricas con el test. [Ejemplo PLS:] PLS es modelar la relación entre un conjunto de variables independientes y un conjunto de variables dependientes. ![](media/image138.png)Sigue los mismos pasos que anteriormente, crea una receta: Una cosa particular de esta receuta es que aplicamos la regresión por mínimos cuadrados parciales a todas las variables numéricas. El argumento *num\_comp = tune()* indica que el numero de componentes a utilizar en el modelo se ajustara en el modelo PLS en el proceso de optimización de hiperparámetros. Se configura el workflow con un modelo de regresión logística y la receta definida: ![](media/image140.png)Extraemos los parámetros ajustables, y finalizamos el flujo de trabajo utilizando el conjunto de entrenamiento: En la última línea crea un data frame, don genera una secuencia de números que comienzan en 1 y termina en el numero de columnas de la base de datos. El argumento *by = 2* indica que la secuencia debe incrementarse de 2 en 2. Hacemos la validación cruzada: Imatge que conté text, captura de pantalla, Font Descripció generada automàticament Se ajusta el modelo utilizando el objeto donde tenemos los diferentes valores, para escoger ese que se ajuste mejor. Una vez ajustado el modelo, le decimos que nos muestre las mejores métricas basadas en roc\_auc: ![Imatge que conté text, captura de pantalla, Font, nombre Descripció generada automàticament](media/image142.png) Finalmente reestimamos el mejor modelo tuneado con la muestra de training completa y calculamos métricas con el test: **[Clustering:]** Su objetivo es clasificar observaciones en grupos mutuamente exclusivos donde las observaciones dentro del mismo clúster sean lo más similares posible y las observaciones en clústeres distintos sean lo más distantes posibles. Para medir la similaridad hay que definir medidas (métricas) de distancia que dependerán de si de las variables son de carácter cuantitativo o cualitativo. También es necesario estandarizar o normalizar las variables cuantitativas. Se usan para hacer segmentaciones sin información a priori. Es una forma de aprendizaje no supervisado ya que no es necesario que los datos estén etiquetados previamente. **[Clustering k -- means:]** Se particionan las n observaciones de la base de datos en k grupos donde k debe ser establecido a priori por el analista. Cada clúster se representa por su centro (centroide) que corresponde al vector de medidas de todas las observaciones asignadas a ese clúster. Por ejemplo, si cogemos variables cuantitativas, donde hemos agrupado los datos por similitud de los valores. Cuando hacemos la media de cada una de las variables de cada uno de los grupos que hemos formado, esta media representa el centroide. Es decir, cada clúster se representa por su centro. [Distancias:] - ![](media/image144.png)**Distancia euclídea:** Es útil para datos que siguen una distribución normal y es sensible a la escala de variables. Es la medida mas común de distancia en el espacio euclidiano. - **Distancia de Manhattan:** Es mas robusta a outliers porque no eleva al cuadrado las diferencias. - **Distancia de Minkowski:** es una generalización de las distancias euclídea y de Manhattan. Permite al usuario elegir la métrica que mejor se adapte a sus datos - **Medidas basadas en correlaciones**: A veces no se buscan distancias sino correlaciones, estas se suelen utilizar para datos sin normalizar pero con patrones similares, por ejemplo una base de datos de genética. - **Distancia de Gower**: se utiliza para calcular la distancia entre observaciones que contienen variables mistas. Normaliza las diferencias para cada tipo de variable. Se suele utilizar para features ordinales o categóricos. - **Distancia del coseno**: se usa en text-mining. **[Algoritmo K -- means:]** Suponemos que tenemos el número de grupo p

Use Quizgecko on...
Browser
Browser