Lab09a - Sarmiento Sumaran Alberto Javier
Lab09a - Sarmiento Sumaran Alberto Javier
Lab09a - Sarmiento Sumaran Alberto Javier
U20307965
OBJETIVO DEL LABORATORIO.
El objetivo de este laboratorio es el de desarrollar habilidades en el análisis de datos en
ambientes de IT para seguridad Informática. Para esto se hará una aplicación de
análisis de datos y uso de machine learning utilizando las funcionalidades de RStudio.
View (CALIFICAT17B)
SARMIENTO SUMARAN ALBERTO JAVIER
U20307965
barplot(prop.table(table(CALIFICAT17B$RIESGO)))
install.packages("ggplot2")
library(ggplot2)
ggplot(data = CALIFICAT17B, aes(x = RIESGO, y = IPS)) + geom_boxplot(fill = rainbow(3))
SARMIENTO SUMARAN ALBERTO JAVIER
U20307965
ggplot(data = CALIFICAT17B, aes(x = RIESGO, y = FIREWALL)) + geom_boxplot(fill =
rainbow(3))
library(ggplot2)
library(gridExtra)
CALIFICAT17B %>%
count(RIESGO, IPS) %>% ggplot(mapping = aes(x = RIESGO, y = IPS)) +
geom_tile(mapping = aes(fill = n)) + labs(x = "RIESGO", y = "IPS") +
scale_fill_continuous(name = "Frecuencia")
library(ggplot2)
library(gridExtra)
library(performanceEstimation)
des_bal_data<-CALIFICAT17B
library(caret)
library(performanceEstimation)
des_bal_data<-CALIFICAT17B
des_bal_smote
El paquete Caret en R se utilizó para construir los modelos. Este paquete proporciona una
interfaz coherente con cientos de algoritmos de aprendizaje automático y proporciona
métodos prácticos útiles para la visualización de datos, el remuestreo de datos, el ajuste
y la comparación de modelos, entre otras características. Es una herramienta
imprescindible para proyectos de aprendizaje automático en R.
install.packages("caret")
library(caret)
SARMIENTO SUMARAN ALBERTO JAVIER
U20307965
# Create a list of 80% of the rows in the original Des_bal_smote we can use for training
validation_index <- createDataPartition(des_bal_smote$RIESGO, p =0.80, list = FALSE)
validation<-des_bal_smote[-validation_index,]
# Use the remaining 80% of data to train and test the models
Des_bal_smote<-des_bal_smote[validation_index,]
SARMIENTO SUMARAN ALBERTO JAVIER
U20307965
En buena medida, de un vistazo rápido a las primeras siete filas para tener una mejor idea de
cómo se ven los datos.
RIESGO era la única variable de factor en el conjunto de datos, así que investigué
más para identificar sus niveles. RIESGO tenía tres niveles, por lo que este es un
problema de clasificación multiclase o multinomial. Si hubiera solo dos niveles, habría
sido un problema de clasificación binaria.
levels(factor(Des_bal_smote$RIESGO))
SARMIENTO SUMARAN ALBERTO JAVIER
U20307965
3.5 Distribución de la clase
Luego se determina el número de instancias que pertenecen a cada clase de RIESGO como
conteo absoluto y como porcentaje. Tenga en cuenta que cada clase tenía la misma cantidad
de instancias (40 o 33% del conjunto de datos).
percentage<-prop.table(table(Des_bal_smote$RIESGO)) * 100
cbind(freq = table(Des_bal_smote$RIESGO), percentage = percentage)
Después de tener una idea básica de los datos, se amplía esa comprensión con algunas
visualizaciones:
1. Gráficas univariadas para comprender mejor cada atributo
2. Gráficas multivariadas para comprender mejor las relaciones entre atributos
Dado que las variables de entrada eran numéricas, se creó diagramas de caja y bigotes para
ver la distribución de cada atributo.
Luego creé un gráfico de barras de la variable de salida (RIESGO) para obtener una
representación gráfica de la distribución de clases. Esto no fue interesante ya que se
distribuyeron uniformemente entre las clases, lo que confirma lo que se aprendió de la tabla de
frecuencia creada anteriormente en el análisis.
install.packages("dplyr")
install.packages("ggplot2")
ggpairs(data = Des_bal_smote,
columns = 1:7,
mapping = aes(col = RIESGO))
SARMIENTO SUMARAN ALBERTO JAVIER
U20307965
5.1 Test
Se usa una validación cruzada de 10 veces para estimar la precisión. Esto dividió el conjunto
de datos en 10 partes (entrenar en 9 y probar en 1) y luego se liberó para todas las
combinaciones de divisiones de prueba de entrenamiento. El proceso se repitió 3 veces para
cada uno de los 5 algoritmos, con diferentes divisiones de los datos en 10 grupos para obtener
estimaciones más precisas.
Como se mencionó, la métrica de "Precisión" se utilizó para evaluar los modelos. Esta
es una proporción de la cantidad de instancias pronosticadas correctamente dividida por
la cantidad total de instancias en el conjunto de datos multiplicada por 100 para dar un
porcentaje (por ejemplo, 95% de precisión).
Esta fue una buena combinación de métodos lineales simples (LDA), no lineales (CART, kNN)
y no lineales complejos (SVM, RF). La semilla del número aleatorio se restableció antes de
cada ejecución para garantizar que la evaluación de cada algoritmo se realizara utilizando
exactamente las mismas divisiones de datos y que los resultados fueran directamente
comparables.
Los cinco modelos fueron construidos y guardados como variables en el espacio de trabajo.
Luego creé una gráfica de los resultados de la evaluación del modelo y comparé la dispersión y
la precisión media de cada modelo. Es importante tener en cuenta que hay una población de
medidas de precisión para cada algoritmo porque cada algoritmo se evaluó 10 veces
(validación cruzada de 10 veces), por lo que se tuvieron que comparar las estimaciones de
precisión media. El modelo más preciso en este caso fue LDA, dado que tenía la
precisión media más alta con la dispersión más pequeña.
Dado que rf se identificó como el mejor modelo, se resumieron los resultados solo
para rf. El resultado proporcionó un buen resumen de lo que se usó para entrenar el modelo y
la precisión de la media y la desviación estándar (SD) lograda, específicamente una precisión
del 95,9 % +/- 4 %.
CURVAS ROC
Un método para evaluar clasificadores alternativo a la métrica expuesta es la curva ROC
(Receiver Operating Characteristic). La curva ROC es una representación gráfica del
rendimiento del clasificador que muestra la distribución de las fracciones de verdaderos
positivos y de falsos positivos. La fracción de verdaderos positivos se conoce como
sensibilidad, sería la probabilidad de clasificar correctamente a un individuo cuyo estado real
sea definido como positivo. La especificidad es la probabilidad de clasificar correctamente a un
individuo cuyo estado real sea clasificado como negativo.
AUC
El área bajo una curva ROC (AUC) se usa comúnmente en el aprendizaje automático para
resumir el rendimiento de un modelo predictivo con un solo valor. Se utiliza en el análisis de
clasificación con el fin de determinar específicamente de los modelos utilizados predice las
clases mejor.
library(tidyverse)
theme_set(theme_minimal())
if(!require(pROC)) install.packages("pROC")
Podemos apreciar que para la prueba RIESGO - FIREWALL obtenemos un AUC de 0,948, lo
que nos indica que este diagnóstico tiene una probabilidad del 94.8% de clasificar a
programas con RIESGO baja como baja y a los programas conRIESGO alta como alta.
Podemos apreciar que para la prueba RIESGO - IPS obtenemos un AUC de 0,950, lo
que nos indica que este diagnóstico tiene una probabilidad del 95.0% de clasificar a programas
con RIESGO baja como baja y a los programas conRIESGO alta como alta.
Podemos apreciar que para la prueba RIESGO - ACL obtenemos un AUC de 0,929, lo
que nos indica que este diagnóstico tiene una probabilidad del 92.9% de clasificar a programas
con RIESGO baja como baja y a los programas conRIESGO alta como alta.
Podemos apreciar que para la prueba RIESGO - DMZ obtenemos un AUC de 0,935, lo
que nos indica que este diagnóstico tiene una probabilidad del 93.5% de clasificar a programas
con RIESGO baja como baja y a los programas con RIESGO alta como alta.
Podemos apreciar que para la prueba RIESGO – RED obtenemos un AUC de 0,934, lo
que nos indica que este diagnóstico tiene una probabilidad del 93.4% de clasificar a programas
con RIESGO baja como baja y a los programas con RIESGO alta como alta.