2023-2P

INTRODUCCIÓN A MODELADO CD

.

Aprendizaje Automático (Machine Learning): Es el proceso mediante el cual se usan modelos matemáticos de datos para ayudar a un equipo a aprender sin instrucciones directas. Se considera un subconjunto de la inteligencia artificial (IA). El aprendizaje automático usa algoritmos para identificar patrones en los datos, y esos patrones luego se usan para crear un modelo de datos que puede hacer predicciones.

INTRODUCCIÓN A MODELADO EN CD

.

Minería de Datos: Es un proceso que consiste en recopilar y analizar una gran cantidad de datos y encontrar patrones en ellos. Al detectar relaciones y patrones en los datos mediante este método manual, los científicos de datos ayudan a una empresa a resolver sus problemas empresariales, predecir tendencias y tomar decisiones informadas.

INTRODUCCIÓN A MODELADO EN CD

los diferentes tipos de aprendizaje automático son:

Aprendizaje Supervisado: Este es un tipo de aprendizaje automático en el que se entrena a un modelo utilizando datos etiquetados. Los datos etiquetados son datos que ya contienen la respuesta correcta. Los algoritmos de aprendizaje supervisado son entrenados utilizando un conjunto de pares entrada-salida y se utilizan para predecir eventos futuros. Se pueden agrupar en casos de regresión y clasificación.

Tipos: Regression, Logistic Regression, Classification, Naïve Bayes Classifiers, Decision Trees, Support Vector Machine

INTRODUCCIÓN A MODELADO EN CD

Aprendizaje No Supervisado: Este tipo de aprendizaje automático implica el entrenamiento de una máquina utilizando información que no está clasificada ni etiquetada y permitiendo que el algoritmo actúe sobre esa información sin orientación. Aquí el sistema intenta aprender sin un maestro.Existen ejecomplos como los Clusters y las Asociaciones.

Tipos: Clusters: Hierarchical clustering, K-means clustering, K-NN (k nearest neighbors), Principal Component Analysis, Singular Value Decomposition, Independent Component Analysis

INTRODUCCIÓN A MODELADO EN CD

Aprendizaje Semi-Supervisado: Este es un tipo de aprendizaje automático que combina un pequeño número de datos etiquetados con una gran cantidad de datos no etiquetados. Este método es útil cuando los costos asociados con la etiquetación son demasiado altos para permitir un proceso de aprendizaje completamente supervisado.

Aprendizaje por Refuerzo: Este es un tipo de aprendizaje automático donde un agente aprende a comportarse en un entorno realizando ciertas acciones y observando los resultados/resultados de esas acciones.

INTRODUCCIÓN A MODELADO EN CD (En Resumen)

.

INTRODUCCIÓN A MODELADO EN CD (En Resumen)

.

INTRODUCCIÓN A MODELADO EN CD (En Resumen)

.

INTRODUCCIÓN A MODELADO EN CD (En Resumen)

.

INTRODUCCIÓN A MODELADO EN CD (En Resumen)

.

MODELO DE REGRESIÓN LINEAL SIMPLE

  • Es un modelo estadístico que describe la relación entre una variable dependiente y una variable independiente.

  • La variable dependiente es la variable que se está tratando de predecir.

  • La variable independiente es la variable que se cree que influye en la variable dependiente.

ECUACIÓN DE MODELO DE REGRESIÓN LINEAL SIMPLE

y = a + bx

  • y es el valor de la variable dependiente.

  • a es la intersección de la línea de regresión con el eje y.

  • b es la pendiente de la línea de regresión.

  • x es el valor de la variable independiente.

Pasos para realizar una regresión lineal simple en R

  1. Importar los datos.

  2. Crear un modelo de regresión lineal.

  3. Evaluar el modelo.

Importando datos en R

# Importar los datos
data <- read.csv("data.csv")
head(data)

Creando un modelo de regresión lineal

## Crear un modelo de regresión lineal
model<- lm(y~ x, data = data)
# Resumen del modelo
summary(model)

