Cargamos las librerias a utilizar

#############################################library(dplyr) # for data manipulation
library(caret) # for model-building
library(DMwR)  # for smote implementation
library(purrr) # for functional programming (map)
library(pROC)
library(knitr)
library(qgraph)
library(nortest)
library(magrittr)
library(dplyr) 
library(tidyr) 
library(e1071)
library(OneR) 
library(tidyverse)  # data manipulation and visualization
library(ggplot2)    # plot arrangement
library(gridExtra)  # plot arrangement
library(caret)
library(ggplot2)
library(FactoMineR)
library(factoextra)
library(modes)      # MODA  VER EL COMPORTAMIENTO GENERAL DE LA INF
library(randomForest)
#CARGAS DATOS PARA TRABAJAR MODELO PREDICTIVO
############################################
ruta <- 'C:/Users/Jhampier/Google Drive/Maestria/TESIS DE MAESTRIA/Proyecto'
setwd('C:/Users/Jhampier/Google Drive/Maestria/TESIS DE MAESTRIA/Proyecto')
#ruta <- 'C:/Users/jtapiasu/Google Drive/Maestria/TESIS DE MAESTRIA/Proyecto'
#setwd('C:/Users/jtapiasu/Google Drive/Maestria/TESIS DE MAESTRIA/Proyecto')
#C:\Users\Administrador\Desktop
#ruta <- 'C:/Users/Administrador/Desktop'
#setwd('C:/Users/Administrador/Desktop')

#Leer el conjunto de datos del archivo CSV
DataSetUprivada <-  read.table(paste(ruta, "/DataSetUprivadaBinarizadaSinRuidoFuturo.csv",sep=""),header=TRUE,sep=";")
##########################################################
########## 2 COMPRESION DE DATOS Y 3 PREPARACIÓN DE DATOS#####
##########################################################
View(DataSetUprivada)

########################################################
## DIMENSIONES - CANTIDAD DE FILAS Y VARIABLES(COLUMNAS)
nrow(DataSetUprivada)#[1] 35693
[1] 35693
ncol(DataSetUprivada)#[1] 27 -1 de categoria(var categorica)
[1] 28
colnames(DataSetUprivada)#Nombres de Variables
 [1] "CodAlumno"                      "SemestresEstudiadosAcum"       
 [3] "CantCursosLlevadosAcum"         "CursosLlevadosFueraCarreraAcum"
 [5] "AvgSinAplzAcum"                 "AvgConAplzAcum"                
 [7] "CantCursosAplzAcum"             "SumCredTeoAcum"                
 [9] "SumCredPraAcum"                 "edad"                          
[11] "SEXO"                           "AvgVezMatriAcum"               
[13] "CarreraProfesional"             "MODALIDAD_INGRESO"             
[15] "ANIO_INGRESO"                   "UBIG_NACIMIENTO"               
[17] "UBIG_RESIDENCIA"                "TIPO_VIVIENDA"                 
[19] "GradoInstruccionPapa"           "ProfesionPapa"                 
[21] "OcupacionPapa"                  "GradoInstruccionMama"          
[23] "ProfesionMama"                  "OcupacionMama"                 
[25] "CantCursosAnulados"             "categoria"                     
[27] "categoriaBinarizada"            "ProbabDesercion"               
##NOMBRES Y TIPOS DE DATOS DE LAS COLUMNAS
sapply(DataSetUprivada, mode)
                     CodAlumno        SemestresEstudiadosAcum 
                     "numeric"                      "numeric" 
        CantCursosLlevadosAcum CursosLlevadosFueraCarreraAcum 
                     "numeric"                      "numeric" 
                AvgSinAplzAcum                 AvgConAplzAcum 
                     "numeric"                      "numeric" 
            CantCursosAplzAcum                 SumCredTeoAcum 
                     "numeric"                      "numeric" 
                SumCredPraAcum                           edad 
                     "numeric"                      "numeric" 
                          SEXO                AvgVezMatriAcum 
                     "numeric"                      "numeric" 
            CarreraProfesional              MODALIDAD_INGRESO 
                     "numeric"                      "numeric" 
                  ANIO_INGRESO                UBIG_NACIMIENTO 
                     "numeric"                      "numeric" 
               UBIG_RESIDENCIA                  TIPO_VIVIENDA 
                     "numeric"                      "numeric" 
          GradoInstruccionPapa                  ProfesionPapa 
                     "numeric"                      "numeric" 
                 OcupacionPapa           GradoInstruccionMama 
                     "numeric"                      "numeric" 
                 ProfesionMama                  OcupacionMama 
                     "numeric"                      "numeric" 
            CantCursosAnulados                      categoria 
                     "numeric"                      "numeric" 
           categoriaBinarizada                ProbabDesercion 
                     "numeric"                      "numeric" 
