Teoría

La función caret (Clasification And REgression Training) es un paquete integral con una amplia variedad de algoritmos para el aprendizaje automático.

Obtención y entendimiento de los datos

Librerías

library(ggplot2) # Gráficas con mejor diseño
library(lattice) # Crear gráficos
library(caret) # Algoritmos de aprendizaje automático
library(datasets) # Usar la base de datos "Iris"
library(DataExplorer) # Análisis exploratorio de los datos
library(kernlab)
library(tidyverse)
library(kableExtra)
library(mlbench)
library(dplyr)

Obetener la base de datos

# Base de datos original
data(BreastCancer)
df = BreastCancer
# Base de datos con variables seleccionadas
df_c <- df %>% 
  select(-Id) %>%
  rename(Tipo = Class)
# Base de datos con variables continuas
df_cc <- df_c %>%
  mutate(across(where(is.factor), as.numeric))

EDA

summary(df)
##       Id             Cl.thickness   Cell.size     Cell.shape  Marg.adhesion
##  Length:699         1      :145   1      :384   1      :353   1      :407  
##  Class :character   5      :130   10     : 67   2      : 59   2      : 58  
##  Mode  :character   3      :108   3      : 52   10     : 58   3      : 58  
##                     4      : 80   2      : 45   3      : 56   10     : 55  
##                     10     : 69   4      : 40   4      : 44   4      : 33  
##                     2      : 50   5      : 30   5      : 34   8      : 25  
##                     (Other):117   (Other): 81   (Other): 95   (Other): 63  
##   Epith.c.size  Bare.nuclei   Bl.cromatin  Normal.nucleoli    Mitoses   
##  2      :386   1      :402   2      :166   1      :443     1      :579  
##  3      : 72   10     :132   3      :165   10     : 61     2      : 35  
##  4      : 48   2      : 30   1      :152   3      : 44     3      : 33  
##  1      : 47   5      : 30   7      : 73   2      : 36     10     : 14  
##  6      : 41   3      : 28   4      : 40   8      : 24     4      : 12  
##  5      : 39   (Other): 61   5      : 34   6      : 22     7      :  9  
##  (Other): 66   NA's   : 16   (Other): 69   (Other): 69     (Other): 17  
##        Class    
##  benign   :458  
##  malignant:241  
##                 
##                 
##                 
##                 
## 
str(df) # Confirmar que las variables vengan en el formato necesario.
## 'data.frame':    699 obs. of  11 variables:
##  $ Id             : chr  "1000025" "1002945" "1015425" "1016277" ...
##  $ Cl.thickness   : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 5 5 3 6 4 8 1 2 2 4 ...
##  $ Cell.size      : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 1 4 1 8 1 10 1 1 1 2 ...
##  $ Cell.shape     : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 1 4 1 8 1 10 1 2 1 1 ...
##  $ Marg.adhesion  : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 1 5 1 1 3 8 1 1 1 1 ...
##  $ Epith.c.size   : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 2 7 2 3 2 7 2 2 2 2 ...
##  $ Bare.nuclei    : Factor w/ 10 levels "1","2","3","4",..: 1 10 2 4 1 10 10 1 1 1 ...
##  $ Bl.cromatin    : Factor w/ 10 levels "1","2","3","4",..: 3 3 3 3 3 9 3 3 1 2 ...
##  $ Normal.nucleoli: Factor w/ 10 levels "1","2","3","4",..: 1 2 1 7 1 7 1 1 1 1 ...
##  $ Mitoses        : Factor w/ 9 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 5 1 ...
##  $ Class          : Factor w/ 2 levels "benign","malignant": 1 1 1 1 1 2 1 1 1 1 ...
#create_report(df)
plot_missing(df)

# Tratar registros con NAs
df_c <- na.omit(df_c)
plot_boxplot(df_cc, by = "Tipo")
## Warning: Removed 16 rows containing non-finite values (`stat_boxplot()`).

plot_bar(df)
## 1 columns ignored with more than 50 categories.
## Id: 645 categories

plot_correlation(df_cc)
## Warning: Removed 18 rows containing missing values (`geom_text()`).

Uso de CARET

Partición de datos

set.seed(123)
DataPart= createDataPartition(df_c$Tipo, p=0.8, list = FALSE)
train_set= df_c[DataPart,]
test_set = df_c[-DataPart,]

Métodos para Modelar

Los métodos más utilizados para modelar aprendixaje automático son:

  • SVM: Support Vector Machine o Máquina de Vectores de soporte. Hay varios subtipos:
    • Lineal (svmLinear)
    • Radial (svmRadial)
    • Polinómico (svmPoly)
  • Árbol de decisión: rpart
  • Redes Neuronales: nnet
  • Random Forests: rf

SVM Lineal

Entrenamiento de Modelo

modelo_svml = train(Tipo ~., data = train_set,
                    method = "svmLinear",
                    preProcess = c("scale", "center"),
                    trControl = trainControl(method = "cv", number =10),
                    tuneGrid = data.frame(C=1)
                    )
## Warning in preProcess.default(thresh = 0.95, k = 5, freqCut = 19, uniqueCut =
## 10, : These variables have zero variances: Bare.nuclei6
## Warning in .local(x, ...): Variable(s) `' constant. Cannot scale data.

Resultados de Modelo

resultados_train_svml = predict(modelo_svml, train_set)
resultados_test_svml = predict(modelo_svml, test_set)

Matriz de Confusión

##### ENTRENAMIENTO ######
MCRE_svml = confusionMatrix(resultados_train_svml, train_set$Tipo) # MCRE - Matriz de Confusión de Resultados de Entrenamiento.
#MCRE_svml

##### PRUEBA #####
MCRP_svml = confusionMatrix(resultados_test_svml, test_set$Tipo) # MCRE - Matriz de Confusión de Resultados de Prueba.
MCRP_svml
## Confusion Matrix and Statistics
## 
##            Reference
## Prediction  benign malignant
##   benign        83         7
##   malignant      5        40
##                                           
##                Accuracy : 0.9111          
##                  95% CI : (0.8499, 0.9532)
##     No Information Rate : 0.6519          
##     P-Value [Acc > NIR] : 2.463e-12       
##                                           
##                   Kappa : 0.8022          
##                                           
##  Mcnemar's Test P-Value : 0.7728          
##                                           
##             Sensitivity : 0.9432          
##             Specificity : 0.8511          
##          Pos Pred Value : 0.9222          
##          Neg Pred Value : 0.8889          
##              Prevalence : 0.6519          
##          Detection Rate : 0.6148          
##    Detection Prevalence : 0.6667          
##       Balanced Accuracy : 0.8971          
##                                           
##        'Positive' Class : benign          
## 

SVM Radial

Entrenamiento de Modelo

modelo_svmr = train(Tipo ~., data = train_set,
                    method = "svmRadial",
                    preProcess = c("scale", "center"),
                    trControl = trainControl(method = "cv", number =10),
                    tuneGrid = data.frame(sigma =1, C=1)
                    )