Primer Ejemplo

Primer Ejemplo (1)

# Crear el data frame
data <- data.frame(
A_Exp = c(1.1, 1.3, 1.5, 2.0, 2.2, 2.9, 3.0, 3.2, 3.2, 3.7),
Salario = c(39343, 46205, 37731, 43525, 39891, 
            56642, 60150, 54445, 64445, 57189)
)
head(data)
##   A_Exp Salario
## 1   1.1   39343
## 2   1.3   46205
## 3   1.5   37731
## 4   2.0   43525
## 5   2.2   39891
## 6   2.9   56642

Primer Ejemplo (2)

# Create the scatter plot
plot(data$A_Exp, data$Salario, xlab = "Anos de Experiencia",
    ylab = "Salario", main = "Correlacion de Anos Vs Salario")

Primer Ejemplo (3)

Explicando todos los datos en una ecuación:

regresion <- lm(Salario~ A_Exp, data = data)
summary(regresion)

Primer Ejemplo (4)

Explicando todos los datos en una ecuación:

## 
## Call:
## lm(formula = Salario ~ A_Exp, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -8171.3 -3695.9  -717.2  4219.7  7362.1 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    28217       5130   5.501 0.000573 ***
## A_Exp           9021       2003   4.503 0.001995 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5482 on 8 degrees of freedom
## Multiple R-squared:  0.7171, Adjusted R-squared:  0.6817 
## F-statistic: 20.28 on 1 and 8 DF,  p-value: 0.001995

Primer Ejemplo (5)

Validando las predicciones en dos conjuntos (test/prueba)

#install.packages('caTools')
library(caTools)
set.seed(123)
split = sample.split(data$Salario, SplitRatio = 0.7)
trainingset = subset(data, split == TRUE)
testset = subset(data, split == FALSE)
# Ajustar RSL al conjunto de Prueba
lm.r= lm(formula = Salario ~ A_Exp, data = trainingset)
coef(lm.r)
# Analizando Resultados con los datos de Prueba
ypred = predict(lm.r, newdata = testset)

Primer Ejemplo (6)

Validando las predicciones en dos conjuntos (test/prueba)

## (Intercept)       A_Exp 
##   30303.530    8956.904

Primer Ejemplo (7)

Grafiquemos los resultados (entrenamiento)

library(ggplot2)
# Visual de los resultado de entrenamiento
ggplot() + geom_point(aes(x = trainingset$A_Ex, 
y = trainingset$Salario), colour = 'red') +
geom_line(aes(x = trainingset$A_Ex,
y = predict(lm.r, newdata = trainingset)), colour = 'blue') + 
ggtitle('Salario vs Experiencia (Entrenamiento)') + 
xlab('Años de Experiencia') +
ylab('Salario')

Primer Ejemplo (8)

Grafiquemos los resultados (entrenamiento)

Primer Ejemplo (9)

Grafiquemos los resultados (prueba)

# Visual de los resultado de prueba
ggplot() + geom_point(aes(x = testset$A_Ex, 
y = testset$Salario), colour = 'red') + 
geom_line(aes(x = trainingset$A_Ex, 
y = predict(lm.r, newdata = trainingset)), colour = 'blue') + 
ggtitle('Salario vs Experiencia (prueba)') + 
xlab('Años de Experiencia') + 
ylab('Salario')

Primer Ejemplo (10)

Grafiquemos los resultados (prueba)

Segundo Ejemplo

Segundo Ejemplo (1)

Los datos: El fichero EdadPesoGrasas.txt corresponden a tres variables medidas en 25 individuos: edad, peso y cantidad de grasas en sangre. Para leer el fichero de datos y saber los nombres de las variables:

SALUD <- 
read.table('http://verso.mat.uam.es/~joser.berrendero/datos/EdadPesoGrasas.txt', 
           header = TRUE)
names(SALUD)
## [1] "peso"   "edad"   "grasas"

Segundo Ejemplo (2)

