Data Mining: Data(Boston)

Author

Oscar Chullo Puclla

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

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("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)
Data summary
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

crim_l<-log(Boston$crim)
zn_s<-sqrt(Boston$zn)
indus_l<-log(Boston$indus)
# chas
nox_s<-sqrt(Boston$nox)
# rm
# age
dist_l<-log(Boston$dis)
# rad
tax_s<-sqrt(Boston$tax)
ptratio_s <-sqrt(Boston$ptratio)
# black
lstat_l<-log(Boston$lstat)
medv_l<-log(Boston$medv)
Boston_n<-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)
skim(Boston_n)
Data summary
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 <- Boston_n
set.seed(123)
indexes = createDataPartition(boston$medv_l, p = .8, list = F)
datos_entrenamiento = boston[indexes, ]
dim(datos_entrenamiento)
[1] 407  14
datos_prueba  = boston[-indexes, ]
dim(datos_prueba)
[1] 99 14

REGRESION MULTIPLE clasica

modelo_multiple <- lm(formula = medv_l ~ ., data = datos_entrenamiento)
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)

predictrm <- predict(modelo_multiple , datos_prueba)
medv_l1<-exp(datos_prueba$medv_l) # Reversion
predictrm1<-exp(predictrm) # Reversion
comparac=data.frame(medv_l1,predictrm1)
cor(predictrm,medv_l1)
[1] 0.8788942
r21 = R2(predictrm1,medv_l1, form = "traditional"); 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)
mod1 <- rpart(medv_l ~ ., data = datos_entrenamiento,
              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

predictr <- predict(mod1 , datos_prueba)
predictr1<-exp(predictr) #Reversion
medv1<-exp(datos_prueba$medv) # Reversion
plot(predictr1,medv1)

cor(predictr1,medv1)
[1] 0.7921983
r2 = R2(predictr1,medv1, form = "traditional"); r2
[1] 0.6117443

Se puede visualizar que el \(R^2=0.6117\) fue menor que el anterior metodo

impor=varImp(mod1)
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
arbol_regresion <- tree::tree(medv_l ~ .,
                              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

predicciones <- predict(arbol_regresion, newdata = datos_prueba)
cor(predicciones,datos_prueba$medv_l)
[1] 0.8390848
r22 = R2(predictr,datos_prueba$medv_l, form = "traditional")
r22
[1] 0.6204341
test_rmse    <- sqrt(mean((predicciones - datos_prueba$medv)^2))
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)

x = 1:length(datos_prueba$medv_l)
plot(x, datos_prueba$medv_l, pch=18, col="red")
lines(x, predicciones, lwd="1", col="blue")

Métricas

library(Metrics)
prueba1<-exp(datos_prueba$medv_l)
prediccion1<-exp(predicciones)
mse = MSE(prueba1, prediccion1)
mae = MAE(prueba1, prediccion1)
rmse = RMSE(prueba1, prediccion1)
r2 = R2(prueba1, prediccion1, form = "traditional")
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

modelo_svmlineal <- train(medv_l ~ ., method = "svmLinear", data = datos_entrenamiento)
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
predlineal=predict(modelo_svmlineal, datos_prueba)
pred2<-exp(predlineal)  #reverso
plot(pred2,medv1)

r2 = R2(pred2,medv1, form = "traditional")
abs(r2)
[1] 0.8137841

Se tiene una mejora considerable en el parametro \(R^2\).

impor0=varImp(modelo_svmlineal)
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

modelo_svmradial <- train(medv_l ~ ., method = "svmRadial", data = datos_entrenamiento)
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.
predlradial=predict(modelo_svmradial, datos_prueba)
predr2<-exp(predlradial) #reversion
plot(predr2,medv1)

r2 = R2(predr2,medv1, form = "traditional")
r2
[1] 0.881861

Ya se tiene una mejora considerable con respecto al lineal en cuanto al \(R^2\)

impor1=varImp(modelo_svmradial)
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

model_reg = svm(medv_l~., data=datos_entrenamiento, cost=1,gamma=0.07692308,epsilon=0.1 )
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
pred = predict(model_reg, datos_prueba)
predsvm<-exp(pred) # reversion
test_rmsesvm    <- sqrt(mean((predsvm - medv1)^2))
test_rmsesvm
[1] 3.336019
plot(medv1,predsvm)

r2=R2(medv1,predsvm,form = "traditional");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)

x = 1:length(medv1)
plot(x, medv1, pch=18, col="red")
lines(x, predsvm, lwd="1", col="blue")

Metricas

mse = MSE(medv1, predsvm)
mae = MAE(medv1, predsvm)
rmse = RMSE(medv1, predsvm)
r2 = R2(medv1, predsvm, form = "traditional")

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

modered <- lm(medv_l ~ ., data=datos_entrenamiento)
predicred <- predict(modered,datos_prueba)
predicredn<-exp(predicred) # reversión
test_rmsesred    <- sqrt(mean((predicredn - medv1)^2))
plot(medv1,predicredn)

r1=cor(medv1,predicredn)
R2=r1*r1;R2
[1] 0.7947487
x = 1:length(medv1)
plot(x, medv1, pch=18, col="red")
lines(x, predicredn, lwd="1", col="blue")

Métricas

mse = MSE(medv1, predicredn)
mae = MAE(medv1, predicredn)
rmse = RMSE(medv1, predicredn)
r2 = R2(medv1, predicredn, form = "traditional")

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

ctrl <- trainControl(method = "cv",  number = 10) 
modelo_rf <- train(medv_l ~ ., 
                   data = datos_entrenamiento, 
                   method = "rf", 
                   trControl = ctrl,
                   ntree=50,
                   tuneLength = 5)
predic.rf<-predict(modelo_rf,datos_prueba)
plot(predic.rf,datos_prueba$medv_l)

r=cor(predic.rf,datos_prueba$medv_l)
R2=r*r; R2
[1] 0.843489

Utilizando la libreria randomForest

modelo.rf <- randomForest(medv_l ~ ., data = datos_entrenamiento, mtry = 3,
                          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
pred_randomForest <- predict(modelo.rf, datos_prueba)
r=cor(pred_randomForest,datos_prueba$medv)
R2=r*r; 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
caret.gbm1 <- train(medv_l ~ ., method = "gbm", data = datos_entrenamiento,
                    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 
pred1=predict(caret.gbm1, datos_prueba)
r=cor(pred1, datos_prueba$medv)
R2=r*r; R2
[1] 0.8431811

Utilizando libreria gbm

library(gbm)
gbm.fit <- gbm(medv_l ~ ., data = datos_entrenamiento)
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
pred <- predict(gbm.fit, datos_prueba)
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
caret::postResample(pred, datos_prueba$medv_l)
     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<-R2(predr2,medv1, form = "traditional"); R2
[1] 0.881861