## Warning in preProcess.default(thresh = 0.95, k = 5, freqCut = 19, uniqueCut =
## 10, : These variables have zero variances: Mitoses6
## Warning in .local(x, ...): Variable(s) `' constant. Cannot scale data.
## Warning in preProcess.default(thresh = 0.95, k = 5, freqCut = 19, uniqueCut =
## 10, : These variables have zero variances: Bare.nuclei6
## Warning in .local(x, ...): Variable(s) `' constant. Cannot scale data.

Resultados de Modelo

resultados_train_svmr = predict(modelo_svmr, train_set)
resultados_test_svmr = predict(modelo_svmr, test_set)

Matriz de Confusión

##### ENTRENAMIENTO ######
MCRE_svmr = confusionMatrix(resultados_train_svmr, train_set$Tipo) # MCRE - Matriz de Confusión de Resultados de Entrenamiento.
#MCRE_svmr

##### PRUEBA #####
MCRP_svmr = confusionMatrix(resultados_test_svmr, test_set$Tipo) # MCRE - Matriz de Confusión de Resultados de Prueba.
MCRP_svmr
## Confusion Matrix and Statistics
## 
##            Reference
## Prediction  benign malignant
##   benign        47         0
##   malignant     41        47
##                                           
##                Accuracy : 0.6963          
##                  95% CI : (0.6113, 0.7724)
##     No Information Rate : 0.6519          
##     P-Value [Acc > NIR] : 0.1602          
##                                           
##                   Kappa : 0.4439          
##                                           
##  Mcnemar's Test P-Value : 4.185e-10       
##                                           
##             Sensitivity : 0.5341          
##             Specificity : 1.0000          
##          Pos Pred Value : 1.0000          
##          Neg Pred Value : 0.5341          
##              Prevalence : 0.6519          
##          Detection Rate : 0.3481          
##    Detection Prevalence : 0.3481          
##       Balanced Accuracy : 0.7670          
##                                           
##        'Positive' Class : benign          
## 

SVM Polinómico

Entrenamiento de Modelo

modelo_svmp = train(Tipo ~., data = train_set,
                    method = "svmPoly",
                    preProcess = c("scale", "center"),
                    trControl = trainControl(method = "cv", number =10),
                    tuneGrid = data.frame(degree = 1, scale = 1, C= 1)
                    )
## Warning in preProcess.default(thresh = 0.95, k = 5, freqCut = 19, uniqueCut =
## 10, : These variables have zero variances: Bare.nuclei6
## Warning in .local(x, ...): Variable(s) `' constant. Cannot scale data.

Resultados de Modelo

resultados_train_svmp = predict(modelo_svmp, train_set)
resultados_test_svmp = predict(modelo_svmp, test_set)

Matriz de Confusión

##### ENTRENAMIENTO ######
MCRE_svmp = confusionMatrix(resultados_train_svmp, train_set$Tipo) # MCRE - Matriz de Confusión de Resultados de Entrenamiento.
#MCRE_svmp

##### PRUEBA #####
MCRP_svmp = confusionMatrix(resultados_test_svmp, test_set$Tipo) # MCRE - Matriz de Confusión de Resultados de Prueba.
MCRP_svmp
## Confusion Matrix and Statistics
## 
##            Reference
## Prediction  benign malignant
##   benign        83         7
##   malignant      5        40
##                                           
##                Accuracy : 0.9111          
##                  95% CI : (0.8499, 0.9532)
##     No Information Rate : 0.6519          
##     P-Value [Acc > NIR] : 2.463e-12       
##                                           
##                   Kappa : 0.8022          
##                                           
##  Mcnemar's Test P-Value : 0.7728          
##                                           
##             Sensitivity : 0.9432          
##             Specificity : 0.8511          
##          Pos Pred Value : 0.9222          
##          Neg Pred Value : 0.8889          
##              Prevalence : 0.6519          
##          Detection Rate : 0.6148          
##    Detection Prevalence : 0.6667          
##       Balanced Accuracy : 0.8971          
##                                           
##        'Positive' Class : benign          
## 

Árbol de decisión

Entrenamiento de Modelo

modelo_ad = train(Tipo ~., data = train_set,
                    method = "rpart",
                    preProcess = c("scale", "center"),
                    trControl = trainControl(method = "cv", number =10),
                    tuneLength = 10
                    )
## Warning in preProcess.default(thresh = 0.95, k = 5, freqCut = 19, uniqueCut =
## 10, : These variables have zero variances: Bare.nuclei6

Resultados de Modelo

resultados_train_ad = predict(modelo_ad, train_set)
resultados_test_ad = predict(modelo_ad, test_set)

Matriz de Confusión

##### ENTRENAMIENTO ######
MCRE_ad = confusionMatrix(resultados_train_ad, train_set$Tipo) # MCRE - Matriz de Confusión de Resultados de Entrenamiento.
#MCRE_ad

##### PRUEBA #####
MCRP_ad = confusionMatrix(resultados_test_ad, test_set$Tipo) # MCRE - Matriz de Confusión de Resultados de Prueba.
MCRP_ad
## Confusion Matrix and Statistics
## 
##            Reference
## Prediction  benign malignant
##   benign        87         3
##   malignant      1        44
##                                           
##                Accuracy : 0.9704          
##                  95% CI : (0.9259, 0.9919)
##     No Information Rate : 0.6519          
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.9341          
##                                           
##  Mcnemar's Test P-Value : 0.6171          
##                                           
##             Sensitivity : 0.9886          
##             Specificity : 0.9362          
##          Pos Pred Value : 0.9667          
##          Neg Pred Value : 0.9778          
##              Prevalence : 0.6519          
##          Detection Rate : 0.6444          
##    Detection Prevalence : 0.6667          
##       Balanced Accuracy : 0.9624          
##                                           
##        'Positive' Class : benign          
## 

Redes Neuronales

Entrenamiento de Modelo

modelo_rn = train(Tipo ~., data = train_set,
                    method = "nnet",
                    preProcess = c("scale", "center"),
                    trControl = trainControl(method = "cv", number =10)
                    )