Con el fin de conocer las relaciones existentes entre cada par de variables podemos representar una matriz de diagramas de dispersión. Tu texto aquí

plot(SALUD)

Segundo Ejemplo (3)

Para cuantificar el grado de relación lineal, calculamos la matriz de coeficientes de correlación:

cor(SALUD)
##             peso      edad    grasas
## peso   1.0000000 0.2400133 0.2652935
## edad   0.2400133 1.0000000 0.8373534
## grasas 0.2652935 0.8373534 1.0000000

Segundo Ejemplo (4)

Desarrollamos la regresión de las variables grasa y edad:

regresion <- lm(grasas ~ edad, data = SALUD)
summary(regresion)
## 
## Call:
## lm(formula = grasas ~ edad, data = SALUD)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -63.478 -26.816  -3.854  28.315  90.881 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 102.5751    29.6376   3.461  0.00212 ** 
## edad          5.3207     0.7243   7.346 1.79e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 43.46 on 23 degrees of freedom
## Multiple R-squared:  0.7012, Adjusted R-squared:  0.6882 
## F-statistic: 53.96 on 1 and 23 DF,  p-value: 1.794e-07

Segundo Ejemplo (5)

Graficamos la regresión lineal:

library(ggplot2)
# Visual de los resultado de prueba
ggplot() + geom_point(aes(x = SALUD$edad, 
y = SALUD$grasas), colour = 'red') + 
geom_line(aes(x = SALUD$edad, 
y = predict(regresion, newdata = SALUD)), colour = 'blue') + 
ggtitle('Edad vs Grasas') + 
xlab('Edad') + 
ylab('Grasa en Sangre')

Segundo Ejemplo (6)

Graficamos la regresión lineal:

Segundo Ejemplo (7)

Otra forma facil de Graficar (metodo 2)

library(ggplot2)
ggplot(data = SALUD, aes(x = edad, y = grasas)) + geom_point() + 
  geom_smooth(method = "lm", se = TRUE, color = "firebrick") +
  theme_bw() + labs(x = "Edad", y = "Grasas")
## `geom_smooth()` using formula = 'y ~ x'

Segundo Ejemplo (8)

Otra forma facil de Graficar (metodo 3)

plot(SALUD$edad, SALUD$grasas, xlab='Edad', ylab='Grasas')
abline(regresion)

Segundo Ejemplo (9)

Cálculo de predicciones

nuevas.edades <- data.frame(edad = seq(30, 50))
predict(regresion, nuevas.edades)
##        1        2        3        4        5        6        7        8 
## 262.1954 267.5161 272.8368 278.1575 283.4781 288.7988 294.1195 299.4402 
##        9       10       11       12       13       14       15       16 
## 304.7608 310.0815 315.4022 320.7229 326.0435 331.3642 336.6849 342.0056 
##       17       18       19       20       21 
## 347.3263 352.6469 357.9676 363.2883 368.6090

Segundo Ejemplo (10)

Definamos los intervalos de confianza

confint(regresion)
##                 2.5 %     97.5 %
## (Intercept) 41.265155 163.885130
## edad         3.822367   6.818986

con el 90%

confint(regresion, level = 0.90)
##                   5 %       95 %
## (Intercept) 51.780153 153.370132
## edad         4.079335   6.562018

Segundo Ejemplo (11)

intervalos de confianza para la respuesta media y los intervalos de predicción para la respuesta

nuevas.edades <- data.frame(edad = seq(20, 60))
# Grafico de dispersion y recta
plot(SALUD$edad, SALUD$grasas, xlab='Edad', ylab='Grasas')
abline(regresion)

# Intervalos de confianza de la respuesta media:
# ic es una matriz con tres columnas: la primera es la prediccion, las otras dos son los extremos del intervalo
ic <- predict(regresion, nuevas.edades, interval = 'confidence')
lines(nuevas.edades$edad, ic[, 2], lty = 2)
lines(nuevas.edades$edad, ic[, 3], lty = 2)