summary(DataSetUprivada)#PODEMOS OBSERVAR EN EL POWER 
            CodAlumno     SemestresEstudiadosAcum CantCursosLlevadosAcum
 20000062092012-1:    1   Min.   : 1.000          Min.   : 1.00         
 20000062092012-2:    1   1st Qu.: 2.000          1st Qu.:11.00         
 20000062092013-1:    1   Median : 4.000          Median :20.00         
 20000062092013-2:    1   Mean   : 4.187          Mean   :23.17         
 20000063092012-1:    1   3rd Qu.: 6.000          3rd Qu.:33.00         
 20000063092012-2:    1   Max.   :12.000          Max.   :81.00         
 (Other)         :35687                                                 
 CursosLlevadosFueraCarreraAcum AvgSinAplzAcum  AvgConAplzAcum 
 Min.   : 1.000                 11,00  :  123   12,00  :  176  
 1st Qu.: 2.000                 12,00  :  122   11,00  :  155  
 Median : 4.000                 10,33  :  121   11,67  :  121  
 Mean   : 4.306                 10,00  :  112   13,00  :  121  
 3rd Qu.: 6.000                 10,67  :  106   11,33  :  117  
 Max.   :18.000                 13,00  :  104   10,67  :  112  
                                (Other):35005   (Other):34891  
 CantCursosAplzAcum SumCredTeoAcum  SumCredPraAcum       edad        SEXO     
 Min.   : 0.000     Min.   :  1.0   Min.   : 0.00   Min.   : 14.00   F: 9994  
 1st Qu.: 1.000     1st Qu.: 27.0   1st Qu.: 7.00   1st Qu.: 18.00   M:25699  
 Median : 3.000     Median : 50.0   Median :15.00   Median : 20.00            
 Mean   : 5.247     Mean   : 59.4   Mean   :17.78   Mean   : 20.55            
 3rd Qu.: 8.000     3rd Qu.: 85.0   3rd Qu.:25.00   3rd Qu.: 22.00            
 Max.   :48.000     Max.   :200.0   Max.   :80.00   Max.   :113.00            
                                                                              
 AvgVezMatriAcum                                             CarreraProfesional
 1,00   :18850   INGENIERIA INDUSTRIAL                                :8791    
 1,04   :  771   INGENIERIA MECANICA, MECANICA-ELECTRICA Y MECATRONICA:8528    
 1,03   :  718   INGENIERIA DE SISTEMAS                               :4537    
 1,07   :  690   INGENIERIA ELECTRONICA                               :3699    
 1,06   :  689   MEDICINA VETERINARIA Y ZOOTECNIA                     :3124    
 1,02   :  670   INGENIERIA DE MINAS                                  :3119    
 (Other):13305   (Other)                                              :3895    
                   MODALIDAD_INGRESO  ANIO_INGRESO    UBIG_NACIMIENTO 
 Tercer Examen General      :8524    Min.   :2009   AREQUIPA  :21072  
 Segundo Examen General     :6259    1st Qu.:2011   PAUCARPATA: 1444  
 Primer Examen General      :5818    Median :2012   JULIACA   :  869  
 Centro Preuniversitario III:3417    Mean   :2012   YANAHUARA :  707  
 Centro Preuniversitario I  :2962    3rd Qu.:2014   ILO       :  701  
 Centro Preuniversitario II :2962    Max.   :2017   MOLLENDO  :  655  
 (Other)                    :5751                   (Other)   :10245  
                      UBIG_RESIDENCIA       TIPO_VIVIENDA  
 JOSE LUIS BUSTAMANTE Y RIVERO: 5274   CASA        :29859  
 CERRO COLORADO               : 3949   DEPARTAMENTO: 5484  
 AREQUIPA                     : 3931   VECINDAD    :  350  
 PAUCARPATA                   : 3272                       
 CAYMA                        : 2701                       
 YANAHUARA                    : 2381                       
 (Other)                      :14185                       
                GradoInstruccionPapa                   ProfesionPapa  
 SECUNDARIA COMPLETA      :7703      OTROS                    :13173  
 SUPERIOR UNIV. COMPLETA  :6279      PROFESION ...            : 6469  
 SUPERIOR TECNICA COMPLETA:5469      CONTADOR                 : 2238  
 GRADUADO UNIVERSITARIO   :4493      ADMINISTRADOR DE EMPRESAS: 1550  
 SUPERIOR UNIV. INCOMPLETA:4372      PROFESOR                 : 1479  
 NIVEL EDUCATIVO ...      :1770      ABOGADO                  : 1313  
 (Other)                  :5607      (Other)                  : 9471  
               OcupacionPapa                    GradoInstruccionMama
 EMPLEADO             :10711   SECUNDARIA COMPLETA        :8926     
 OTRO                 : 5305   SUPERIOR UNIV. COMPLETA    :6048     
 OCUPACION ...        : 3028   SUPERIOR TECNICA COMPLETA  :5695     
 MICROEMPRESARIO      : 2396   GRADUADO UNIVERSITARIO     :4726     
 FF. POLICIALES       : 2185   SUPERIOR UNIV. INCOMPLETA  :3464     
 CONDUCTOR DE VEHICULO: 2182   EST. SUP. NO UNIVERSITARIOS:1674     
 (Other)              : 9886   (Other)                    :5160     
                   ProfesionMama                 OcupacionMama  
 OTROS                    :13518   AMA DE CASA          :14746  
 PROFESION ...            : 5909   EMPLEADO             : 8825  
 ENFERMERA                : 2976   OTRO                 : 3767  
 PROFESOR                 : 2966   COMERCIANTE MINORISTA: 2208  
 CONTADOR                 : 2400   OCUPACION ...        : 1576  
 ADMINISTRADOR DE EMPRESAS:  871   MICROEMPRESARIO      : 1558  
 (Other)                  : 7053   (Other)              : 3013  
 CantCursosAnulados         categoria     categoriaBinarizada ProbabDesercion
 Min.   : 0.0000    CONTINUA     :31076   Min.   :0.0000      14,24  :7157   
 1st Qu.: 0.0000    DESERTOR     : 1959   1st Qu.:0.0000      10,24  :5477   
 Median : 0.0000    EGRESADO     : 1858   Median :0.0000      6,61   :4901   
 Mean   : 0.2907    PROB.DESERTOR:  800   Mean   :0.0773      5,87   :4037   
 3rd Qu.: 0.0000                          3rd Qu.:0.0000      5,03   :3595   
 Max.   :16.0000                          Max.   :1.0000      5,35   :2878   
                                                              (Other):7648   