## # weights:  83
## initial  value 374.817257 
## iter  10 value 40.277258
## iter  20 value 20.528253
## iter  30 value 19.231263
## iter  40 value 19.122754
## iter  50 value 19.114539
## iter  60 value 19.114088
## final  value 19.113898 
## converged
## # weights:  247
## initial  value 324.313266 
## iter  10 value 47.023454
## iter  20 value 34.501072
## iter  30 value 30.146435
## iter  40 value 29.471498
## iter  50 value 29.362932
## iter  60 value 28.782448
## iter  70 value 28.175092
## iter  80 value 27.788069
## iter  90 value 26.571502
## iter 100 value 26.559663
## final  value 26.559663 
## stopped after 100 iterations
## # weights:  411
## initial  value 316.180536 
## iter  10 value 13.913762
## iter  20 value 4.328973
## iter  30 value 2.552363
## iter  40 value 2.272730
## iter  50 value 1.922754
## iter  60 value 1.917273
## iter  70 value 1.911679
## iter  80 value 1.910532
## iter  90 value 1.909586
## iter 100 value 1.903894
## final  value 1.903894 
## stopped after 100 iterations
## # weights:  83
## initial  value 316.912067 
## iter  10 value 86.012268
## iter  20 value 59.597247
## iter  30 value 44.365834
## iter  40 value 33.669552
## iter  50 value 30.440372
## iter  60 value 26.150068
## iter  70 value 19.420997
## iter  80 value 18.143437
## iter  90 value 18.044521
## iter 100 value 18.041878
## final  value 18.041878 
## stopped after 100 iterations
## # weights:  247
## initial  value 382.187522 
## iter  10 value 103.663294
## iter  20 value 45.264551
## iter  30 value 27.392809
## iter  40 value 15.942882
## iter  50 value 10.495825
## iter  60 value 10.171603
## iter  70 value 10.078924
## iter  80 value 10.067088
## iter  90 value 10.066756
## final  value 10.066742 
## converged
## # weights:  411
## initial  value 388.651583 
## iter  10 value 81.178316
## iter  20 value 38.660423
## iter  30 value 22.159086
## iter  40 value 16.224887
## iter  50 value 13.883473
## iter  60 value 12.893245
## iter  70 value 10.005257
## iter  80 value 9.661595
## iter  90 value 9.456065
## iter 100 value 9.241772
## final  value 9.241772 
## stopped after 100 iterations
## # weights:  83
## initial  value 297.409901 
## iter  10 value 42.618141
## iter  20 value 26.253328
## iter  30 value 25.877399
## iter  40 value 25.874604
## iter  50 value 25.873501
## iter  60 value 25.868274
## iter  70 value 25.579752
## iter  80 value 22.211249
## iter  90 value 21.970007
## iter 100 value 21.962423
## final  value 21.962423 
## stopped after 100 iterations
## # weights:  247
## initial  value 328.290262 
## iter  10 value 42.653126
## iter  20 value 10.093193
## iter  30 value 7.568132
## iter  40 value 6.380301
## iter  50 value 6.342162
## iter  60 value 6.325476
## iter  70 value 6.309236
## iter  80 value 6.297273
## iter  90 value 4.956517
## iter 100 value 3.188558
## final  value 3.188558 
## stopped after 100 iterations
## # weights:  411
## initial  value 321.689898 
## iter  10 value 48.178152
## iter  20 value 17.682923
## iter  30 value 4.351791
## iter  40 value 3.602677
## iter  50 value 3.472459
## iter  60 value 3.425713
## iter  70 value 3.397425
## iter  80 value 3.372660
## iter  90 value 3.336140
## iter 100 value 3.301287
## final  value 3.301287 
## stopped after 100 iterations
## # weights:  83
## initial  value 419.727174 
## iter  10 value 74.663969
## iter  20 value 48.847018
## iter  30 value 45.476749
## iter  40 value 45.475792
## iter  50 value 45.475752
## final  value 45.475721 
## converged
## # weights:  247
## initial  value 304.136827 
## iter  10 value 25.425733
## iter  20 value 16.688368
## iter  30 value 15.524231
## iter  40 value 14.921821
## iter  50 value 14.900295
## iter  60 value 14.893064
## iter  70 value 14.890351
## iter  80 value 11.745816
## iter  90 value 11.491433
## iter 100 value 9.722493
## final  value 9.722493 
## stopped after 100 iterations
## # weights:  411
## initial  value 291.136519 
## iter  10 value 22.546166
## iter  20 value 5.471588
## iter  30 value 1.532441
## iter  40 value 1.399044
## iter  50 value 1.387959
## iter  60 value 1.386394
## iter  70 value 1.386336
## iter  80 value 1.386298
## final  value 1.386295 
## converged
## # weights:  83
## initial  value 413.785797 
## iter  10 value 102.460326
## iter  20 value 59.701862
## iter  30 value 53.757163
## iter  40 value 44.963201
## iter  50 value 27.600251
## iter  60 value 25.290700
## iter  70 value 21.493621
## iter  80 value 21.444556
## iter  90 value 21.444014
## final  value 21.444012 
## converged
## # weights:  247
## initial  value 370.238660 
## iter  10 value 62.186622
## iter  20 value 29.899986
## iter  30 value 21.399408
## iter  40 value 19.422549
## iter  50 value 17.939168
## iter  60 value 15.887343
## iter  70 value 14.034825
## iter  80 value 13.020524
## iter  90 value 12.428596
## iter 100 value 12.305585
## final  value 12.305585 
## stopped after 100 iterations
## # weights:  411
## initial  value 366.834292 
## iter  10 value 36.692684
## iter  20 value 18.481860
## iter  30 value 12.762517
## iter  40 value 11.980784
## iter  50 value 10.544337
## iter  60 value 10.219762
## iter  70 value 9.887662
## iter  80 value 9.855872
## iter  90 value 9.854914
## final  value 9.854908 
## converged
## # weights:  83
## initial  value 320.843027 
## iter  10 value 61.752303
## iter  20 value 51.177507
## iter  30 value 42.996378
## iter  40 value 42.590018
## iter  50 value 39.535972
## iter  60 value 39.532047
## iter  70 value 36.358202
## iter  80 value 36.351067
## iter  90 value 36.341433
## iter 100 value 33.030336
## final  value 33.030336 
## stopped after 100 iterations
## # weights:  247
## initial  value 332.658071 
## iter  10 value 45.061867
## iter  20 value 30.592706
## iter  30 value 24.292679
## iter  40 value 22.603874
## iter  50 value 17.550445
## iter  60 value 16.303410
## iter  70 value 16.251562
## iter  80 value 15.532258
## iter  90 value 15.277362
## iter 100 value 15.195612
## final  value 15.195612 
## stopped after 100 iterations
## # weights:  411
## initial  value 337.430632 
## iter  10 value 26.479043
## iter  20 value 19.485630
## iter  30 value 13.285569
## iter  40 value 8.647547
## iter  50 value 6.114861
## iter  60 value 5.768355
## iter  70 value 5.401886
## iter  80 value 5.390490
## iter  90 value 4.923136
## iter 100 value 4.299011
## final  value 4.299011 
## stopped after 100 iterations
## # weights:  83
## initial  value 289.617667 
## iter  10 value 47.158954
## iter  20 value 33.294405
## iter  30 value 29.526587
## iter  40 value 29.518883
## iter  50 value 29.517363
## iter  60 value 25.851596
## iter  70 value 25.849137
## iter  80 value 25.848704
## iter  90 value 25.848616
## iter 100 value 25.848480
## final  value 25.848480 
## stopped after 100 iterations
## # weights:  247
## initial  value 315.908486 
## iter  10 value 35.879313
## iter  20 value 25.360795
## iter  30 value 21.617254
## iter  40 value 20.441144
## iter  50 value 20.400365
## iter  60 value 18.869459
## iter  70 value 18.109986
## iter  80 value 17.487945
## iter  90 value 17.410234
## iter 100 value 15.677707
## final  value 15.677707 
## stopped after 100 iterations
## # weights:  411
## initial  value 405.971636 
## iter  10 value 33.589273
## iter  20 value 17.184932
## iter  30 value 7.680320
## iter  40 value 7.507279
## iter  50 value 7.496789
## iter  60 value 7.494760
## iter  70 value 6.629194
## iter  80 value 6.153796
## iter  90 value 4.815977
## iter 100 value 4.771484
## final  value 4.771484 
## stopped after 100 iterations
## # weights:  83
## initial  value 380.174551 
## iter  10 value 77.127696
## iter  20 value 37.400692
## iter  30 value 32.492526
## iter  40 value 30.577549
## iter  50 value 23.057277
## iter  60 value 22.466806
## iter  70 value 22.453109
## final  value 22.452902 
## converged
## # weights:  247
## initial  value 431.310146 
## iter  10 value 68.165421
## iter  20 value 40.578145
## iter  30 value 27.327389
## iter  40 value 20.378152
## iter  50 value 13.623423
## iter  60 value 12.383518
## iter  70 value 12.208401
## iter  80 value 12.157093
## iter  90 value 12.152873
## iter 100 value 12.152542
## final  value 12.152542 
## stopped after 100 iterations
## # weights:  411
## initial  value 401.218439 
## iter  10 value 52.937074
## iter  20 value 31.105349
## iter  30 value 16.667632
## iter  40 value 11.399958
## iter  50 value 10.135009
## iter  60 value 10.020440
## iter  70 value 9.984186
## iter  80 value 9.978552
## iter  90 value 9.977362
## iter 100 value 9.976882
## final  value 9.976882 
## stopped after 100 iterations
## # weights:  83
## initial  value 317.890696 
## iter  10 value 94.045981
## iter  20 value 85.559470
## iter  30 value 82.801458
## iter  40 value 65.536534
## iter  50 value 60.026675
## iter  60 value 59.105970
## iter  70 value 51.213019
## iter  80 value 48.440112
## iter  90 value 45.608670
## iter 100 value 45.556877
## final  value 45.556877 
## stopped after 100 iterations
## # weights:  247
## initial  value 438.130620 
## iter  10 value 30.052670
## iter  20 value 15.946458
## iter  30 value 9.703903
## iter  40 value 4.664953
## iter  50 value 3.934314
## iter  60 value 3.679245
## iter  70 value 3.043652
## iter  80 value 3.010664
## iter  90 value 2.849563
## iter 100 value 2.844054
## final  value 2.844054 
## stopped after 100 iterations
## # weights:  411
## initial  value 311.704954 
## iter  10 value 24.936060
## iter  20 value 18.865109
## iter  30 value 15.232989
## iter  40 value 12.819378
## iter  50 value 11.601478
## iter  60 value 10.524982
## iter  70 value 10.502639
## iter  80 value 10.408246
## iter  90 value 10.394388
## iter 100 value 10.155029
## final  value 10.155029 
## stopped after 100 iterations
## # weights:  83
## initial  value 419.979920 
## iter  10 value 133.821113
## iter  20 value 96.552429
## iter  30 value 67.562525
## iter  40 value 41.438739
## iter  50 value 36.581890
## iter  60 value 27.287849
## iter  70 value 27.242921
## iter  80 value 23.049185
## iter  90 value 23.047989
## iter 100 value 23.047615
## final  value 23.047615 
## stopped after 100 iterations
## # weights:  247
## initial  value 361.645456 
## iter  10 value 39.759559
## iter  20 value 23.011713
## iter  30 value 20.490658
## iter  40 value 14.950513
## iter  50 value 13.661389
## iter  60 value 11.023554
## iter  70 value 10.546071
## iter  80 value 10.383355
## iter  90 value 9.285092
## iter 100 value 9.277702
## final  value 9.277702 
## stopped after 100 iterations
## # weights:  411
## initial  value 339.782310 
## iter  10 value 20.786801
## iter  20 value 9.646829
## iter  30 value 6.891383
## iter  40 value 4.804879
## iter  50 value 4.784001
## iter  60 value 4.780070
## iter  70 value 3.035654
## iter  80 value 2.871297
## iter  90 value 2.870948
## iter 100 value 2.870897
## final  value 2.870897 
## stopped after 100 iterations
## # weights:  83
## initial  value 345.726126 
## iter  10 value 105.762598
## iter  20 value 45.849455
## iter  30 value 36.332893
## iter  40 value 31.081389
## iter  50 value 24.273654
## iter  60 value 22.439107
## iter  70 value 21.980686
## iter  80 value 21.929911
## iter  90 value 21.927506
## final  value 21.927477 
## converged
## # weights:  247
## initial  value 355.990955 
## iter  10 value 89.762180
## iter  20 value 57.820168
## iter  30 value 40.116503
## iter  40 value 26.733242
## iter  50 value 17.967047
## iter  60 value 12.465223
## iter  70 value 11.272968
## iter  80 value 11.057942
## iter  90 value 10.879376
## iter 100 value 10.633464
## final  value 10.633464 
## stopped after 100 iterations
## # weights:  411
## initial  value 495.278566 
## iter  10 value 71.563946
## iter  20 value 28.112043
## iter  30 value 14.038774
## iter  40 value 10.130982
## iter  50 value 9.554676
## iter  60 value 9.486053
## iter  70 value 9.457476
## iter  80 value 9.420064
## iter  90 value 9.419817
## final  value 9.419817 
## converged
## # weights:  83
## initial  value 342.487766 
## iter  10 value 257.033401
## final  value 256.758671 
## converged
## # weights:  247
## initial  value 492.098679 
## iter  10 value 40.567340
## iter  20 value 30.530807
## iter  30 value 27.810847
## iter  40 value 27.762147
## iter  50 value 26.570223
## iter  60 value 26.453946
## iter  70 value 26.273669
## iter  80 value 24.439758
## iter  90 value 17.340606
## iter 100 value 13.975135
## final  value 13.975135 
## stopped after 100 iterations
## # weights:  411
## initial  value 367.631331 
## iter  10 value 25.657541
## iter  20 value 14.225380
## iter  30 value 10.225640
## iter  40 value 7.491425
## iter  50 value 4.830731
## iter  60 value 4.512983
## iter  70 value 4.145696
## iter  80 value 4.109880
## iter  90 value 4.064227
## iter 100 value 4.028939
## final  value 4.028939 
## stopped after 100 iterations
## # weights:  83
## initial  value 354.419667 
## iter  10 value 99.689731
## iter  20 value 98.378651
## final  value 98.378414 
## converged
## # weights:  247
## initial  value 325.922554 
## iter  10 value 51.473563
## iter  20 value 48.223332
## iter  30 value 42.504973
## iter  40 value 36.021872
## iter  50 value 35.978723
## iter  60 value 35.874860
## iter  70 value 35.189192
## iter  80 value 34.965761
## iter  90 value 34.457242
## iter 100 value 32.765603
## final  value 32.765603 
## stopped after 100 iterations
## # weights:  411
## initial  value 414.781757 
## iter  10 value 76.752961
## iter  20 value 21.828072
## iter  30 value 16.649623
## iter  40 value 13.610720
## iter  50 value 11.053644
## iter  60 value 10.884784
## iter  70 value 10.866620
## iter  80 value 10.865057
## iter  90 value 10.863168
## iter 100 value 10.862305
## final  value 10.862305 
## stopped after 100 iterations
## # weights:  83
## initial  value 319.226075 
## iter  10 value 238.866241
## iter  20 value 180.105906
## iter  30 value 119.341965
## iter  40 value 72.869757
## iter  50 value 61.422788
## iter  60 value 44.774322
## iter  70 value 35.371849
## iter  80 value 31.539109
## iter  90 value 25.265873
## iter 100 value 21.660320
## final  value 21.660320 
## stopped after 100 iterations
## # weights:  247
## initial  value 513.625249 
## iter  10 value 100.632572
## iter  20 value 55.916632
## iter  30 value 27.289044
## iter  40 value 19.706352
## iter  50 value 13.447147
## iter  60 value 12.344060
## iter  70 value 11.514256
## iter  80 value 11.154345
## iter  90 value 10.882443
## iter 100 value 10.558402
## final  value 10.558402 
## stopped after 100 iterations
## # weights:  411
## initial  value 351.009442 
## iter  10 value 47.911452
## iter  20 value 23.444193
## iter  30 value 14.685997
## iter  40 value 12.963928
## iter  50 value 11.724508
## iter  60 value 10.937526
## iter  70 value 10.577181
## iter  80 value 10.260274
## iter  90 value 10.179908
## iter 100 value 10.169759
## final  value 10.169759 
## stopped after 100 iterations
## # weights:  83
## initial  value 421.364077 
## iter  10 value 94.620012
## iter  20 value 54.857543
## iter  30 value 33.171342
## iter  40 value 33.118524
## iter  50 value 26.422998
## iter  60 value 26.398340
## iter  70 value 26.373722
## iter  80 value 26.321892
## iter  90 value 22.873428
## iter 100 value 22.867177
## final  value 22.867177 
## stopped after 100 iterations
## # weights:  247
## initial  value 286.203235 
## iter  10 value 26.882168
## iter  20 value 15.906937
## iter  30 value 15.272851
## iter  40 value 15.260041
## iter  50 value 15.252532
## iter  60 value 15.242600
## iter  70 value 15.079312
## iter  80 value 12.130218
## iter  90 value 6.062381
## iter 100 value 3.642788
## final  value 3.642788 
## stopped after 100 iterations
## # weights:  411
## initial  value 311.773452 
## iter  10 value 23.101437
## iter  20 value 6.975892
## iter  30 value 4.682807
## iter  40 value 4.191778
## iter  50 value 3.917257
## iter  60 value 3.524538
## iter  70 value 3.415017
## iter  80 value 3.332593
## iter  90 value 3.277220
## iter 100 value 3.269351
## final  value 3.269351 
## stopped after 100 iterations
## # weights:  83
## initial  value 322.435701 
## iter  10 value 26.729383
## iter  20 value 26.307331
## iter  30 value 26.285491
## iter  40 value 26.274633
## iter  50 value 26.273534
## iter  60 value 24.379900
## iter  70 value 22.802543
## iter  80 value 22.791105
## iter  90 value 19.117816
## iter 100 value 19.114551
## final  value 19.114551 
## stopped after 100 iterations
## # weights:  247
## initial  value 455.309017 
## iter  10 value 28.751759
## iter  20 value 21.876872
## iter  30 value 20.643284
## iter  40 value 19.872594
## iter  50 value 19.867353
## iter  60 value 15.154813
## iter  70 value 15.034174
## iter  80 value 15.023199
## iter  90 value 15.014765
## iter 100 value 15.009063
## final  value 15.009063 
## stopped after 100 iterations
## # weights:  411
## initial  value 331.969586 
## iter  10 value 38.836084
## iter  20 value 20.650971
## iter  30 value 18.913823
## iter  40 value 18.287221
## iter  50 value 9.880159
## iter  60 value 9.001008
## iter  70 value 8.997562
## iter  80 value 8.382098
## iter  90 value 8.378632
## iter 100 value 8.053435
## final  value 8.053435 
## stopped after 100 iterations
## # weights:  83
## initial  value 388.344855 
## iter  10 value 113.740894
## iter  20 value 61.705616
## iter  30 value 45.449084
## iter  40 value 33.692741
## iter  50 value 25.018646
## iter  60 value 24.423798
## iter  70 value 20.978016
## iter  80 value 20.878420
## iter  90 value 20.876579
## final  value 20.876571 
## converged
## # weights:  247
## initial  value 394.091643 
## iter  10 value 80.590034
## iter  20 value 48.460155
## iter  30 value 27.518941
## iter  40 value 16.462677
## iter  50 value 11.273450
## iter  60 value 10.400799
## iter  70 value 10.305115
## iter  80 value 10.303060
## final  value 10.303039 
## converged
## # weights:  411
## initial  value 351.749855 
## iter  10 value 55.697025
## iter  20 value 22.350030
## iter  30 value 12.896713
## iter  40 value 10.176410
## iter  50 value 9.126635
## iter  60 value 8.718208
## iter  70 value 8.545333
## iter  80 value 8.502993
## iter  90 value 8.502663
## final  value 8.502662 
## converged
## # weights:  83
## initial  value 336.414617 
## iter  10 value 33.263736
## iter  20 value 22.848567
## iter  30 value 22.839049
## iter  40 value 22.838354
## iter  50 value 22.837767
## iter  60 value 22.837027
## iter  70 value 22.836404
## iter  80 value 22.835758
## iter  90 value 22.835447
## iter 100 value 22.835019
## final  value 22.835019 
## stopped after 100 iterations
## # weights:  247
## initial  value 377.485777 
## iter  10 value 34.310207
## iter  20 value 30.598283
## iter  30 value 30.545189
## iter  40 value 29.146090
## iter  50 value 29.123387
## iter  60 value 29.044292
## iter  70 value 29.016539
## iter  80 value 28.868729
## iter  90 value 28.666237
## iter 100 value 28.221326
## final  value 28.221326 
## stopped after 100 iterations
## # weights:  411
## initial  value 411.709452 
## iter  10 value 26.045387
## iter  20 value 14.185456
## iter  30 value 12.073520
## iter  40 value 8.015332
## iter  50 value 7.493422
## iter  60 value 7.160836
## iter  70 value 6.960507
## iter  80 value 6.746456
## iter  90 value 6.711179
## iter 100 value 6.375989
## final  value 6.375989 
## stopped after 100 iterations
## # weights:  83
## initial  value 326.762731 
## iter  10 value 52.822433
## iter  20 value 44.532592
## iter  30 value 36.432830
## iter  40 value 29.650489
## iter  50 value 29.591888
## iter  60 value 29.591510
## final  value 29.591457 
## converged
## # weights:  247
## initial  value 305.385896 
## iter  10 value 32.491765
## iter  20 value 28.687909
## iter  30 value 25.123021
## iter  40 value 21.582234
## iter  50 value 21.176793
## iter  60 value 21.169624
## iter  70 value 21.161155
## iter  80 value 20.452602
## iter  90 value 20.193150
## iter 100 value 19.709992
## final  value 19.709992 
## stopped after 100 iterations
## # weights:  411
## initial  value 314.904128 
## iter  10 value 11.495235
## iter  20 value 0.165978
## iter  30 value 0.010403
## iter  40 value 0.001818
## iter  50 value 0.000502
## iter  60 value 0.000159
## final  value 0.000094 
## converged
## # weights:  83
## initial  value 321.992454 
## iter  10 value 47.875165
## iter  20 value 39.178441
## iter  30 value 33.470784
## iter  40 value 26.510312
## iter  50 value 22.283765
## iter  60 value 22.153742
## iter  70 value 22.151906
## final  value 22.151901 
## converged
## # weights:  247
## initial  value 403.045283 
## iter  10 value 88.647068
## iter  20 value 43.340460
## iter  30 value 15.546890
## iter  40 value 11.606355
## iter  50 value 10.847702
## iter  60 value 10.655124
## iter  70 value 10.543753
## iter  80 value 10.452011
## iter  90 value 10.443473
## iter 100 value 10.443054
## final  value 10.443054 
## stopped after 100 iterations
## # weights:  411
## initial  value 357.724047 
## iter  10 value 78.113176
## iter  20 value 34.107580
## iter  30 value 15.284665
## iter  40 value 10.892757
## iter  50 value 9.772908
## iter  60 value 9.414569
## iter  70 value 9.262196
## iter  80 value 9.155156
## iter  90 value 9.143163
## iter 100 value 9.123238
## final  value 9.123238 
## stopped after 100 iterations
## # weights:  83
## initial  value 401.208768 
## iter  10 value 87.761132
## iter  20 value 64.594346
## iter  30 value 43.382116
## iter  40 value 37.689391
## iter  50 value 36.709039
## iter  60 value 36.690950
## iter  70 value 36.682771
## iter  80 value 32.761913
## iter  90 value 23.125869
## iter 100 value 23.092818
## final  value 23.092818 
## stopped after 100 iterations
## # weights:  247
## initial  value 324.932125 
## iter  10 value 44.817970
## iter  20 value 39.182862
## iter  30 value 37.213364
## iter  40 value 33.123889
## iter  50 value 31.631270
## iter  60 value 30.947054
## iter  70 value 27.891585
## iter  80 value 25.927672
## iter  90 value 25.559574
## iter 100 value 25.501290
## final  value 25.501290 
## stopped after 100 iterations
## # weights:  411
## initial  value 324.920496 
## iter  10 value 13.573040
## iter  20 value 9.420639
## iter  30 value 7.798172
## iter  40 value 4.015519
## iter  50 value 3.974850
## iter  60 value 3.960192
## iter  70 value 3.950770
## iter  80 value 3.930834
## iter  90 value 2.071596
## iter 100 value 2.048056
## final  value 2.048056 
## stopped after 100 iterations
## # weights:  83
## initial  value 383.945027 
## iter  10 value 61.262747
## iter  20 value 43.405468
## iter  30 value 36.312286
## iter  40 value 36.302712
## final  value 36.302676 
## converged
## # weights:  247
## initial  value 344.609826 
## iter  10 value 34.818943
## iter  20 value 10.884746
## iter  30 value 10.073751
## iter  40 value 10.005972
## iter  50 value 9.993394
## iter  60 value 9.987045
## iter  70 value 9.985207
## iter  80 value 9.980489
## iter  90 value 9.975949
## iter 100 value 9.971015
## final  value 9.971015 
## stopped after 100 iterations
## # weights:  411
## initial  value 345.481847 
## iter  10 value 40.339016
## iter  20 value 16.790916
## iter  30 value 16.048132
## iter  40 value 13.756416
## iter  50 value 13.722467
## iter  60 value 11.382532
## iter  70 value 11.284508
## iter  80 value 9.470098
## iter  90 value 7.339549
## iter 100 value 5.219080
## final  value 5.219080 
## stopped after 100 iterations
## # weights:  83
## initial  value 350.487178 
## iter  10 value 203.529124
## iter  20 value 123.523195
## iter  30 value 91.685748
## iter  40 value 71.864100
## iter  50 value 46.004966
## iter  60 value 34.712488
## iter  70 value 28.197549
## iter  80 value 25.209384
## iter  90 value 21.099692
## iter 100 value 21.066870
## final  value 21.066870 
## stopped after 100 iterations
## # weights:  247
## initial  value 351.445527 
## iter  10 value 41.584238
## iter  20 value 23.275974
## iter  30 value 16.972688
## iter  40 value 13.692540
## iter  50 value 11.761755
## iter  60 value 11.707057
## iter  70 value 11.705014
## iter  80 value 11.704961
## iter  80 value 11.704961
## iter  80 value 11.704961
## final  value 11.704961 
## converged
## # weights:  411
## initial  value 272.614067 
## iter  10 value 35.432430
## iter  20 value 14.561876
## iter  30 value 10.338165
## iter  40 value 9.311010
## iter  50 value 9.086595
## iter  60 value 9.052270
## iter  70 value 8.965391
## iter  80 value 8.886916
## iter  90 value 8.885054
## final  value 8.885048 
## converged
## # weights:  83
## initial  value 335.319859 
## iter  10 value 61.538804
## iter  20 value 36.382296
## iter  30 value 33.067050
## iter  40 value 33.060541
## iter  50 value 33.044612
## iter  60 value 33.035694
## iter  70 value 33.022424
## iter  80 value 26.683444
## iter  90 value 25.882411
## iter 100 value 25.879950
## final  value 25.879950 
## stopped after 100 iterations
## # weights:  247
## initial  value 370.920549 
## iter  10 value 26.062046
## iter  20 value 12.660154
## iter  30 value 8.415600
## iter  40 value 3.598679
## iter  50 value 1.666157
## iter  60 value 0.323155
## iter  70 value 0.229700
## iter  80 value 0.202659
## iter  90 value 0.190304
## iter 100 value 0.160576
## final  value 0.160576 
## stopped after 100 iterations
## # weights:  411
## initial  value 390.652397 
## iter  10 value 32.659016
## iter  20 value 19.924161
## iter  30 value 17.093988
## iter  40 value 16.078454
## iter  50 value 15.924982
## iter  60 value 13.994614
## iter  70 value 11.688761
## iter  80 value 9.537666
## iter  90 value 9.083537
## iter 100 value 7.959843
## final  value 7.959843 
## stopped after 100 iterations
## # weights:  83
## initial  value 323.866630 
## iter  10 value 242.796418
## iter  20 value 124.386941
## iter  30 value 91.545761
## iter  40 value 88.983323
## iter  50 value 88.836653
## iter  60 value 86.159529
## iter  70 value 86.070769
## iter  80 value 82.734915
## iter  90 value 61.381755
## iter 100 value 56.405163
## final  value 56.405163 
## stopped after 100 iterations
## # weights:  247
## initial  value 418.060266 
## iter  10 value 74.585597
## iter  20 value 24.498702
## iter  30 value 13.751412
## iter  40 value 3.789562
## iter  50 value 3.295338
## iter  60 value 3.157796
## iter  70 value 3.031473
## iter  80 value 2.888480
## iter  90 value 2.879123
## iter 100 value 2.876041
## final  value 2.876041 
## stopped after 100 iterations
## # weights:  411
## initial  value 359.407168 
## iter  10 value 28.817143
## iter  20 value 8.530030
## iter  30 value 6.358955
## iter  40 value 6.224511
## iter  50 value 6.204338
## iter  60 value 5.364447
## iter  70 value 4.785918
## iter  80 value 4.784190
## iter  90 value 4.782462
## iter 100 value 4.780901
## final  value 4.780901 
## stopped after 100 iterations
## # weights:  83
## initial  value 361.801130 
## iter  10 value 100.846163
## iter  20 value 68.653934
## iter  30 value 61.108285
## iter  40 value 54.144290
## iter  50 value 41.111132
## iter  60 value 36.646240
## iter  70 value 28.861451
## iter  80 value 21.956283
## iter  90 value 21.630148
## iter 100 value 21.606212
## final  value 21.606212 
## stopped after 100 iterations
## # weights:  247
## initial  value 337.774398 
## iter  10 value 89.614733
## iter  20 value 38.129368
## iter  30 value 20.926578
## iter  40 value 12.289976
## iter  50 value 11.397213
## iter  60 value 11.312683
## iter  70 value 11.307332
## iter  80 value 11.307242
## final  value 11.307241 
## converged
## # weights:  411
## initial  value 377.705633 
## iter  10 value 48.045188
## iter  20 value 26.397242
## iter  30 value 17.421726
## iter  40 value 12.201767
## iter  50 value 10.836741
## iter  60 value 10.200624
## iter  70 value 9.976119
## iter  80 value 9.825590
## iter  90 value 9.770975
## iter 100 value 9.762707
## final  value 9.762707 
## stopped after 100 iterations
## # weights:  83
## initial  value 342.991901 
## iter  10 value 75.526534
## iter  20 value 50.987317
## iter  30 value 46.474219
## iter  40 value 41.670683
## iter  50 value 40.047012
## iter  60 value 38.377166
## iter  70 value 38.365068
## iter  80 value 38.358317
## iter  90 value 38.353493
## iter 100 value 38.349032
## final  value 38.349032 
## stopped after 100 iterations
## # weights:  247
## initial  value 327.856380 
## iter  10 value 30.367253
## iter  20 value 25.592918
## iter  30 value 21.097637
## iter  40 value 20.046114
## iter  50 value 19.816784
## iter  60 value 15.068676
## iter  70 value 9.665345
## iter  80 value 9.183487
## iter  90 value 9.128019
## iter 100 value 9.000090
## final  value 9.000090 
## stopped after 100 iterations
## # weights:  411
## initial  value 351.123164 
## iter  10 value 25.977736
## iter  20 value 5.907212
## iter  30 value 2.630313
## iter  40 value 1.706658
## iter  50 value 0.394842
## iter  60 value 0.170293
## iter  70 value 0.141449
## iter  80 value 0.138763
## iter  90 value 0.132543
## iter 100 value 0.125035
## final  value 0.125035 
## stopped after 100 iterations
## # weights:  83
## initial  value 318.880157 
## iter  10 value 58.563511
## iter  20 value 47.196230
## iter  30 value 36.358177
## iter  40 value 36.306457
## iter  50 value 36.300612
## iter  60 value 33.056971
## iter  70 value 29.522075
## iter  80 value 29.517119
## iter  90 value 29.516721
## iter 100 value 29.516499
## final  value 29.516499 
## stopped after 100 iterations
## # weights:  247
## initial  value 357.483818 
## iter  10 value 89.915099
## iter  20 value 85.061469
## final  value 85.061422 
## converged
## # weights:  411
## initial  value 333.629296 
## iter  10 value 19.025901
## iter  20 value 12.964212
## iter  30 value 11.297203
## iter  40 value 9.952380
## iter  50 value 9.037550
## iter  60 value 8.973976
## iter  70 value 8.972727
## iter  80 value 8.324089
## iter  90 value 8.319162
## iter 100 value 8.318304
## final  value 8.318304 
## stopped after 100 iterations
## # weights:  83
## initial  value 392.915483 
## iter  10 value 89.701773
## iter  20 value 68.413422
## iter  30 value 42.369925
## iter  40 value 32.537764
## iter  50 value 31.849482
## iter  60 value 23.438734
## iter  70 value 21.830723
## iter  80 value 21.595248
## iter  90 value 21.580739
## final  value 21.580674 
## converged
## # weights:  247
## initial  value 325.335884 
## iter  10 value 69.473127
## iter  20 value 33.660683
## iter  30 value 21.240533
## iter  40 value 14.872921
## iter  50 value 13.797027
## iter  60 value 13.160044
## iter  70 value 12.527965
## iter  80 value 12.426680
## iter  90 value 12.392143
## iter 100 value 12.391474
## final  value 12.391474 
## stopped after 100 iterations
## # weights:  411
## initial  value 353.835320 
## iter  10 value 122.696207
## iter  20 value 89.558816
## iter  30 value 55.887725
## iter  40 value 28.341628
## iter  50 value 15.308624
## iter  60 value 12.562633
## iter  70 value 11.790994
## iter  80 value 11.512518
## iter  90 value 11.374769
## iter 100 value 11.180318
## final  value 11.180318 
## stopped after 100 iterations
## # weights:  83
## initial  value 328.453160 
## iter  10 value 74.848758
## iter  20 value 43.862495
## iter  30 value 33.090584
## iter  40 value 32.846210
## iter  50 value 32.842232
## iter  60 value 32.834977
## iter  70 value 32.825927
## iter  80 value 29.646590
## iter  90 value 26.325857
## iter 100 value 26.322869
## final  value 26.322869 
## stopped after 100 iterations
## # weights:  247
## initial  value 483.674462 
## iter  10 value 33.793108
## iter  20 value 19.208429
## iter  30 value 11.854451
## iter  40 value 9.713500
## iter  50 value 7.784952
## iter  60 value 7.076864
## iter  70 value 7.039870
## iter  80 value 7.030934
## iter  90 value 7.023046
## iter 100 value 5.411523
## final  value 5.411523 
## stopped after 100 iterations
## # weights:  411
## initial  value 337.598349 
## iter  10 value 47.603911
## iter  20 value 23.924252
## iter  30 value 19.537630
## iter  40 value 17.288060
## iter  50 value 13.543805
## iter  60 value 7.200517
## iter  70 value 4.659781
## iter  80 value 3.021394
## iter  90 value 2.818706
## iter 100 value 2.535290
## final  value 2.535290 
## stopped after 100 iterations
## # weights:  247
## initial  value 390.330792 
## iter  10 value 27.006608
## iter  20 value 12.447946
## iter  30 value 9.446120
## iter  40 value 4.313604
## iter  50 value 3.501630
## iter  60 value 3.475811
## iter  70 value 3.469501
## iter  80 value 3.463040
## iter  90 value 2.879942
## iter 100 value 2.866383
## final  value 2.866383 
## stopped after 100 iterations