# Intervalos de prediccion
ic <- predict(regresion, nuevas.edades, interval = 'prediction')
lines(nuevas.edades$edad, ic[, 2], lty = 2, col = 'red')
lines(nuevas.edades$edad, ic[, 3], lty = 2, col = 'red')

Segundo Ejemplo (12)

intervalos de confianza para la respuesta media y los intervalos de predicción para la respuesta

Segundo Ejemplo (13)

tabla de análisis de la varianza de los errores se obtiene con el comando anova:

## Analysis of Variance Table
## 
## Response: grasas
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## edad       1 101933  101933  53.964 1.794e-07 ***
## Residuals 23  43444    1889                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Segundo Ejemplo (13)

Diagnostico del modelo:

residuos <- rstandard(regresion)
valores.ajustados <- fitted(regresion)
plot(valores.ajustados, residuos)

Segundo Ejemplo (14)

Hipotesis de normalidad Q-Q:

qqnorm(residuos)
qqline(residuos)

Tercer Ejemplo

Tercer Ejemplo (1)

equipos <- 
c("Texas","Boston","Detroit","Kansas","St.","New_S.","New_Y.",
 "Milwaukee","Colorado","Houston","Baltimore","Los_An.","Chicago",
 "Cincinnati","Los_P.","Philadelphia","Chicago","Cleveland","Arizona",
 "Toronto","Minnesota","Florida","Pittsburgh","Oakland","Tampa",
 "Atlanta","Washington","San.F","San.I","Seattle")
numero_bateos <- 
c(5659,  5710, 5563, 5672, 5532, 5600, 5518, 5447, 5544, 5598,
  5585, 5436, 5549, 5612, 5513, 5579, 5502, 5509, 5421, 5559,
  5487, 5508, 5421, 5452, 5436, 5528, 5441, 5486, 5417, 5421)
runs <- 
c(855, 875, 787, 730, 762, 718, 867, 721, 735, 615, 708, 644, 654, 735,
  667, 713, 654, 704, 731, 743, 619, 625, 610, 645, 707, 641, 624, 570,
  593, 556)
datosB <- data.frame(equipos,numero_bateos,runs)
head(datosB)
##   equipos numero_bateos runs
## 1   Texas          5659  855
## 2  Boston          5710  875
## 3 Detroit          5563  787
## 4  Kansas          5672  730
## 5     St.          5532  762
## 6  New_S.          5600  718

Tercer Ejemplo (2)

Representación gráfica de las observaciones

library(ggplot2)
ggplot(data = datosB, mapping = aes(x = numero_bateos, y = runs)) +
  geom_point(color = "firebrick", size = 2) +
  labs(title  =  'Diagrama de dispersión', x  =  'número  de bateos') +
  theme_bw() +
  theme(plot.title = element_text(hjust = 0.5))

Tercer Ejemplo (3)

Calculo de Correlaciones

cor.test(x = datosB$numero_bateos, y = datosB$runs, method = "pearson")
## 
##  Pearson's product-moment correlation
## 
## data:  datosB$numero_bateos and datosB$runs
## t = 4.0801, df = 28, p-value = 0.0003388
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.3209675 0.7958231
## sample estimates:
##      cor 
## 0.610627

Tercer Ejemplo (4)

Cálculo del modelo de regresión lineal simple

modelo_lineal <- lm(runs ~ numero_bateos, datosB)
# lm() devuelve el valor de la variable y para x=0 (intersección) junto 
# con la pendiente de la recta.
# Para ver la información del modelo se requiere summary().
summary(modelo_lineal)
## 
## Call:
## lm(formula = runs ~ numero_bateos, data = datosB)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -125.58  -47.05  -16.59   54.40  176.87 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   -2789.2429   853.6957  -3.267 0.002871 ** 
## numero_bateos     0.6305     0.1545   4.080 0.000339 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 66.47 on 28 degrees of freedom
## Multiple R-squared:  0.3729, Adjusted R-squared:  0.3505 
## F-statistic: 16.65 on 1 and 28 DF,  p-value: 0.0003388

