library(MASS)
library(dplyr)
library(tidyr)
library(skimr)
library(ggplot2)
library(ggpubr)
library(tree)
library(caret)
library(e1071)
library(MLmetrics)
library(mlbench)
library(nnet)
library(neuralnet)
library(randomForest)
library(rpart)
library(rpart.plot)
library(ipred)
library(e1071)
library(rsample)
library(corrplot)
Data Mining: Data(Boston)
Data “Boston”
CRIM: Índice de criminalidad per capita
ZN: Proporción de superficie residencial establecida en lotes mayores de 25.000 sq.ft (equivalente a 2.223 metros cuadrados).
INDUS: Proporción de superficie de negocio no minorista.
CHAS: Es la variable ficticia “río Charles” (igual a 1 si el tramo considerado está en la ribera del río, 0 en el otro caso)
NOX: Concentración de óxidos de nitrógeno (partes por 10 millones)
RM: Número promedio de habitaciones por vivienda
AGE: Proporción de viviendas en propiedad ocupadas, construidas antes de 1940
DIS: Distancias ponderadas a cinco centros de empleo de Boston
RAD: Índice de accesibilidad a las autopistas radiales
TAX: Parte del impuesto de bienes inmuebles por cada 10.000 $ de propiedad.
PTRATIO: Ratio de alumnos por profesor
B: Se calcula como 1000(Bk — 0.63)², donde Bk es la proporción de personas de descendencia Afroamericana
LSTAT: Porcentaje de población de “estatus de bajo nivel”
MEDV: Mediana del valor de viviendas en propiedad (en miles de dólares)
Librerias
data("Boston")
head(Boston)
crim zn indus chas nox rm age dis rad tax ptratio black lstat
1 0.00632 18 2.31 0 0.538 6.575 65.2 4.0900 1 296 15.3 396.90 4.98
2 0.02731 0 7.07 0 0.469 6.421 78.9 4.9671 2 242 17.8 396.90 9.14
3 0.02729 0 7.07 0 0.469 7.185 61.1 4.9671 2 242 17.8 392.83 4.03
4 0.03237 0 2.18 0 0.458 6.998 45.8 6.0622 3 222 18.7 394.63 2.94
5 0.06905 0 2.18 0 0.458 7.147 54.2 6.0622 3 222 18.7 396.90 5.33
6 0.02985 0 2.18 0 0.458 6.430 58.7 6.0622 3 222 18.7 394.12 5.21
medv
1 24.0
2 21.6
3 34.7
4 33.4
5 36.2
6 28.7
names(Boston)
[1] "crim" "zn" "indus" "chas" "nox" "rm" "age"
[8] "dis" "rad" "tax" "ptratio" "black" "lstat" "medv"
Resumen descriptivo
skim(Boston)
Name | Boston |
Number of rows | 506 |
Number of columns | 14 |
_______________________ | |
Column type frequency: | |
numeric | 14 |
________________________ | |
Group variables | None |
Variable type: numeric
skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
---|---|---|---|---|---|---|---|---|---|---|
crim | 0 | 1 | 3.61 | 8.60 | 0.01 | 0.08 | 0.26 | 3.68 | 88.98 | ▇▁▁▁▁ |
zn | 0 | 1 | 11.36 | 23.32 | 0.00 | 0.00 | 0.00 | 12.50 | 100.00 | ▇▁▁▁▁ |
indus | 0 | 1 | 11.14 | 6.86 | 0.46 | 5.19 | 9.69 | 18.10 | 27.74 | ▇▆▁▇▁ |
chas | 0 | 1 | 0.07 | 0.25 | 0.00 | 0.00 | 0.00 | 0.00 | 1.00 | ▇▁▁▁▁ |
nox | 0 | 1 | 0.55 | 0.12 | 0.38 | 0.45 | 0.54 | 0.62 | 0.87 | ▇▇▆▅▁ |
rm | 0 | 1 | 6.28 | 0.70 | 3.56 | 5.89 | 6.21 | 6.62 | 8.78 | ▁▂▇▂▁ |
age | 0 | 1 | 68.57 | 28.15 | 2.90 | 45.02 | 77.50 | 94.07 | 100.00 | ▂▂▂▃▇ |
dis | 0 | 1 | 3.80 | 2.11 | 1.13 | 2.10 | 3.21 | 5.19 | 12.13 | ▇▅▂▁▁ |
rad | 0 | 1 | 9.55 | 8.71 | 1.00 | 4.00 | 5.00 | 24.00 | 24.00 | ▇▂▁▁▃ |
tax | 0 | 1 | 408.24 | 168.54 | 187.00 | 279.00 | 330.00 | 666.00 | 711.00 | ▇▇▃▁▇ |
ptratio | 0 | 1 | 18.46 | 2.16 | 12.60 | 17.40 | 19.05 | 20.20 | 22.00 | ▁▃▅▅▇ |
black | 0 | 1 | 356.67 | 91.29 | 0.32 | 375.38 | 391.44 | 396.22 | 396.90 | ▁▁▁▁▇ |
lstat | 0 | 1 | 12.65 | 7.14 | 1.73 | 6.95 | 11.36 | 16.96 | 37.97 | ▇▇▅▂▁ |
medv | 0 | 1 | 22.53 | 9.20 | 5.00 | 17.02 | 21.20 | 25.00 | 50.00 | ▂▇▅▁▁ |
summary(Boston)
crim zn indus chas
Min. : 0.00632 Min. : 0.00 Min. : 0.46 Min. :0.00000
1st Qu.: 0.08205 1st Qu.: 0.00 1st Qu.: 5.19 1st Qu.:0.00000
Median : 0.25651 Median : 0.00 Median : 9.69 Median :0.00000
Mean : 3.61352 Mean : 11.36 Mean :11.14 Mean :0.06917
3rd Qu.: 3.67708 3rd Qu.: 12.50 3rd Qu.:18.10 3rd Qu.:0.00000
Max. :88.97620 Max. :100.00 Max. :27.74 Max. :1.00000
nox rm age dis
Min. :0.3850 Min. :3.561 Min. : 2.90 Min. : 1.130
1st Qu.:0.4490 1st Qu.:5.886 1st Qu.: 45.02 1st Qu.: 2.100
Median :0.5380 Median :6.208 Median : 77.50 Median : 3.207
Mean :0.5547 Mean :6.285 Mean : 68.57 Mean : 3.795
3rd Qu.:0.6240 3rd Qu.:6.623 3rd Qu.: 94.08 3rd Qu.: 5.188
Max. :0.8710 Max. :8.780 Max. :100.00 Max. :12.127
rad tax ptratio black
Min. : 1.000 Min. :187.0 Min. :12.60 Min. : 0.32
1st Qu.: 4.000 1st Qu.:279.0 1st Qu.:17.40 1st Qu.:375.38
Median : 5.000 Median :330.0 Median :19.05 Median :391.44
Mean : 9.549 Mean :408.2 Mean :18.46 Mean :356.67
3rd Qu.:24.000 3rd Qu.:666.0 3rd Qu.:20.20 3rd Qu.:396.23
Max. :24.000 Max. :711.0 Max. :22.00 Max. :396.90
lstat medv
Min. : 1.73 Min. : 5.00
1st Qu.: 6.95 1st Qu.:17.02
Median :11.36 Median :21.20
Mean :12.65 Mean :22.53
3rd Qu.:16.95 3rd Qu.:25.00
Max. :37.97 Max. :50.00
En este analisis preliminar, se pudo identificar que los datos de nuestras variables no tenian datos faltantes, es decir que no habia la presencia de NA
, sin embargo se pudo identificar que estas no tenian una distribución normal, por lo que se procedio a normalizar:
NORMALIZACION DE VARIABLES
<-log(Boston$crim)
crim_l<-sqrt(Boston$zn)
zn_s<-log(Boston$indus)
indus_l# chas
<-sqrt(Boston$nox)
nox_s# rm
# age
<-log(Boston$dis)
dist_l# rad
<-sqrt(Boston$tax)
tax_s<-sqrt(Boston$ptratio)
ptratio_s # black
<-log(Boston$lstat)
lstat_l<-log(Boston$medv) medv_l
<-data.frame(crim_l,zn_s,indus_l,Boston$chas,nox_s,Boston$rm,Boston$age,dist_l,Boston$rad, tax_s,ptratio_s,Boston$black,lstat_l,medv_l) Boston_n
skim(Boston_n)
Name | Boston_n |
Number of rows | 506 |
Number of columns | 14 |
_______________________ | |
Column type frequency: | |
numeric | 14 |
________________________ | |
Group variables | None |
Variable type: numeric
skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
---|---|---|---|---|---|---|---|---|---|---|
crim_l | 0 | 1 | -0.78 | 2.16 | -5.06 | -2.50 | -1.36 | 1.30 | 4.49 | ▂▇▃▅▂ |
zn_s | 0 | 1 | 1.66 | 2.94 | 0.00 | 0.00 | 0.00 | 3.54 | 10.00 | ▇▁▂▁▁ |
indus_l | 0 | 1 | 2.16 | 0.78 | -0.78 | 1.65 | 2.27 | 2.90 | 3.32 | ▁▁▃▆▇ |
Boston.chas | 0 | 1 | 0.07 | 0.25 | 0.00 | 0.00 | 0.00 | 0.00 | 1.00 | ▇▁▁▁▁ |
nox_s | 0 | 1 | 0.74 | 0.08 | 0.62 | 0.67 | 0.73 | 0.79 | 0.93 | ▇▇▆▅▁ |
Boston.rm | 0 | 1 | 6.28 | 0.70 | 3.56 | 5.89 | 6.21 | 6.62 | 8.78 | ▁▂▇▂▁ |
Boston.age | 0 | 1 | 68.57 | 28.15 | 2.90 | 45.02 | 77.50 | 94.07 | 100.00 | ▂▂▂▃▇ |
dist_l | 0 | 1 | 1.19 | 0.54 | 0.12 | 0.74 | 1.17 | 1.65 | 2.50 | ▃▇▆▆▂ |
Boston.rad | 0 | 1 | 9.55 | 8.71 | 1.00 | 4.00 | 5.00 | 24.00 | 24.00 | ▇▂▁▁▃ |
tax_s | 0 | 1 | 19.80 | 4.03 | 13.67 | 16.70 | 18.17 | 25.81 | 26.66 | ▃▇▅▁▆ |
ptratio_s | 0 | 1 | 4.29 | 0.26 | 3.55 | 4.17 | 4.36 | 4.49 | 4.69 | ▁▃▃▅▇ |
Boston.black | 0 | 1 | 356.67 | 91.29 | 0.32 | 375.38 | 391.44 | 396.22 | 396.90 | ▁▁▁▁▇ |
lstat_l | 0 | 1 | 2.37 | 0.60 | 0.55 | 1.94 | 2.43 | 2.83 | 3.64 | ▁▃▆▇▃ |
medv_l | 0 | 1 | 3.03 | 0.41 | 1.61 | 2.83 | 3.05 | 3.22 | 3.91 | ▁▁▆▇▂ |
Con esta base de datos ya transformada se puede ver que hay una mejora en alguans variables, por lo que se procede a ajustar un modelo SVM
.
DATOS DE ENTRENAMIENTO Y DE PRUEBA
<- Boston_n
boston set.seed(123)
= createDataPartition(boston$medv_l, p = .8, list = F)
indexes = boston[indexes, ]
datos_entrenamiento dim(datos_entrenamiento)
[1] 407 14
= boston[-indexes, ]
datos_prueba dim(datos_prueba)
[1] 99 14
REGRESION MULTIPLE clasica
<- lm(formula = medv_l ~ ., data = datos_entrenamiento)
modelo_multiple summary(modelo_multiple)
Call:
lm(formula = medv_l ~ ., data = datos_entrenamiento)
Residuals:
Min 1Q Median 3Q Max
-0.87894 -0.09670 -0.00145 0.11449 0.80246
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.7769305 0.3910451 14.773 < 2e-16 ***
crim_l -0.0196307 0.0127095 -1.545 0.123257
zn_s -0.0093093 0.0052933 -1.759 0.079408 .
indus_l 0.0059329 0.0241254 0.246 0.805873
Boston.chas 0.0998887 0.0379148 2.635 0.008758 **
nox_s -0.9846764 0.2924334 -3.367 0.000834 ***
Boston.rm 0.0617847 0.0189855 3.254 0.001235 **
Boston.age 0.0014045 0.0006579 2.135 0.033393 *
dist_l -0.1127541 0.0401038 -2.812 0.005177 **
Boston.rad 0.0096750 0.0031977 3.026 0.002645 **
tax_s -0.0197290 0.0061412 -3.213 0.001424 **
ptratio_s -0.2945953 0.0523882 -5.623 3.56e-08 ***
Boston.black 0.0005401 0.0001184 4.564 6.73e-06 ***
lstat_l -0.4268907 0.0297814 -14.334 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.1929 on 393 degrees of freedom
Multiple R-squared: 0.7796, Adjusted R-squared: 0.7723
F-statistic: 106.9 on 13 and 393 DF, p-value: < 2.2e-16
confint(modelo_multiple)
2.5 % 97.5 %
(Intercept) 5.0081286449 6.5457324206
crim_l -0.0446178859 0.0053565367
zn_s -0.0197160370 0.0010974475
indus_l -0.0414981477 0.0533639861
Boston.chas 0.0253474188 0.1744300153
nox_s -1.5596058508 -0.4097470196
Boston.rm 0.0244587861 0.0991105167
Boston.age 0.0001110541 0.0026978474
dist_l -0.1915988073 -0.0339093057
Boston.rad 0.0033882332 0.0159617339
tax_s -0.0318027100 -0.0076552666
ptratio_s -0.3975914853 -0.1915990232
Boston.black 0.0003074416 0.0007728346
lstat_l -0.4854413768 -0.3683399478
par(mfrow = c(1,2))
plot(modelo_multiple)
<- predict(modelo_multiple , datos_prueba) predictrm
<-exp(datos_prueba$medv_l) # Reversion
medv_l1<-exp(predictrm) # Reversion
predictrm1=data.frame(medv_l1,predictrm1)
comparaccor(predictrm,medv_l1)
[1] 0.8788942
= R2(predictrm1,medv_l1, form = "traditional"); r21 r21
[1] 0.7926973
Se tiene un \(R^2=0.79\)
comparac
medv_l1 predictrm1
3 34.7 37.36120
6 28.7 30.87746
9 16.5 14.41954
11 15.0 17.57389
14 20.4 20.32658
15 18.2 19.24019
31 12.7 13.37899
32 14.5 17.56425
36 18.9 23.21605
41 34.9 43.32942
45 21.2 22.95473
51 19.7 19.76151
54 23.4 23.64767
74 23.4 23.14298
76 21.4 22.69113
78 20.8 21.52994
79 21.2 19.94712
82 23.9 26.29687
86 26.6 28.94178
92 22.0 27.05869
105 20.1 19.70191
108 20.4 18.68847
109 19.8 20.37404
111 21.7 18.17124
120 19.3 18.79373
127 15.7 15.27340
130 14.3 14.38995
131 19.2 18.05572
138 17.1 17.18424
142 14.4 10.92503
146 13.8 12.61768
151 21.5 18.55795
152 19.6 18.04568
155 17.0 19.21932
163 50.0 61.00730
167 50.0 41.38998
168 23.8 19.52283
170 22.3 22.49945
172 19.1 21.39140
178 24.6 31.01877
182 36.2 26.41312
184 32.5 34.68522
188 32.0 28.66276
198 30.3 26.70295
203 42.3 39.39457
205 50.0 47.65440
215 23.7 12.34933
218 28.7 26.46704
221 26.7 29.54552
224 30.1 28.11595
244 23.7 28.02456
246 18.5 15.30570
247 24.3 20.02031
250 26.2 23.78443
252 24.8 29.72819
255 21.9 24.31992
257 44.0 41.72944
262 43.1 33.02647
271 21.1 18.76062
293 27.9 29.61458
294 23.9 25.13908
300 29.0 30.97078
305 36.1 28.57896
307 33.4 31.87114
312 22.1 26.94445
316 16.2 20.09783
320 21.0 18.95065
323 20.4 23.08531
326 24.6 26.73701
330 22.6 23.77266
348 23.1 23.98286
352 24.1 23.75311
355 18.2 17.35434
357 17.8 16.46723
370 50.0 37.78821
378 13.3 16.04747
393 9.7 12.59152
394 13.8 16.97196
401 5.6 13.18933
403 12.1 15.28944
405 8.5 11.86324
406 5.0 13.62631
410 27.5 15.23119
411 15.0 16.87800
417 7.5 11.45335
422 14.2 15.67219
445 10.8 12.16125
449 14.1 15.24133
453 16.1 15.52274
455 14.9 12.37125
472 19.6 19.20331
481 23.0 19.66862
484 21.8 18.53848
486 21.2 18.64215
487 19.1 16.62447
490 7.0 12.08775
493 20.1 16.02290
495 24.5 17.60126
496 23.1 15.04445
plot(medv_l1,predictrm1)
Analisis de supuestos
qqnorm(modelo_multiple$residuals)
qqline(modelo_multiple$residuals)
shapiro.test(modelo_multiple$residuals)
Shapiro-Wilk normality test
data: modelo_multiple$residuals
W = 0.95758, p-value = 1.932e-09
Modelamiento de regresion mediante arboles
library(caret)
<- rpart(medv_l ~ ., data = datos_entrenamiento,
mod1 method = "anova", cp=0.03) # cp = cost complexity - xval = cross validation
mod1
n= 407
node), split, n, deviance, yval
* denotes terminal node
1) root 407 66.319270 3.034646
2) lstat_l>=2.667226 149 14.726310 2.671899
4) crim_l>=1.946788 62 5.331097 2.437902 *
5) crim_l< 1.946788 87 3.581139 2.838656 *
3) lstat_l< 2.667226 258 20.663780 3.244140
6) Boston.rm< 6.797 184 6.015891 3.116383 *
7) Boston.rm>=6.797 74 4.177293 3.561804 *
rpart.plot(mod1)
plotcp(mod1) # Error relativo: rescalamiento del error entre 0 y 1
<- predict(mod1 , datos_prueba)
predictr <-exp(predictr) #Reversion
predictr1<-exp(datos_prueba$medv) # Reversion
medv1plot(predictr1,medv1)
cor(predictr1,medv1)
[1] 0.7921983
= R2(predictr1,medv1, form = "traditional"); r2 r2
[1] 0.6117443
Se puede visualizar que el \(R^2=0.6117\) fue menor que el anterior metodo
=varImp(mod1)
impor impor
Overall
Boston.rm 0.8464935
crim_l 0.7194075
dist_l 0.3256224
indus_l 0.1545226
lstat_l 1.1924551
nox_s 0.6471222
ptratio_s 0.4814891
tax_s 0.3969475
zn_s 0.0000000
Boston.chas 0.0000000
Boston.age 0.0000000
Boston.rad 0.0000000
Boston.black 0.0000000
Modelamiento utilizando la libreria tree
library(tree)
set.seed(123) # Establecimiento de la semilla
<- tree::tree(medv_l ~ .,
arbol_regresion data = datos_entrenamiento, # Datos a utilizar para la creación del modelo
split = "deviance", # Criterio de división
mincut = 20, # Número mínimo de observaciones para que se produzca la división
minsize = 50)# Número mínimo de observaciones para que un nodo pueda ramificarse
summary(arbol_regresion) # Resumen del árbol de regresión
Regression tree:
tree::tree(formula = medv_l ~ ., data = datos_entrenamiento,
split = "deviance", mincut = 20, minsize = 50)
Variables actually used in tree construction:
[1] "lstat_l" "Boston.rm" "crim_l" "nox_s"
Number of terminal nodes: 8
Residual mean deviance: 0.03559 = 14.2 / 399
Distribution of residuals:
Min. 1st Qu. Median Mean 3rd Qu. Max.
-0.8289000 -0.0945400 -0.0004763 0.0000000 0.1024000 0.7211000
par(mar = c(1,1,1,1)) # Márgenes del gráfico
plot(x = arbol_regresion, type = "proportional") # Árbol de decisión con ramas proporcionales a la impureza (heterogeneidad) de las hojas
text(x = arbol_regresion, splits = TRUE, pretty = 0, cex = 0.8, col = "firebrick") # Etiquetas del árbol
Predicción y evaluación del modelo
<- predict(arbol_regresion, newdata = datos_prueba)
predicciones cor(predicciones,datos_prueba$medv_l)
[1] 0.8390848
= R2(predictr,datos_prueba$medv_l, form = "traditional")
r22 r22
[1] 0.6204341
<- sqrt(mean((predicciones - datos_prueba$medv)^2))
test_rmse paste("Error de test del árbol inicial:", round(test_rmse,2))
[1] "Error de test del árbol inicial: 0.23"
plot(datos_prueba$medv,predicciones)
= 1:length(datos_prueba$medv_l)
x plot(x, datos_prueba$medv_l, pch=18, col="red")
lines(x, predicciones, lwd="1", col="blue")
Métricas
library(Metrics)
<-exp(datos_prueba$medv_l)
prueba1<-exp(predicciones)
prediccion1= MSE(prueba1, prediccion1)
mse = MAE(prueba1, prediccion1)
mae = RMSE(prueba1, prediccion1)
rmse = R2(prueba1, prediccion1, form = "traditional")
r2 cor(prueba1, prediccion1)
[1] 0.871487
cat(" MAE:", mae, "\n", "MSE:", mse, "\n",
"RMSE:", rmse, "\n", "R-squared:", r2)
MAE: 3.038617
MSE: 21.3719
RMSE: 4.622975
R-squared: 0.6444012
El \(R^2=0.64\) no tiene una mejora considerable con respecto al primer metodo
SVM: Support Vector Machine
Utilizando la libreria CARET()
Lineal
<- train(medv_l ~ ., method = "svmLinear", data = datos_entrenamiento)
modelo_svmlineal modelo_svmlineal
Support Vector Machines with Linear Kernel
407 samples
13 predictor
No pre-processing
Resampling: Bootstrapped (25 reps)
Summary of sample sizes: 407, 407, 407, 407, 407, 407, ...
Resampling results:
RMSE Rsquared MAE
0.2090924 0.7329231 0.1379755
Tuning parameter 'C' was held constant at a value of 1
=predict(modelo_svmlineal, datos_prueba)
predlineal<-exp(predlineal) #reverso
pred2plot(pred2,medv1)
= R2(pred2,medv1, form = "traditional")
r2 abs(r2)
[1] 0.8137841
Se tiene una mejora considerable en el parametro \(R^2\).
=varImp(modelo_svmlineal)
impor0 impor0
loess r-squared variable importance
Overall
lstat_l 100.00
Boston.rm 63.40
crim_l 53.67
tax_s 43.45
indus_l 42.93
nox_s 35.71
ptratio_s 33.81
Boston.black 32.76
Boston.age 32.35
dist_l 31.95
Boston.rad 31.71
zn_s 19.44
Boston.chas 0.00
plot(impor0,7)
Radial
<- train(medv_l ~ ., method = "svmRadial", data = datos_entrenamiento)
modelo_svmradial modelo_svmradial
Support Vector Machines with Radial Basis Function Kernel
407 samples
13 predictor
No pre-processing
Resampling: Bootstrapped (25 reps)
Summary of sample sizes: 407, 407, 407, 407, 407, 407, ...
Resampling results across tuning parameters:
C RMSE Rsquared MAE
0.25 0.1990303 0.7718296 0.1297826
0.50 0.1836365 0.7993736 0.1200534
1.00 0.1746114 0.8161636 0.1155072
Tuning parameter 'sigma' was held constant at a value of 0.12038
RMSE was used to select the optimal model using the smallest value.
The final values used for the model were sigma = 0.12038 and C = 1.
=predict(modelo_svmradial, datos_prueba)
predlradial<-exp(predlradial) #reversion predr2
plot(predr2,medv1)
= R2(predr2,medv1, form = "traditional")
r2 r2
[1] 0.881861
Ya se tiene una mejora considerable con respecto al lineal
en cuanto al \(R^2\)
=varImp(modelo_svmradial)
impor1 impor1
loess r-squared variable importance
Overall
lstat_l 100.00
Boston.rm 63.40
crim_l 53.67
tax_s 43.45
indus_l 42.93
nox_s 35.71
ptratio_s 33.81
Boston.black 32.76
Boston.age 32.35
dist_l 31.95
Boston.rad 31.71
zn_s 19.44
Boston.chas 0.00
plot(impor1,7)
Utilizando la libreria SVM
= svm(medv_l~., data=datos_entrenamiento, cost=1,gamma=0.07692308,epsilon=0.1 )
model_reg summary(model_reg )
Call:
svm(formula = medv_l ~ ., data = datos_entrenamiento, cost = 1, gamma = 0.07692308,
epsilon = 0.1)
Parameters:
SVM-Type: eps-regression
SVM-Kernel: radial
cost: 1
gamma: 0.07692308
epsilon: 0.1
Number of Support Vectors: 277
print(model_reg)
Call:
svm(formula = medv_l ~ ., data = datos_entrenamiento, cost = 1, gamma = 0.07692308,
epsilon = 0.1)
Parameters:
SVM-Type: eps-regression
SVM-Kernel: radial
cost: 1
gamma: 0.07692308
epsilon: 0.1
Number of Support Vectors: 277
= predict(model_reg, datos_prueba)
pred <-exp(pred) # reversion
predsvm<- sqrt(mean((predsvm - medv1)^2))
test_rmsesvm test_rmsesvm
[1] 3.336019
plot(medv1,predsvm)
=R2(medv1,predsvm,form = "traditional");r2 r2
[1] 0.8114883
Se pudo conseguir una ligera mejora con respecto al \(R^2\) radial de la libreria caret
Comparación de Modelos
par(mfrow=c(2,1))
plot(medv1,prediccion1)
plot(medv1,predsvm)
= 1:length(medv1)
x plot(x, medv1, pch=18, col="red")
lines(x, predsvm, lwd="1", col="blue")
Metricas
= MSE(medv1, predsvm)
mse = MAE(medv1, predsvm)
mae = RMSE(medv1, predsvm)
rmse = R2(medv1, predsvm, form = "traditional")
r2
cat(" MAE:", mae, "\n", "MSE:", mse, "\n",
"RMSE:", rmse, "\n", "R-squared:", r2)
MAE: 2.198981
MSE: 11.12902
RMSE: 3.336019
R-squared: 0.8114883
Se puede ver que la metrica \(R^2\) no ha mejorado
Modelamiento de REGRESION utilizando REDES NEURONALES
<- lm(medv_l ~ ., data=datos_entrenamiento)
modered <- predict(modered,datos_prueba)
predicred <-exp(predicred) # reversión
predicredn<- sqrt(mean((predicredn - medv1)^2))
test_rmsesred plot(medv1,predicredn)
=cor(medv1,predicredn)
r1=r1*r1;R2 R2
[1] 0.7947487
= 1:length(medv1)
x plot(x, medv1, pch=18, col="red")
lines(x, predicredn, lwd="1", col="blue")
Métricas
= MSE(medv1, predicredn)
mse = MAE(medv1, predicredn)
mae = RMSE(medv1, predicredn)
rmse = R2(medv1, predicredn, form = "traditional")
r2
cat(" MAE:", mae, "\n", "MSE:", mse, "\n",
"RMSE:", rmse, "\n", "R-squared:", r2)
MAE: 3.163919
MSE: 17.98651
RMSE: 4.241051
R-squared: 0.7601802
El \(R^2\) no es el mejor
RANDOM FOREST PARA REGRESION
<- trainControl(method = "cv", number = 10)
ctrl <- train(medv_l ~ .,
modelo_rf data = datos_entrenamiento,
method = "rf",
trControl = ctrl,
ntree=50,
tuneLength = 5)
<-predict(modelo_rf,datos_prueba)
predic.rfplot(predic.rf,datos_prueba$medv_l)
=cor(predic.rf,datos_prueba$medv_l)
r=r*r; R2 R2
[1] 0.843489
Utilizando la libreria randomForest
<- randomForest(medv_l ~ ., data = datos_entrenamiento, mtry = 3,
modelo.rf importance = TRUE, na.action = na.omit)
print(modelo.rf)
Call:
randomForest(formula = medv_l ~ ., data = datos_entrenamiento, mtry = 3, importance = TRUE, na.action = na.omit)
Type of random forest: regression
Number of trees: 500
No. of variables tried at each split: 3
Mean of squared residuals: 0.02448056
% Var explained: 84.98
plot(modelo.rf)
# número de árboles con el menor MSE
which.min(modelo.rf$mse)
[1] 419
# RMSE de este modelo óptimo RF
sqrt(modelo.rf$mse[which.min(modelo.rf$mse)])
[1] 0.156118
<- predict(modelo.rf, datos_prueba)
pred_randomForest =cor(pred_randomForest,datos_prueba$medv)
r=r*r; R2 R2
[1] 0.8826476
Se tiene un \(R^2\) bastante bueno.
head(pred_randomForest)
3 6 9 11 14 15
3.488354 3.275015 2.932016 3.055760 2.993228 2.963010
BOOSTING PARA REGRESION
library(gbm)
Warning: package 'gbm' was built under R version 4.3.2
Loaded gbm 2.1.8.1
<- train(medv_l ~ ., method = "gbm", data = datos_entrenamiento,
caret.gbm1 tuneGrid = data.frame(n.trees = 100, interaction.depth = 2,
shrinkage = c(0.3, 0.1, 0.05, 0.01, 0.005),
n.minobsinnode = 10),
trControl = trainControl(method = "cv", number = 5))
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1589 nan 0.0050 0.0009
2 0.1579 nan 0.0050 0.0010
3 0.1568 nan 0.0050 0.0009
4 0.1558 nan 0.0050 0.0011
5 0.1550 nan 0.0050 0.0008
6 0.1541 nan 0.0050 0.0010
7 0.1531 nan 0.0050 0.0010
8 0.1522 nan 0.0050 0.0010
9 0.1512 nan 0.0050 0.0008
10 0.1503 nan 0.0050 0.0008
20 0.1412 nan 0.0050 0.0008
40 0.1257 nan 0.0050 0.0007
60 0.1123 nan 0.0050 0.0006
80 0.1008 nan 0.0050 0.0005
100 0.0912 nan 0.0050 0.0004
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1582 nan 0.0100 0.0017
2 0.1562 nan 0.0100 0.0019
3 0.1544 nan 0.0100 0.0017
4 0.1525 nan 0.0100 0.0019
5 0.1507 nan 0.0100 0.0018
6 0.1488 nan 0.0100 0.0017
7 0.1470 nan 0.0100 0.0016
8 0.1454 nan 0.0100 0.0019
9 0.1438 nan 0.0100 0.0016
10 0.1418 nan 0.0100 0.0016
20 0.1261 nan 0.0100 0.0015
40 0.1014 nan 0.0100 0.0011
60 0.0828 nan 0.0100 0.0008
80 0.0690 nan 0.0100 0.0005
100 0.0587 nan 0.0100 0.0004
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1504 nan 0.0500 0.0097
2 0.1416 nan 0.0500 0.0083
3 0.1333 nan 0.0500 0.0092
4 0.1257 nan 0.0500 0.0074
5 0.1182 nan 0.0500 0.0068
6 0.1121 nan 0.0500 0.0059
7 0.1070 nan 0.0500 0.0051
8 0.1013 nan 0.0500 0.0053
9 0.0959 nan 0.0500 0.0042
10 0.0908 nan 0.0500 0.0046
20 0.0574 nan 0.0500 0.0018
40 0.0333 nan 0.0500 0.0003
60 0.0253 nan 0.0500 0.0001
80 0.0218 nan 0.0500 0.0000
100 0.0191 nan 0.0500 -0.0001
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1414 nan 0.1000 0.0183
2 0.1261 nan 0.1000 0.0166
3 0.1124 nan 0.1000 0.0131
4 0.1007 nan 0.1000 0.0097
5 0.0902 nan 0.1000 0.0076
6 0.0820 nan 0.1000 0.0081
7 0.0747 nan 0.1000 0.0069
8 0.0688 nan 0.1000 0.0045
9 0.0638 nan 0.1000 0.0042
10 0.0583 nan 0.1000 0.0041
20 0.0345 nan 0.1000 0.0009
40 0.0220 nan 0.1000 -0.0005
60 0.0178 nan 0.1000 0.0000
80 0.0156 nan 0.1000 -0.0001
100 0.0137 nan 0.1000 -0.0001
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1095 nan 0.3000 0.0476
2 0.0802 nan 0.3000 0.0308
3 0.0616 nan 0.3000 0.0198
4 0.0499 nan 0.3000 0.0102
5 0.0402 nan 0.3000 0.0077
6 0.0357 nan 0.3000 0.0043
7 0.0326 nan 0.3000 0.0010
8 0.0306 nan 0.3000 0.0006
9 0.0291 nan 0.3000 0.0003
10 0.0282 nan 0.3000 -0.0000
20 0.0200 nan 0.3000 -0.0001
40 0.0148 nan 0.3000 -0.0003
60 0.0112 nan 0.3000 -0.0005
80 0.0093 nan 0.3000 -0.0003
100 0.0078 nan 0.3000 -0.0002
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1681 nan 0.0050 0.0011
2 0.1670 nan 0.0050 0.0011
3 0.1660 nan 0.0050 0.0011
4 0.1650 nan 0.0050 0.0010
5 0.1639 nan 0.0050 0.0011
6 0.1629 nan 0.0050 0.0010
7 0.1619 nan 0.0050 0.0010
8 0.1610 nan 0.0050 0.0009
9 0.1600 nan 0.0050 0.0010
10 0.1589 nan 0.0050 0.0009
20 0.1495 nan 0.0050 0.0009
40 0.1336 nan 0.0050 0.0007
60 0.1197 nan 0.0050 0.0007
80 0.1078 nan 0.0050 0.0005
100 0.0975 nan 0.0050 0.0005
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1671 nan 0.0100 0.0020
2 0.1648 nan 0.0100 0.0020
3 0.1627 nan 0.0100 0.0022
4 0.1607 nan 0.0100 0.0021
5 0.1586 nan 0.0100 0.0019
6 0.1566 nan 0.0100 0.0019
7 0.1546 nan 0.0100 0.0019
8 0.1528 nan 0.0100 0.0019
9 0.1511 nan 0.0100 0.0014
10 0.1493 nan 0.0100 0.0018
20 0.1327 nan 0.0100 0.0015
40 0.1064 nan 0.0100 0.0010
60 0.0875 nan 0.0100 0.0008
80 0.0735 nan 0.0100 0.0005
100 0.0627 nan 0.0100 0.0003
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1577 nan 0.0500 0.0111
2 0.1481 nan 0.0500 0.0097
3 0.1401 nan 0.0500 0.0082
4 0.1321 nan 0.0500 0.0082
5 0.1250 nan 0.0500 0.0067
6 0.1180 nan 0.0500 0.0061
7 0.1118 nan 0.0500 0.0070
8 0.1060 nan 0.0500 0.0053
9 0.1005 nan 0.0500 0.0056
10 0.0949 nan 0.0500 0.0035
20 0.0613 nan 0.0500 0.0020
40 0.0363 nan 0.0500 0.0001
60 0.0282 nan 0.0500 -0.0001
80 0.0240 nan 0.0500 0.0000
100 0.0210 nan 0.0500 -0.0000
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1486 nan 0.1000 0.0218
2 0.1330 nan 0.1000 0.0186
3 0.1189 nan 0.1000 0.0137
4 0.1071 nan 0.1000 0.0119
5 0.0952 nan 0.1000 0.0076
6 0.0862 nan 0.1000 0.0090
7 0.0783 nan 0.1000 0.0070
8 0.0723 nan 0.1000 0.0049
9 0.0658 nan 0.1000 0.0053
10 0.0621 nan 0.1000 0.0030
20 0.0355 nan 0.1000 0.0006
40 0.0221 nan 0.1000 0.0000
60 0.0184 nan 0.1000 -0.0002
80 0.0157 nan 0.1000 0.0000
100 0.0144 nan 0.1000 -0.0001
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1217 nan 0.3000 0.0585
2 0.0881 nan 0.3000 0.0304
3 0.0664 nan 0.3000 0.0180
4 0.0529 nan 0.3000 0.0141
5 0.0448 nan 0.3000 0.0069
6 0.0398 nan 0.3000 0.0030
7 0.0356 nan 0.3000 0.0026
8 0.0336 nan 0.3000 0.0004
9 0.0310 nan 0.3000 0.0021
10 0.0301 nan 0.3000 -0.0009
20 0.0212 nan 0.3000 -0.0002
40 0.0148 nan 0.3000 -0.0007
60 0.0122 nan 0.3000 -0.0004
80 0.0101 nan 0.3000 -0.0001
100 0.0091 nan 0.3000 -0.0003
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1660 nan 0.0050 0.0009
2 0.1649 nan 0.0050 0.0010
3 0.1638 nan 0.0050 0.0012
4 0.1627 nan 0.0050 0.0010
5 0.1617 nan 0.0050 0.0009
6 0.1608 nan 0.0050 0.0009
7 0.1598 nan 0.0050 0.0010
8 0.1588 nan 0.0050 0.0010
9 0.1579 nan 0.0050 0.0009
10 0.1568 nan 0.0050 0.0009
20 0.1478 nan 0.0050 0.0008
40 0.1316 nan 0.0050 0.0008
60 0.1177 nan 0.0050 0.0006
80 0.1058 nan 0.0050 0.0005
100 0.0956 nan 0.0050 0.0004
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1649 nan 0.0100 0.0019
2 0.1629 nan 0.0100 0.0018
3 0.1609 nan 0.0100 0.0020
4 0.1591 nan 0.0100 0.0019
5 0.1572 nan 0.0100 0.0017
6 0.1554 nan 0.0100 0.0019
7 0.1536 nan 0.0100 0.0015
8 0.1517 nan 0.0100 0.0018
9 0.1500 nan 0.0100 0.0017
10 0.1482 nan 0.0100 0.0017
20 0.1319 nan 0.0100 0.0013
40 0.1065 nan 0.0100 0.0009
60 0.0871 nan 0.0100 0.0008
80 0.0723 nan 0.0100 0.0006
100 0.0616 nan 0.0100 0.0003
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1562 nan 0.0500 0.0093
2 0.1470 nan 0.0500 0.0080
3 0.1394 nan 0.0500 0.0077
4 0.1307 nan 0.0500 0.0076
5 0.1239 nan 0.0500 0.0066
6 0.1165 nan 0.0500 0.0074
7 0.1105 nan 0.0500 0.0064
8 0.1044 nan 0.0500 0.0059
9 0.0997 nan 0.0500 0.0052
10 0.0951 nan 0.0500 0.0046
20 0.0610 nan 0.0500 0.0017
40 0.0355 nan 0.0500 0.0003
60 0.0268 nan 0.0500 0.0002
80 0.0228 nan 0.0500 -0.0000
100 0.0202 nan 0.0500 0.0000
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1484 nan 0.1000 0.0136
2 0.1320 nan 0.1000 0.0153
3 0.1179 nan 0.1000 0.0159
4 0.1053 nan 0.1000 0.0118
5 0.0968 nan 0.1000 0.0088
6 0.0875 nan 0.1000 0.0088
7 0.0798 nan 0.1000 0.0058
8 0.0730 nan 0.1000 0.0059
9 0.0676 nan 0.1000 0.0049
10 0.0620 nan 0.1000 0.0050
20 0.0358 nan 0.1000 -0.0001
40 0.0231 nan 0.1000 0.0004
60 0.0192 nan 0.1000 -0.0001
80 0.0167 nan 0.1000 -0.0001
100 0.0148 nan 0.1000 -0.0001
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1142 nan 0.3000 0.0561
2 0.0828 nan 0.3000 0.0303
3 0.0637 nan 0.3000 0.0160
4 0.0487 nan 0.3000 0.0135
5 0.0409 nan 0.3000 0.0046
6 0.0350 nan 0.3000 0.0045
7 0.0324 nan 0.3000 0.0018
8 0.0308 nan 0.3000 0.0008
9 0.0283 nan 0.3000 0.0020
10 0.0272 nan 0.3000 0.0006
20 0.0212 nan 0.3000 0.0006
40 0.0147 nan 0.3000 -0.0013
60 0.0120 nan 0.3000 -0.0001
80 0.0095 nan 0.3000 -0.0001
100 0.0082 nan 0.3000 -0.0003
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1553 nan 0.0050 0.0009
2 0.1543 nan 0.0050 0.0010
3 0.1533 nan 0.0050 0.0010
4 0.1524 nan 0.0050 0.0009
5 0.1513 nan 0.0050 0.0011
6 0.1504 nan 0.0050 0.0009
7 0.1495 nan 0.0050 0.0011
8 0.1485 nan 0.0050 0.0010
9 0.1475 nan 0.0050 0.0008
10 0.1466 nan 0.0050 0.0009
20 0.1378 nan 0.0050 0.0008
40 0.1224 nan 0.0050 0.0006
60 0.1089 nan 0.0050 0.0006
80 0.0978 nan 0.0050 0.0006
100 0.0880 nan 0.0050 0.0005
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1546 nan 0.0100 0.0017
2 0.1526 nan 0.0100 0.0020
3 0.1507 nan 0.0100 0.0018
4 0.1485 nan 0.0100 0.0018
5 0.1469 nan 0.0100 0.0017
6 0.1451 nan 0.0100 0.0015
7 0.1434 nan 0.0100 0.0016
8 0.1417 nan 0.0100 0.0016
9 0.1399 nan 0.0100 0.0019
10 0.1382 nan 0.0100 0.0017
20 0.1226 nan 0.0100 0.0015
40 0.0983 nan 0.0100 0.0011
60 0.0802 nan 0.0100 0.0007
80 0.0667 nan 0.0100 0.0005
100 0.0564 nan 0.0100 0.0004
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1466 nan 0.0500 0.0082
2 0.1376 nan 0.0500 0.0080
3 0.1288 nan 0.0500 0.0078
4 0.1220 nan 0.0500 0.0072
5 0.1140 nan 0.0500 0.0070
6 0.1076 nan 0.0500 0.0065
7 0.1009 nan 0.0500 0.0057
8 0.0954 nan 0.0500 0.0043
9 0.0905 nan 0.0500 0.0041
10 0.0862 nan 0.0500 0.0036
20 0.0551 nan 0.0500 0.0023
40 0.0313 nan 0.0500 0.0003
60 0.0246 nan 0.0500 0.0001
80 0.0216 nan 0.0500 -0.0001
100 0.0194 nan 0.0500 -0.0000
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1395 nan 0.1000 0.0168
2 0.1233 nan 0.1000 0.0154
3 0.1096 nan 0.1000 0.0137
4 0.0988 nan 0.1000 0.0107
5 0.0882 nan 0.1000 0.0096
6 0.0796 nan 0.1000 0.0074
7 0.0721 nan 0.1000 0.0074
8 0.0654 nan 0.1000 0.0057
9 0.0595 nan 0.1000 0.0052
10 0.0546 nan 0.1000 0.0044
20 0.0318 nan 0.1000 0.0009
40 0.0211 nan 0.1000 0.0001
60 0.0175 nan 0.1000 0.0001
80 0.0158 nan 0.1000 -0.0001
100 0.0142 nan 0.1000 -0.0000
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1031 nan 0.3000 0.0506
2 0.0728 nan 0.3000 0.0224
3 0.0530 nan 0.3000 0.0169
4 0.0440 nan 0.3000 0.0092
5 0.0370 nan 0.3000 0.0073
6 0.0337 nan 0.3000 0.0011
7 0.0307 nan 0.3000 0.0000
8 0.0283 nan 0.3000 0.0018
9 0.0264 nan 0.3000 0.0014
10 0.0253 nan 0.3000 0.0007
20 0.0196 nan 0.3000 -0.0005
40 0.0137 nan 0.3000 -0.0002
60 0.0112 nan 0.3000 -0.0002
80 0.0095 nan 0.3000 -0.0000
100 0.0084 nan 0.3000 -0.0004
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1612 nan 0.0050 0.0009
2 0.1603 nan 0.0050 0.0010
3 0.1594 nan 0.0050 0.0009
4 0.1584 nan 0.0050 0.0009
5 0.1574 nan 0.0050 0.0009
6 0.1565 nan 0.0050 0.0008
7 0.1555 nan 0.0050 0.0010
8 0.1546 nan 0.0050 0.0009
9 0.1538 nan 0.0050 0.0009
10 0.1528 nan 0.0050 0.0009
20 0.1440 nan 0.0050 0.0008
40 0.1289 nan 0.0050 0.0007
60 0.1155 nan 0.0050 0.0006
80 0.1040 nan 0.0050 0.0005
100 0.0941 nan 0.0050 0.0004
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1601 nan 0.0100 0.0021
2 0.1582 nan 0.0100 0.0020
3 0.1563 nan 0.0100 0.0017
4 0.1542 nan 0.0100 0.0020
5 0.1524 nan 0.0100 0.0018
6 0.1506 nan 0.0100 0.0017
7 0.1490 nan 0.0100 0.0015
8 0.1471 nan 0.0100 0.0017
9 0.1454 nan 0.0100 0.0016
10 0.1437 nan 0.0100 0.0016
20 0.1286 nan 0.0100 0.0015
40 0.1040 nan 0.0100 0.0011
60 0.0859 nan 0.0100 0.0008
80 0.0722 nan 0.0100 0.0005
100 0.0611 nan 0.0100 0.0004
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1524 nan 0.0500 0.0099
2 0.1426 nan 0.0500 0.0094
3 0.1348 nan 0.0500 0.0074
4 0.1276 nan 0.0500 0.0063
5 0.1213 nan 0.0500 0.0058
6 0.1148 nan 0.0500 0.0055
7 0.1082 nan 0.0500 0.0059
8 0.1036 nan 0.0500 0.0048
9 0.0979 nan 0.0500 0.0053
10 0.0934 nan 0.0500 0.0037
20 0.0616 nan 0.0500 0.0017
40 0.0358 nan 0.0500 0.0005
60 0.0281 nan 0.0500 0.0001
80 0.0245 nan 0.0500 -0.0001
100 0.0219 nan 0.0500 0.0000
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1432 nan 0.1000 0.0189
2 0.1290 nan 0.1000 0.0142
3 0.1150 nan 0.1000 0.0135
4 0.1029 nan 0.1000 0.0121
5 0.0938 nan 0.1000 0.0087
6 0.0852 nan 0.1000 0.0077
7 0.0779 nan 0.1000 0.0063
8 0.0706 nan 0.1000 0.0060
9 0.0644 nan 0.1000 0.0050
10 0.0588 nan 0.1000 0.0057
20 0.0350 nan 0.1000 0.0010
40 0.0241 nan 0.1000 0.0001
60 0.0198 nan 0.1000 -0.0000
80 0.0171 nan 0.1000 -0.0001
100 0.0150 nan 0.1000 -0.0001
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1150 nan 0.3000 0.0433
2 0.0862 nan 0.3000 0.0277
3 0.0646 nan 0.3000 0.0173
4 0.0526 nan 0.3000 0.0113
5 0.0446 nan 0.3000 0.0076
6 0.0391 nan 0.3000 0.0033
7 0.0357 nan 0.3000 0.0024
8 0.0318 nan 0.3000 0.0036
9 0.0297 nan 0.3000 0.0006
10 0.0291 nan 0.3000 -0.0013
20 0.0222 nan 0.3000 0.0003
40 0.0160 nan 0.3000 -0.0004
60 0.0121 nan 0.3000 -0.0001
80 0.0100 nan 0.3000 -0.0001
100 0.0086 nan 0.3000 -0.0002
Iter TrainDeviance ValidDeviance StepSize Improve
1 0.1442 nan 0.1000 0.0195
2 0.1295 nan 0.1000 0.0132
3 0.1161 nan 0.1000 0.0124
4 0.1054 nan 0.1000 0.0100
5 0.0954 nan 0.1000 0.0074
6 0.0861 nan 0.1000 0.0078
7 0.0782 nan 0.1000 0.0079
8 0.0714 nan 0.1000 0.0060
9 0.0664 nan 0.1000 0.0042
10 0.0616 nan 0.1000 0.0041
20 0.0351 nan 0.1000 0.0010
40 0.0235 nan 0.1000 0.0003
60 0.0188 nan 0.1000 0.0001
80 0.0165 nan 0.1000 -0.0002
100 0.0150 nan 0.1000 -0.0001
caret.gbm1
Stochastic Gradient Boosting
407 samples
13 predictor
No pre-processing
Resampling: Cross-Validated (5 fold)
Summary of sample sizes: 324, 326, 326, 327, 325
Resampling results across tuning parameters:
shrinkage RMSE Rsquared MAE
0.005 0.3103764 0.7260402 0.2249778
0.010 0.2552998 0.7553657 0.1861904
0.050 0.1758687 0.8172138 0.1230697
0.100 0.1670085 0.8335224 0.1165749
0.300 0.1737798 0.8239042 0.1237499
Tuning parameter 'n.trees' was held constant at a value of 100
Tuning
parameter 'interaction.depth' was held constant at a value of 2
Tuning parameter 'n.minobsinnode' was held constant at a value of 10
RMSE was used to select the optimal model using the smallest value.
The final values used for the model were n.trees = 100, interaction.depth =
2, shrinkage = 0.1 and n.minobsinnode = 10.
varImp(caret.gbm1)
gbm variable importance
Overall
lstat_l 100.0000
Boston.rm 43.4629
crim_l 25.6768
nox_s 14.8083
dist_l 8.9197
ptratio_s 5.8433
Boston.black 3.9548
Boston.age 1.2536
Boston.rad 0.9760
tax_s 0.9601
Boston.chas 0.7965
indus_l 0.0000
zn_s 0.0000
postResample(predict(caret.gbm1, datos_prueba), datos_prueba$medv)
RMSE Rsquared MAE
0.1753011 0.8431811 0.1128739
=predict(caret.gbm1, datos_prueba)
pred1=cor(pred1, datos_prueba$medv) r
=r*r; R2 R2
[1] 0.8431811
Utilizando libreria gbm
library(gbm)
<- gbm(medv_l ~ ., data = datos_entrenamiento) gbm.fit
Distribution not specified, assuming gaussian ...
gbm.fit
gbm(formula = medv_l ~ ., data = datos_entrenamiento)
A gradient boosted model with gaussian loss function.
100 iterations were performed.
There were 13 predictors of which 11 had non-zero influence.
summary(gbm.fit)
var rel.inf
lstat_l lstat_l 53.8658073
Boston.rm Boston.rm 18.2617598
crim_l crim_l 11.8016288
nox_s nox_s 5.6502484
ptratio_s ptratio_s 3.3349572
dist_l dist_l 3.2317848
Boston.black Boston.black 2.1044233
Boston.chas Boston.chas 0.8345119
Boston.age Boston.age 0.5920999
tax_s tax_s 0.2041525
Boston.rad Boston.rad 0.1186261
zn_s zn_s 0.0000000
indus_l indus_l 0.0000000
<- predict(gbm.fit, datos_prueba) pred
Using 100 trees...
pred
[1] 3.586003 3.241932 2.618182 2.777619 3.044901 3.030282 2.697183 3.045630
[9] 3.112019 3.586003 3.125518 3.044611 3.108619 3.192609 3.109182 3.104014
[17] 3.036877 3.210240 3.241034 3.158050 3.024814 3.024814 3.024814 3.024814
[25] 3.064313 2.624929 2.808061 3.013426 2.955758 2.634832 2.644216 2.989254
[33] 2.993266 2.912188 3.857164 3.797250 3.126851 3.141416 3.148395 3.233307
[41] 3.174040 3.275098 3.275287 3.383903 3.750785 3.771332 2.575909 3.167512
[49] 3.374231 3.250810 3.243345 2.831208 3.100581 3.212952 3.321907 3.192706
[57] 3.719306 3.630719 3.053105 3.294321 3.136869 3.544916 3.478788 3.511731
[65] 3.233179 3.097234 3.069277 3.177697 3.228996 3.215559 3.206957 3.224589
[73] 3.029780 2.741239 3.565646 2.759233 2.369612 2.723478 2.273167 2.574512
[81] 2.158251 2.451103 2.743954 2.860627 2.351272 2.703618 2.402405 2.630233
[89] 2.719036 2.577490 3.033132 3.016396 3.044601 3.074350 2.862067 2.695196
[97] 3.009902 3.047883 2.865728
::postResample(pred, datos_prueba$medv_l) caret
RMSE Rsquared MAE
0.1957077 0.8023259 0.1258092
el \(R^2=0.80\) es mejorable
En conclusión el \(R^2=SVMRadial\) fue el mejor modelo
<-R2(predr2,medv1, form = "traditional"); R2 R2
[1] 0.881861