Resultados de Modelo

resultados_train_rn = predict(modelo_rn, train_set)
resultados_test_rn = predict(modelo_rn, test_set)

Matriz de Confusión

##### ENTRENAMIENTO ######
MCRE_rn = confusionMatrix(resultados_train_rn, train_set$Tipo) # MCRE - Matriz de Confusión de Resultados de Entrenamiento.
#MCRE_rn

##### PRUEBA #####
MCRP_rn = confusionMatrix(resultados_test_rn, test_set$Tipo) # MCRE - Matriz de Confusión de Resultados de Prueba.
MCRP_rn
## Confusion Matrix and Statistics
## 
##            Reference
## Prediction  benign malignant
##   benign        86         3
##   malignant      2        44
##                                           
##                Accuracy : 0.963           
##                  95% CI : (0.9157, 0.9879)
##     No Information Rate : 0.6519          
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.918           
##                                           
##  Mcnemar's Test P-Value : 1               
##                                           
##             Sensitivity : 0.9773          
##             Specificity : 0.9362          
##          Pos Pred Value : 0.9663          
##          Neg Pred Value : 0.9565          
##              Prevalence : 0.6519          
##          Detection Rate : 0.6370          
##    Detection Prevalence : 0.6593          
##       Balanced Accuracy : 0.9567          
##                                           
##        'Positive' Class : benign          
## 