summary(DataSetUprivada$CarreraProfesional)#PODEMOS OBSERVAR EN EL POWER 
                                INGENIERIA AGRONOMICA 
                                                  952 
                     INGENIERIA AGRONOMICA Y AGRICOLA 
                                                  551 
                  INGENIERIA DE INDUSTRIA ALIMENTARIA 
                                                 2392 
                                  INGENIERIA DE MINAS 
                                                 3119 
                               INGENIERIA DE SISTEMAS 
                                                 4537 
                               INGENIERIA ELECTRONICA 
                                                 3699 
                                INGENIERIA INDUSTRIAL 
                                                 8791 
INGENIERIA MECANICA, MECANICA-ELECTRICA Y MECATRONICA 
                                                 8528 
                     MEDICINA VETERINARIA Y ZOOTECNIA 
                                                 3124 
########################################################
###########  PREPARACIÓN DE DATA POR VARIABLES  ########
########################################################
###Converision para tipo de dato correcto
DataSetUPRIVADAFRMTO <-transform(DataSetUprivada, 
                                 SEXO = as.factor(as.character(SEXO)),
                                 CarreraProfesional = as.factor(as.character(CarreraProfesional)),
                                 MODALIDAD_INGRESO = as.factor(as.character(MODALIDAD_INGRESO)),
                                 UBIG_NACIMIENTO = as.factor(as.character(UBIG_NACIMIENTO)),
                                 UBIG_RESIDENCIA = as.factor(as.character(UBIG_RESIDENCIA)),
                                 TIPO_VIVIENDA = as.factor(as.character(TIPO_VIVIENDA)),
                                 GradoInstruccionPapa = as.factor(as.character(GradoInstruccionPapa)),
                                 ProfesionPapa = as.factor(as.character(ProfesionPapa)),
                                 OcupacionPapa = as.factor(as.character(OcupacionPapa)),
                                 GradoInstruccionMama = as.factor(as.character(GradoInstruccionMama)),
                                 ProfesionMama = as.factor(as.character(ProfesionMama)),
                                 OcupacionMama = as.factor(as.character(OcupacionMama))
                                 ,categoriaBinarizada = as.factor(as.character(categoriaBinarizada))
)
DataSetUPRIVADAFRMTO[,'AvgSinAplzAcum'] <- as.numeric(sub(",", ".",  DataSetUPRIVADAFRMTO[,'AvgSinAplzAcum']
                                                          , fixed = TRUE))
DataSetUPRIVADAFRMTO[,'AvgConAplzAcum'] <- as.numeric(sub(",", ".",  DataSetUPRIVADAFRMTO[,'AvgConAplzAcum']
                                                          , fixed = TRUE))
DataSetUPRIVADAFRMTO[,'AvgVezMatriAcum'] <- as.numeric(sub(",", ".",  DataSetUPRIVADAFRMTO[,'AvgVezMatriAcum']
                                                           , fixed = TRUE))
DataSetUPRIVADAFRMTO[,'ProbabDesercion'] <- as.numeric(sub(",", ".",  DataSetUPRIVADAFRMTO[,'ProbabDesercion']
                                                           , fixed = TRUE))
##sapply(DataSetUPRIVADAFRMTO, mode)