Tercer Ejemplo (5)

runs = -2789.2429 + 0.6305 bateos.

Intervalos de confianza para los parámetros del modelo

confint(modelo_lineal)
##                       2.5 %        97.5 %
## (Intercept)   -4537.9592982 -1040.5264727
## numero_bateos     0.3139863     0.9471137

Tercer Ejemplo (6)

Representación gráfica del modelo

ggplot(data = datosB, mapping = aes(x = numero_bateos, y = runs)) +
  geom_point(color = "firebrick", size = 2) +
  labs(title  =  'Runs ~ número de bateos', x  =  'número  de bateos') +
  geom_smooth(method = "lm", se = FALSE, color = "black") +
  theme_bw() + theme(plot.title = element_text(hjust = 0.5))
## `geom_smooth()` using formula = 'y ~ x'

Tercer Ejemplo (7)

par(mfrow = c(2,2))
plot(modelo_lineal)

Tercer Ejemplo (8)

Cuarto Ejemplo

Cuarto Ejemplo (1)

Vamos a usar la libreria de Mtcars. Saben en que consiste?

library(ggplot2)
ggplot(data = mtcars, aes(x = hp, y = mpg)) +
  geom_point() +
  geom_smooth(method = "lm", se = TRUE, color = "firebrick") +
  theme_bw() + labs(x = "", y = "")
## `geom_smooth()` using formula = 'y ~ x'

Regresión Multiple

Regresion se vuelve multiple (1)

# Splitting the dataset into the Training set and Test set
# install.packages('caTools')
library(caTools)
set.seed(123)
split = sample.split(SALUD$grasas, SplitRatio = 0.8)
training_set = subset(SALUD, split == TRUE)
test_set = subset(SALUD, split == FALSE)

# Feature Scaling
# training_set = scale(training_set)
# test_set = scale(test_set)

# Fitting Multiple Linear Regression to the Training set
regressor = lm(formula = grasas ~ .,
            data = training_set)

# Predicting the Test set results
y_pred = predict(regressor, newdata = test_set)

Regresion se vuelve multiple (2)

## 
## Call:
## lm(formula = grasas ~ ., data = training_set)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -58.624 -24.629   1.426  28.193  88.815 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  81.7720    74.5695   1.097    0.288    
## peso          0.7061     1.0081   0.700    0.493    
## edad          4.5437     0.7599   5.979 1.49e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 41.02 on 17 degrees of freedom
## Multiple R-squared:  0.688,  Adjusted R-squared:  0.6513 
## F-statistic: 18.74 on 2 and 17 DF,  p-value: 5.015e-05

Ejercicio (RLS)

Ajusta el modelo que explica la cantidad de grasas en función del peso. - Calcula y representa gráficamente la recta de regresión, junto con la correspondiente nube de puntos.

  • ¿Cuánto vale el coeficiente de correlación al cuadrado en este caso?

  • ¿Cuánto valen los estimadores de todos los parámetros del modelo?

  • Contrasta la hipótesis de que la pendiente de la recta es cero a nivel 0.05.

  • Calcula un intervalo de confianza para la pendiente de la recta de nivel 90% .

  • Calcula y representa los intervalos de confianza al 95% de la cantidad de grasas media para los individuos entre 30 y 90 kg.

  • Lleva a cabo el diagnóstico del modelo.

Ejemplo (RLM)

Utilice la libreria de Mtcars (nota: data:(mtcars)) Para realizar una preducción del consumo de gasolina (mpg) en el modelo lineal multiple que utiliza como explicativas el peso del vehículo (wt) y los caballos de vapor (hp), en un coche que pese, 3 y tenga 120 hp. Nota: Use la función R: “predict”

Ejemplo (RLM) (Solución)

## `geom_smooth()` using formula = 'y ~ x'

##        fit       lwr      upr
## 1 189.0406 -158.0087 536.0898

Muchas Gracias