top of page

Aprendizaje automático para la ciberseguridad

Realización de clustering utilizando scikit-learn

El clustering o agrupamiento es una técnica de análisis de datos utilizada para identificar grupos de puntos con características similares dentro de un conjunto de datos. Esta técnica agrupa los datos en diferentes categorías según sus similitudes, mediante el uso de diversos algoritmos y métodos analíticos para descubrir patrones ocultos.

 

El proceso de clustering puede describirse mediante las siguientes etapas:

    1. Selección del conjunto de datos a analizar.

    2. Elección del algoritmo de agrupamiento, que puede ser jerárquico, por partición o K-Means, entre otros. En este caso, se utilizará            el algoritmo KMeans, que será explicado más adelante con mayor detalle.

    3. Definición del número de clusters (grupos), ya sea de forma aleatoria o tras un análisis previo de los datos.

    4. Ejecución del algoritmo.

    5. Evaluación del modelo resultante.

    6. Interpretación de los resultados obtenidos.

 

El algoritmo seleccionado para este estudio es K-Means, el cual divide los datos en k grupos en función de sus características, minimizando la distancia de cada punto al centroide del grupo al que pertenece.

 

Inicialmente, se definen k clusters y se asignan aleatoriamente los centroides correspondientes. Luego, cada dato se asigna al centroide más cercano. A continuación, se recalculan las posiciones de los centroides. Este proceso de asignación y actualización se repite hasta que los centroides dejan de moverse o su desplazamiento es inferior a un umbral previamente definido.

 

Para determinar el número óptimo de clusters (k), existen distintos métodos, entre los cuales destacan:

    • El método del codo (elbow method): consiste en ejecutar el algoritmo KMeans de forma iterativa para diferentes valores de k (por            ejemplo, desde k=1 hasta un número máximo determinado), y calcular la variación total intra-cluster en cada caso. El objetivo es                identificar el punto de inflexión en la curva resultante (el “codo”), a partir del cual añadir más clusters no reduce significativamente la        variación, lo que indica un número adecuado de grupos.

​

Como se puede ver en la imagen el número óptimo de clusters (el codo) sería 4.

​

​

​

​

​

 

 

 

 

 

 

 

 

 

 

​​​El clustering tiene aplicaciones relevantes en el ámbito de la ciberseguridad. Por ejemplo, permite distinguir entre comportamientos normales y anómalos en una red, así como clasificar muestras de malware en diferentes familias. Mediante la identificación de patrones y agrupamientos, los algoritmos de clustering pueden detectar actividades inusuales y agrupar comportamientos similares, facilitando la detección de amenazas y el diseño de estrategias de defensa más eficaces.

método del codo.webp

Google colab:

bottom of page