ListVar.Categ <-    c('SEXO','CarreraProfesional','MODALIDAD_INGRESO'
                      ,'UBIG_NACIMIENTO','UBIG_RESIDENCIA','TIPO_VIVIENDA'
                      ,'GradoInstruccionPapa','ProfesionPapa','OcupacionPapa'
                      ,'GradoInstruccionMama','ProfesionMama','OcupacionMama')    # 12

Var.Objetivo      <- c('categoriaBinarizada')  #c('categoria')                                             # 1
ListVar.Continuas <- c('SemestresEstudiadosAcum'
                       ,'CantCursosLlevadosAcum'
                       ,'CursosLlevadosFueraCarreraAcum'
                       ,'AvgSinAplzAcum','AvgConAplzAcum'
                       ,'CantCursosAplzAcum'
                       ,'SumCredTeoAcum'
                       ,'SumCredPraAcum'
                       ,'edad'
                       #T#,'AvgVezMatriAcum'
                       ,'ANIO_INGRESO'
                       #T#,'CantCursosAnulados'                                     # 12
                       ,'ProbabDesercion'
)
Var.Identificacion <- c('CodAlumno')                                            # 1
Var.TodasUprivada <- c(ListVar.Categ ,ListVar.Continuas , Var.Objetivo)

##############################################################################
#  ###ORDENAMOS EL DATASET CRONOLOGICAMENTE
############################################################################
###  ANTES
View(DataSetUPRIVADAFRMTO)

