# Instalar y cargar los paquetes necesarios
if (!require("neuralnet")) install.packages("neuralnet", dependencies = TRUE)
## Loading required package: neuralnet
library(neuralnet)
if (!require("caret")) install.packages("caret", dependencies = TRUE)
## Loading required package: caret
## Loading required package: ggplot2
## Loading required package: lattice
library(caret)

# Cargar o simular algunos datos de ejemplo
set.seed(123)  # Para reproducibilidad
data <- data.frame(
  edad = sample(18:70, 200, replace = TRUE),
  saldo = runif(200, min = 0, max = 10000),
  productos = sample(1:5, 200, replace = TRUE),
  activo = sample(0:1, 200, replace = TRUE),
  desercion = sample(0:1, 200, replace = TRUE)
)

# Preparar los datos
# Normalizar los datos puede ayudar a mejorar el rendimiento del modelo de red neuronal
data$edad <- scale(data$edad)
data$saldo <- scale(data$saldo)
data$productos <- scale(data$productos)

# Dividir los datos en conjuntos de entrenamiento y prueba
indices <- createDataPartition(data$desercion, p = 0.8, list = FALSE)
trainData <- data[indices,]
testData <- data[-indices,]

# Configurar y entrenar la red neuronal
nn <- neuralnet(desercion ~ edad + saldo + productos + activo, data = trainData, hidden = c(5), linear.output = FALSE)

# Visualizar la red
plot(nn)

# Realizar predicciones
predicciones <- compute(nn, testData[,1:4])
predicciones$result <- ifelse(predicciones$net.result > 0.5, 1, 0)

# Evaluar el modelo
confusionMatrix <- table(predicciones$result, testData$desercion)
print(confusionMatrix)
##    
##      0  1
##   0 13  9
##   1  7 11

#El algoritmo que hemos diseñado en R utiliza una red neuronal para predecir la probabilidad de deserción de clientes en un banco o una tiendo de crédito como Coppel o Elektra, basándose en variables como la edad, el saldo de la cuenta, la cantidad de productos contratados por el cliente, y si el cliente está activo o no

#Referencias #Barrueta-Meza, R., Castillo-Villarreal, J. P., & Armas-Aguirre, J. (2018, October). Predictive Model to Determine Customer Desertion in Peruvian Banking Entities. In 2018 Congreso Internacional de Innovación y Tendencias en Ingeniería (CONIITI) (pp. 1-5). IEEE.

#Pineda-Pertuz, C. M., Martinez, Y., & Diaz, I. (2022, September). Machine Learning algorithms to predict desertion in the faculty of Engineering Sciences at the Corporación Universitaria Antonio José de Sucre. In IOP Conference Series: Materials Science and Engineering (Vol. 1253, No. 1, p. 012013). IOP Publishing.