Random Forests

Entrenamiento de Modelo

modelo_rf = train(Tipo ~., data = train_set,
                    method = "rf",
                    preProcess = c("scale", "center"),
                    trControl = trainControl(method = "cv", number =10),
                    tuneGrid = expand.grid(mtry =c(2,4,6))
                    )

Resultados de Modelo

resultados_train_rf = predict(modelo_rf, train_set)
resultados_test_rf = predict(modelo_rf, test_set)

Matriz de Confusión

##### ENTRENAMIENTO ######
MCRE_rf = confusionMatrix(resultados_train_rf, train_set$Tipo) # MCRE - Matriz de Confusión de Resultados de Entrenamiento.
#MCRE_rf

##### PRUEBA #####
MCRP_rf = confusionMatrix(resultados_test_rf, test_set$Tipo) # MCRE - Matriz de Confusión de Resultados de Prueba.
MCRP_rf
## Confusion Matrix and Statistics
## 
##            Reference
## Prediction  benign malignant
##   benign        85         3
##   malignant      3        44
##                                           
##                Accuracy : 0.9556          
##                  95% CI : (0.9058, 0.9835)
##     No Information Rate : 0.6519          
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.9021          
##                                           
##  Mcnemar's Test P-Value : 1               
##                                           
##             Sensitivity : 0.9659          
##             Specificity : 0.9362          
##          Pos Pred Value : 0.9659          
##          Neg Pred Value : 0.9362          
##              Prevalence : 0.6519          
##          Detection Rate : 0.6296          
##    Detection Prevalence : 0.6519          
##       Balanced Accuracy : 0.9510          
##                                           
##        'Positive' Class : benign          
## 