TotalFilas <- nrow(DataSetUPRIVADAFRMTO)  #35687
SortUltimaFila=vector(mode='numeric', length=TotalFilas)
SortUltimaFila2=vector(mode='numeric', length=TotalFilas)
##Obtendremos las variables dle codigod el alumno para ordenar el dataset
NuevoDataSetUPRIVADAFRMTO = data.frame(DataSetUPRIVADAFRMTO, SortUltimaFila,SortUltimaFila2)
View(NuevoDataSetUPRIVADAFRMTO)
summary(NuevoDataSetUPRIVADAFRMTO)
            CodAlumno     SemestresEstudiadosAcum CantCursosLlevadosAcum
 20000062092012-1:    1   Min.   : 1.000          Min.   : 1.00         
 20000062092012-2:    1   1st Qu.: 2.000          1st Qu.:11.00         
 20000062092013-1:    1   Median : 4.000          Median :20.00         
 20000062092013-2:    1   Mean   : 4.187          Mean   :23.17         
 20000063092012-1:    1   3rd Qu.: 6.000          3rd Qu.:33.00         
 20000063092012-2:    1   Max.   :12.000          Max.   :81.00         
 (Other)         :35687                                                 
 CursosLlevadosFueraCarreraAcum AvgSinAplzAcum  AvgConAplzAcum 
 Min.   : 1.000                 Min.   : 0.00   Min.   : 0.00  
 1st Qu.: 2.000                 1st Qu.: 8.91   1st Qu.: 9.36  
 Median : 4.000                 Median :10.63   Median :11.06  
 Mean   : 4.306                 Mean   :10.54   Mean   :10.84  
 3rd Qu.: 6.000                 3rd Qu.:12.32   3rd Qu.:12.52  
 Max.   :18.000                 Max.   :19.66   Max.   :19.66  
                                                               
 CantCursosAplzAcum SumCredTeoAcum  SumCredPraAcum       edad        SEXO     
 Min.   : 0.000     Min.   :  1.0   Min.   : 0.00   Min.   : 14.00   F: 9994  
 1st Qu.: 1.000     1st Qu.: 27.0   1st Qu.: 7.00   1st Qu.: 18.00   M:25699  
 Median : 3.000     Median : 50.0   Median :15.00   Median : 20.00            
 Mean   : 5.247     Mean   : 59.4   Mean   :17.78   Mean   : 20.55            
 3rd Qu.: 8.000     3rd Qu.: 85.0   3rd Qu.:25.00   3rd Qu.: 22.00            
 Max.   :48.000     Max.   :200.0   Max.   :80.00   Max.   :113.00            
                                                                              
 AvgVezMatriAcum                                             CarreraProfesional
 Min.   :1.000   INGENIERIA INDUSTRIAL                                :8791    
 1st Qu.:1.000   INGENIERIA MECANICA, MECANICA-ELECTRICA Y MECATRONICA:8528    
 Median :1.000   INGENIERIA DE SISTEMAS                               :4537    
 Mean   :1.138   INGENIERIA ELECTRONICA                               :3699    
 3rd Qu.:1.170   MEDICINA VETERINARIA Y ZOOTECNIA                     :3124    
 Max.   :4.000   INGENIERIA DE MINAS                                  :3119    
                 (Other)                                              :3895    
                   MODALIDAD_INGRESO  ANIO_INGRESO    UBIG_NACIMIENTO 
 Tercer Examen General      :8524    Min.   :2009   AREQUIPA  :21072  
 Segundo Examen General     :6259    1st Qu.:2011   PAUCARPATA: 1444  
 Primer Examen General      :5818    Median :2012   JULIACA   :  869  
 Centro Preuniversitario III:3417    Mean   :2012   YANAHUARA :  707  
 Centro Preuniversitario I  :2962    3rd Qu.:2014   ILO       :  701  
 Centro Preuniversitario II :2962    Max.   :2017   MOLLENDO  :  655  
 (Other)                    :5751                   (Other)   :10245  
                      UBIG_RESIDENCIA       TIPO_VIVIENDA  
 JOSE LUIS BUSTAMANTE Y RIVERO: 5274   CASA        :29859  
 CERRO COLORADO               : 3949   DEPARTAMENTO: 5484  
 AREQUIPA                     : 3931   VECINDAD    :  350  
 PAUCARPATA                   : 3272                       
 CAYMA                        : 2701                       
 YANAHUARA                    : 2381                       
 (Other)                      :14185                       
                GradoInstruccionPapa                   ProfesionPapa  
 SECUNDARIA COMPLETA      :7703      OTROS                    :13173  
 SUPERIOR UNIV. COMPLETA  :6279      PROFESION ...            : 6469  
 SUPERIOR TECNICA COMPLETA:5469      CONTADOR                 : 2238  
 GRADUADO UNIVERSITARIO   :4493      ADMINISTRADOR DE EMPRESAS: 1550  
 SUPERIOR UNIV. INCOMPLETA:4372      PROFESOR                 : 1479  
 NIVEL EDUCATIVO ...      :1770      ABOGADO                  : 1313  
 (Other)                  :5607      (Other)                  : 9471  
               OcupacionPapa                    GradoInstruccionMama
 EMPLEADO             :10711   SECUNDARIA COMPLETA        :8926     
 OTRO                 : 5305   SUPERIOR UNIV. COMPLETA    :6048     
 OCUPACION ...        : 3028   SUPERIOR TECNICA COMPLETA  :5695     
 MICROEMPRESARIO      : 2396   GRADUADO UNIVERSITARIO     :4726     
 FF. POLICIALES       : 2185   SUPERIOR UNIV. INCOMPLETA  :3464     
 CONDUCTOR DE VEHICULO: 2182   EST. SUP. NO UNIVERSITARIOS:1674     
 (Other)              : 9886   (Other)                    :5160     
                   ProfesionMama                 OcupacionMama  
 OTROS                    :13518   AMA DE CASA          :14746  
 PROFESION ...            : 5909   EMPLEADO             : 8825  
 ENFERMERA                : 2976   OTRO                 : 3767  
 PROFESOR                 : 2966   COMERCIANTE MINORISTA: 2208  
 CONTADOR                 : 2400   OCUPACION ...        : 1576  
 ADMINISTRADOR DE EMPRESAS:  871   MICROEMPRESARIO      : 1558  
 (Other)                  : 7053   (Other)              : 3013  
 CantCursosAnulados         categoria     categoriaBinarizada ProbabDesercion 
 Min.   : 0.0000    CONTINUA     :31076   0:32934             Min.   : 0.000  
 1st Qu.: 0.0000    DESERTOR     : 1959   1: 2759             1st Qu.: 5.190  
 Median : 0.0000    EGRESADO     : 1858                       Median : 5.870  
 Mean   : 0.2907    PROB.DESERTOR:  800                       Mean   : 7.729  
 3rd Qu.: 0.0000                                              3rd Qu.:10.240  
 Max.   :16.0000                                              Max.   :14.240  
                                                                              
 SortUltimaFila SortUltimaFila2
 Min.   :0      Min.   :0      
 1st Qu.:0      1st Qu.:0      
 Median :0      Median :0      
 Mean   :0      Mean   :0      
 3rd Qu.:0      3rd Qu.:0      
 Max.   :0      Max.   :0      
                               
NuevoDataSetUPRIVADAFRMTO$SortUltimaFila=as.numeric(  substr(NuevoDataSetUPRIVADAFRMTO$CodAlumno, 11, 14))
NuevoDataSetUPRIVADAFRMTO$SortUltimaFila2=as.numeric(  substr(NuevoDataSetUPRIVADAFRMTO$CodAlumno, 16, 17))

###ORDENAMOS EL DATA SET
SortNuevoDataSetUPRIVADAFRMTO <- NuevoDataSetUPRIVADAFRMTO[order(NuevoDataSetUPRIVADAFRMTO$SortUltimaFila,NuevoDataSetUPRIVADAFRMTO$SortUltimaFila2),] 
View(SortNuevoDataSetUPRIVADAFRMTO)
SortNuevoDataSetUPRIVADAFRMTO$SortUltimaFila <- NULL ##ELIMINARNOS LAS FILAS DE ORDENAMIENTO
SortNuevoDataSetUPRIVADAFRMTO$SortUltimaFila2 <- NULL ##ELIMINARNOS LAS FILAS DE ORDENAMIENTO

##Reemplamos en el dataset que se trabajarn los modelos
DataSetUPRIVADAFRMTO<-SortNuevoDataSetUPRIVADAFRMTO

Observamos el DATASET ordenado cronologicamente

# Resultado DESPUES
View(DataSetUPRIVADAFRMTO)   #### EL NUEVO DATA SET SE ENCUENTRA ORDENADO CRONOLOGICAMENTE
ncol(DataSetUPRIVADAFRMTO)
[1] 28

Configuración para el modelo de entrenamiento

summary(DataSetUPRIVADAFRMTO$CarreraProfesional)
                                INGENIERIA AGRONOMICA 
                                                  952 
                     INGENIERIA AGRONOMICA Y AGRICOLA 
                                                  551 
                  INGENIERIA DE INDUSTRIA ALIMENTARIA 
                                                 2392 
                                  INGENIERIA DE MINAS 
                                                 3119 
                               INGENIERIA DE SISTEMAS 
                                                 4537 
                               INGENIERIA ELECTRONICA 
                                                 3699 
                                INGENIERIA INDUSTRIAL 
                                                 8791 
INGENIERIA MECANICA, MECANICA-ELECTRICA Y MECATRONICA 
                                                 8528 
                     MEDICINA VETERINARIA Y ZOOTECNIA 
                                                 3124 
DataSetUPRIVADAFRMTO.RF <-DataSetUPRIVADAFRMTO[,Var.TodasUprivada]  %>%  filter(gsub("^\\s+|\\s+$", "",CarreraProfesional) =="INGENIERIA INDUSTRIAL" ) %>%  droplevels
#Para que las variables se visualicen correctamente
for (variable in ListVar.Categ) {  levels(DataSetUPRIVADAFRMTO.RF[,variable]) }
nrow(DataSetUPRIVADAFRMTO.RF)
[1] 8791
summary(DataSetUPRIVADAFRMTO.RF$CarreraProfesional)
INGENIERIA INDUSTRIAL 
                 8791 
DataSetUPRIVADAFRMTO.RF$CarreraProfesional <- NULL


# configurar función de control para Training
ctrl <- trainControl(method = "repeatedcv", number = 10, repeats = 10, summaryFunction = twoClassSummary, classProbs = TRUE)

DataSetUPRIVADAFRMTO.RF$categoriaBinarizada <- as.character(DataSetUPRIVADAFRMTO.RF$categoriaBinarizada)
DataSetUPRIVADAFRMTO.RF$categoriaBinarizada[DataSetUPRIVADAFRMTO.RF$categoriaBinarizada == "0"] <- "C0"### LOS QUE CONTINUAN
DataSetUPRIVADAFRMTO.RF$categoriaBinarizada[DataSetUPRIVADAFRMTO.RF$categoriaBinarizada == "1"] <- "C1"### LOS DESERTORES
DataSetUPRIVADAFRMTO.RF$categoriaBinarizada <- factor(DataSetUPRIVADAFRMTO.RF$categoriaBinarizada)

LUEGO DE ORDENAR PROCEDEMOS A ENTRENAR EL MODELO

####################################################
####PODEMOS OBSERVAR EL DESBALANCEO DE LAS CLASES 
100*prop.table(table(DataSetUPRIVADAFRMTO.RF$categoriaBinarizada))

       C0        C1 
95.051757  4.948243 
summary(DataSetUPRIVADAFRMTO.RF$categoriaBinarizada)
  C0   C1 
8356  435 
##calculamos las filas para el entrenamiento
TotalFilas <- nrow(DataSetUPRIVADAFRMTO.RF)
#####Se tomara el 50% de las de la data para entremiento y el otro 50% sera para TEST
TrainFilas <- round(TotalFilas*0.5)  

##VEMOS EL DATASET QUE SE UTILIZARA PARA ENTRENAR
View(DataSetUPRIVADAFRMTO.RF)

AQUI SE APLICAN LOS MODELOS Y SE MUESTRA SUS MATRICES DE CONFUSIÓN COMO REFERENCIA

##DENIFIMOS LOS NODOS DE ENTRENAMIENTP
x_trainRF <- DataSetUPRIVADAFRMTO.RF[ (1:TrainFilas),]
y_trainRF <- DataSetUPRIVADAFRMTO.RF[ (1:TrainFilas),'categoriaBinarizada']
##### DATOS PARA ENTRENAMIENTO
View(x_trainRF)
x_testRF <- DataSetUPRIVADAFRMTO.RF[ ((TrainFilas+1):TotalFilas),]
y_testRF <- DataSetUPRIVADAFRMTO.RF[((TrainFilas+1):TotalFilas),'categoriaBinarizada']
## configurarmos un paramtro de RamdomForest para tunear el modelo.
##### DATOS PARA TESTING
View(x_testRF)
tunegrid <- expand.grid(.mtry = c(sqrt(ncol(DataSetUPRIVADAFRMTO.RF))))
# Build down-sampled model
ctrl$sampling <- "down"
down_fit <- train(categoriaBinarizada ~ .,
                  data = x_trainRF,
                  method = "rf",
                  verbose = FALSE,
                  tuneGrid = tunegrid,
                  metric = "ROC",
                  trControl = ctrl)