Comparativa entre Modelos

## Creación de tabla comparativa
# MODELOS
Metodo<-c('SVM Linear','SVM Radial', 'SVM Poly', 'Árboles de decisión', 'Redes Neuronales', 'Random Forest')
#ACC TRAIN
ACC_Train<-c(MCRE_svml$overall["Accuracy"], MCRE_svmr$overall["Accuracy"], MCRE_svmp$overall["Accuracy"], MCRE_ad$overall["Accuracy"],MCRE_rn$overall["Accuracy"],MCRE_rf$overall["Accuracy"])
#ACC TEST
ACC_Test<-c(MCRP_svml$overall["Accuracy"], MCRP_svmr$overall["Accuracy"], MCRP_svmp$overall["Accuracy"], MCRP_ad$overall["Accuracy"],MCRP_rn$overall["Accuracy"],MCRP_rf$overall["Accuracy"])
#SENS
Sensitivity<-c(MCRP_svml$byClass["Sensitivity"], MCRP_svmr$byClass["Sensitivity"], MCRP_svmp$byClass["Sensitivity"], MCRP_ad$byClass["Sensitivity"], MCRP_rn$byClass["Sensitivity"], MCRP_rf$byClass["Sensitivity"])
#SPEC
Specificity<-c(MCRP_svml$byClass["Specificity"], MCRP_svmr$byClass["Specificity"], MCRP_svmp$byClass["Specificity"], MCRP_ad$byClass["Specificity"], MCRP_rn$byClass["Specificity"], MCRP_rf$byClass["Specificity"])
# Creación del dataframe
RMSE_df<-data.frame(Metodo,ACC_Train, ACC_Test,Sensitivity, Specificity)
# Ordenar el dataframe
RMSE_df<-RMSE_df[order(-ACC_Test),]
# Imprimir el dataframe
RMSE_df %>%
  kbl() %>%
  kable_styling()
Metodo ACC_Train ACC_Test Sensitivity Specificity
4 Árboles de decisión 0.9616788 0.9703704 0.9886364 0.9361702
5 Redes Neuronales 0.9963504 0.9629630 0.9772727 0.9361702
6 Random Forest 0.9963504 0.9555556 0.9659091 0.9361702
1 SVM Linear 1.0000000 0.9111111 0.9431818 0.8510638
3 SVM Poly 1.0000000 0.9111111 0.9431818 0.8510638
2 SVM Radial 1.0000000 0.6962963 0.5340909 1.0000000