summary(y_testRF)
  C0   C1 
4137  258 
mc_PredictDownTuneGrid<- table(predict(down_fit,x_testRF),y_testRF)
mc_PredictDownTuneGrid
    y_testRF
       C0   C1
  C0 3422   72
  C1  715  186
cm_DownRF1 <- confusionMatrix(predict(down_fit,x_testRF), y_testRF)
cm_DownRF1$byClass
         Sensitivity          Specificity       Pos Pred Value 
           0.8266860            0.7170543            0.9791011 
      Neg Pred Value            Precision               Recall 
           0.2050998            0.9791011            0.8266860 
                  F1           Prevalence       Detection Rate 
           0.8964613            0.9412969            0.7781570 
Detection Prevalence    Balanced Accuracy 
           0.7947668            0.7718701 
# Build up-sampled model
ctrl$sampling <- "up"
up_fit <- train(categoriaBinarizada ~ .,
                data = x_trainRF,
                method = "rf",
                verbose = FALSE,
                metric = "ROC",
                tuneGrid = tunegrid,
                trControl = ctrl)

summary(y_testRF)
  C0   C1 
4137  258 
mc_PredictUpTuneGrid<- table(predict(up_fit,x_testRF),y_testRF)
mc_PredictUpTuneGrid
    y_testRF
       C0   C1
  C0 3872  127
  C1  265  131
cm_UpRF1 <- confusionMatrix(predict(up_fit,x_testRF), y_testRF)
cm_UpRF1$byClass
         Sensitivity          Specificity       Pos Pred Value 
           0.9364274            0.5116279            0.9685000 
      Neg Pred Value            Precision               Recall 
           0.3341772            0.9685000            0.9364274 
                  F1           Prevalence       Detection Rate 
           0.9521937            0.9412969            0.8814562 
Detection Prevalence    Balanced Accuracy 
           0.9101251            0.7240276 
#################### #################### #################### 
#################### NUEVOS
ctrl <- trainControl(method = "repeatedcv",            number = 10,       repeats = 10,   verboseIter = FALSE)

# summary( DataSetUPRIVADAFRMTO.RF$categoriaBinarizada)
# summary(x_trainRF$categoriaBinarizada)
# summary(x_testRF$categoriaBinarizada)
ctrl$sampling <- "down"
set.seed(5627)
model_rf_under <- caret::train(categoriaBinarizada ~ .,                         data = x_trainRF,
                         method = "rf",                  preProcess = c("scale", "center"),
                         trControl = ctrl)



mc_originalUnder<- table(predict(model_rf_under,x_testRF), y_testRF)
mc_originalUnder
    y_testRF
       C0   C1
  C0 3888  144
  C1  249  114
cm_originalUnder <- confusionMatrix(predict(model_rf_under,x_testRF), y_testRF)
cm_originalUnder
Confusion Matrix and Statistics

          Reference
Prediction   C0   C1
        C0 3883  146
        C1  254  112
                                          
               Accuracy : 0.909           
                 95% CI : (0.9001, 0.9173)
    No Information Rate : 0.9413          
    P-Value [Acc > NIR] : 1               
                                          
                  Kappa : 0.3116          
                                          
 Mcnemar's Test P-Value : 8.795e-08       
                                          
            Sensitivity : 0.9386          
            Specificity : 0.4341          
         Pos Pred Value : 0.9638          
         Neg Pred Value : 0.3060          
             Prevalence : 0.9413          
         Detection Rate : 0.8835          
   Detection Prevalence : 0.9167          
      Balanced Accuracy : 0.6864          
                                          
       'Positive' Class : C0              
                                          
###PRUEBA
ccmodelBayes <-  caret::train(categoriaBinarizada ~ .,  data=x_trainRF,'nb')
mc_ccmodelBayesCaret<- table(predict(ccmodelBayes,x_testRF), y_testRF)
mc_ccmodelBayesCaret
    y_testRF
       C0   C1
  C0 4137  258
  C1    0    0
cm_ccmodelBayesCaret <- confusionMatrix(predict(ccmodelBayes,x_testRF), y_testRF)
cm_ccmodelBayesCaret$byClass
         Sensitivity          Specificity       Pos Pred Value 
           1.0000000            0.0000000            0.9412969 
      Neg Pred Value            Precision               Recall 
                 NaN            0.9412969            1.0000000 
                  F1           Prevalence       Detection Rate 
           0.9697609            0.9412969            0.9412969 
Detection Prevalence    Balanced Accuracy 
           1.0000000            0.5000000 
##### NAIVE BAYES  ########
x_trainRF$categoriaBinarizada <- NULL
x_testRF$categoriaBinarizada <- NULL
###CON CARET
library(e1071)
modelBayes <-  caret::train(x_trainRF,y_trainRF,'nb')
mc_modelBayesCaret<- table(predict(modelBayes,x_testRF), y_testRF)
mc_modelBayesCaret
    y_testRF
       C0   C1
  C0 3387  183
  C1  750   75
cm_modelBayesCaret <- confusionMatrix(predict(modelBayes,x_testRF), y_testRF)
cm_modelBayesCaret$byClass
         Sensitivity          Specificity       Pos Pred Value 
          0.81870921           0.29069767           0.94873950 
      Neg Pred Value            Precision               Recall 
          0.09090909           0.94873950           0.81870921 
                  F1           Prevalence       Detection Rate 
          0.87894122           0.94129693           0.77064846 
Detection Prevalence    Balanced Accuracy 
          0.81228669           0.55470344 
classificadorBayesiano <- naiveBayes(x_trainRF,y_trainRF)
mc_originalBayesiano<- table(predict(classificadorBayesiano,x_testRF), y_testRF)
mc_originalBayesiano
    y_testRF
       C0   C1
  C0 3986  164
  C1  151   94
cm_originalBayesiano <- confusionMatrix(predict(classificadorBayesiano,x_testRF), y_testRF)
cm_originalBayesiano
Confusion Matrix and Statistics

          Reference
Prediction   C0   C1
        C0 3986  164
        C1  151   94
                                          
               Accuracy : 0.9283          
                 95% CI : (0.9203, 0.9358)
    No Information Rate : 0.9413          
    P-Value [Acc > NIR] : 0.9998          
                                          
                  Kappa : 0.3358          
                                          
 Mcnemar's Test P-Value : 0.4990          
                                          
            Sensitivity : 0.9635          
            Specificity : 0.3643          
         Pos Pred Value : 0.9605          
         Neg Pred Value : 0.3837          
             Prevalence : 0.9413          
         Detection Rate : 0.9069          
   Detection Prevalence : 0.9443          
      Balanced Accuracy : 0.6639          
                                          
       'Positive' Class : C0              
                                          
View(x_trainRF)



#################################################################################################################
################################### RESUMEN DE RESULTADOS #######################################################
# #################################################################################################################
# View(x_trainRF)
# View(y_trainRF)
# View(x_testRF)
# View(y_testRF)
# summary(x_testRF)
# summary(y_testRF)
# mc_originalBayesiano
models <- list(    DownRF1     = down_fit,
                   UpRF1       = up_fit,
                   originalUnder  = model_rf_under,
                   ccmodelBayesCaret =   ccmodelBayes,
                   modelBayesCaret =   modelBayes,
                   originalBayesiano = classificadorBayesiano
                   )


# resampling <- resamples(models)
# bwplot(resampling)

library(dplyr)
comparison <- data.frame(model = names(models),                         Sensitivity = rep(NA, length(models)),
                         Specificity = rep(NA, length(models)),         Precision = rep(NA, length(models)),
                         Recall = rep(NA, length(models)),              F1 = rep(NA, length(models)))

for (name in names(models)) {
  switch(name, 
         DownRF1    ={rowModel<- 1},
         UpRF1      ={rowModel<- 2},  #smote
         originalUnder   ={rowModel<- 3},
         ccmodelBayesCaret = {rowModel<- 4},
         modelBayesCaret = {rowModel<- 5},
         originalBayesiano = {rowModel<- 6}
  )
  model <- get(paste0("cm_", name))
  comparison[rowModel,'Precision' ] <-model$byClass["Precision"]
  comparison[rowModel,'Sensitivity' ] <-model$byClass["Sensitivity"]
  comparison[rowModel,'Specificity' ] <-model$byClass["Specificity"] ## IMPORTANTE
  comparison[rowModel,'Recall' ] <-model$byClass["Recall"]
  comparison[rowModel,'F1' ] <-model$byClass["F1"]
}
comparison
              model Sensitivity Specificity Precision    Recall        F1
1           DownRF1   0.8266860   0.7170543 0.9791011 0.8266860 0.8964613
2             UpRF1   0.9364274   0.5116279 0.9685000 0.9364274 0.9521937
3     originalUnder   0.9386029   0.4341085 0.9637627 0.9386029 0.9510164
4 ccmodelBayesCaret   1.0000000   0.0000000 0.9412969 1.0000000 0.9697609
5   modelBayesCaret   0.8187092   0.2906977 0.9487395 0.8187092 0.8789412
6 originalBayesiano   0.9635001   0.3643411 0.9604819 0.9635001 0.9619887