Introducción al módulo de Machine Learning de Elastic

En este post vamos a ver el módulo de Machine Learning que Elastic implementa, de forma complementaria al propio stack. Veremos en qué consiste el módulo y los casos de uso, además de las opciones que incorpora y los límites que tiene la propia herramienta.

¿Qué es el módulo de ML en Elastic?

El módulo de ML en Elastic es una integración extra que incorpora Elastic en su stack para crear soluciones de Machine Learning y IA. A través del Machine Learning y la IA, se pueden conseguir soluciones que automaticen diferentes procesos como la detección de anomalías en las fuentes de datos, las predicciones en tiempo real o las búsquedas con lenguaje natural (NLP).

Algunos casos de uso donde esta herramienta nos puede ayudar serian:

  • Identificar tiempos de respuesta inusualmente lentos.
  • Describir el comportamiento inusual y abordar las amenazas de seguridad que se produzcan.
  • Mejorar la experiencia de búsqueda de datos enriqueciendo los datos con predicciones en tiempo de ingesta.
  • Mejorar las búsquedas para evitar el uso de palabras clave con el lenguaje natural (NLP).

Elastic permite automatizar todos estos casos de uso y recibir alertas de forma inmediata sobre posibles anomalías o casos inusuales que se produzcan en cualquier momento, además de incorporar la posibilidad de integrar el módulo de ML con otros componentes del stack de Elastic, como el componente de Security para detectar actividad inusual en la app de SIEM, entre otros ejemplos. De esta forma, se puede conseguir crear trabajos de ML en fuentes de datos externas que se están ingestando en Elastic en tiempo real, aportando un valor añadido a los datos que vienen de estas fuentes de datos.

Aprendizaje supervisado y no supervisado

Dependiendo del problema que queramos atacar, utilizaremos un modelo de ML u otro. De forma general, la detección de anomalías en los datos se resuelve utilizando modelos no supervisados, es decir, que aprenden el patrón que sigue un conjunto de datos sin conocer la clase a la que pertenecen (anomalía/no anomalia). Para casos en los que queramos enriquecer el dato con predicciones/clasificaciones previas, debemos utilizar modelos supervisados, que aprenden en base a la información ya conocida de los datos de entrenamiento (en este caso, si conocemos la clase a la que pertenecen los datos de entrenamiento).

Los resultados que podemos obtener utilizando este módulo de Elastic son los siguientes:

  • Una plataforma escalable y eficiente que soporta grandes cantidades de datos, pudiendo integrar de forma sencilla y eficiente el ML.
  • Utilizar modelos no supervisados o preconfigurados sin tener que preocuparse del entreno de estos.
  • Aprovechar analíticas procesables que revelen amenazas y anomalias, aceleren la resolución de los problemas, identifiquen tendencias en el comportamiento de los clientes para poder mejorar la experiencia del usuario.

Por tanto, Elastic ofrece integraciones listas para usar que hacen que la ingesta de datos y las conexiones a otras fuentes de datos sean sencillas. El modelo de datos común y abierto de Elastic, Elastic Common Schema (ECS), brinda flexibilidad para ingestar de forma automática logs, métricas y rastreos de eventos siguiendo un formato estandarizado para el posterior procesamiento. Kibana ofrece una herramienta de visualización de datos para seleccionar los campos que mejor se ajustan a un trabajo de Machine Learning, y si el usuario no tiene experiencia en Machine Learning no hay problema, porque ya existen modelos preconfigurados que están listos para usarse en cualquier momento.

Deteccion de anomalias

A continuación se presentan algunos ejemplos de casos de uso de la herramienta de detección de anomalías que nos ofrece Kibana.

Kibana nos ofrece unos jobs de detección de anomalías preconfigurados para los datasets de prueba que ofrece la propia herramienta (e-commerce, logs y tráfico aéreo). Estos jobs preconfigurados se pueden utilizar como base para conocer como funciona la herramienta y que nos puede ofrecer.

Un primer ejemplo podría ser los jobs de ML para la detección de anomalías con el conjunto de datos de prueba sobre logs de tráfico de una web, donde se registran las peticiones al acceso a una página web y las respuestas. Estos 3 trabajos de prueba analizan una serie temporal con un rango de tiempo seleccionado por el usuario, y mediante algoritmos de Machine Learning, identifican a intervalos de tiempo determinadas el rango de valores normales para los campos seleccionados, y detectan los intervalos de tiempo donde estos valores son atípicos o se salen de la normalidad. Para agrupar los datos en estos intervalos de tiempo, se utilizan diferentes métricas como la suma, la resta, o la media.

Estos 3 jobs utilizan, por ejemplo, el bajo ratio de peticiones a un servidor web o el número inusual de respuestas erróneas como métricas para la detección y el aviso de las anomalías.

Para entender más que información nos ofrece la herramienta en cuanto al diagnóstico de las anomalías, una vez configurado el job y realizado el análisis, Kibana nos muestra una pantalla donde se muestran los intervalos de tiempo en los que se ha detectado una anomalía en el valor de la métrica después de determinar cuál es el rango de valores “normales” para la métrica:

En términos generales, podemos observar una anomalía puntuada cómo 95/100 (muy importante) en el job que analiza la cantidad anormal de respuestas por código de respuesta. En este caso, el día 1 de Julio hubieron más respuestas correctas (código 200 significa OK) que lo normal, que suelen ser 21. Se pueden medir otras métricas como por ejemplo la media de bytes que se envían en cada petición para detectar anomalías y poder alertar en caso de que las respuestas se están enviando de forma errónea, bien porque se envían sin contenido o falta contenido dentro.

Otro ejemplo de caso de uso para la detección de anomalías sería si por ejemplo nos interesa detectar qué usuarios realizan una compra, en un intervalo de tiempo, mucho más cara que la media (basado en la influencia de la población), o más cara de lo que el propio usuario solía gastar antes (basado en el historial del propio usuario).

En la lista de anomalías detectadas, nos aparece como el usuario con id 15 ha realizado una compra superior a la media de compras que realiza la población de la base de datos en ese intervalo de tiempo, ya que hemos seleccionado el análisis basado en la población y no en el historial.

Para crear un job de ML para la detección de anomalías es necesario conocer la métrica que se va a analizar y los componentes que conforman un job. Podemos crear trabajos con métricas simples u otros con métricas más complejas, incluso incorporando múltiples métricas a la vez.

Los trabajos de detección de anomalías se basan principalmente en detectores, que son las métricas que se analizaran para encontrar valores atípicos. Estos detectores se configuran con los siguientes parámetros:

Seleccionaremos una función dentro de una lista de opciones disponibles, y después el campo sobre el cual se aplicará esta función. Después, podemos seleccionar el campo sobre el que agruparemos los resultados, dependiendo de si queremos realizar el análisis comparando con el historial anterior, o comparando con el comportamiento de la población.

Después también existen otras opciones como la selección de algunos campos que creemos que pueden influir en la decisión (“influencers”), o el intervalo de tiempo para cada “bucket”.

Analytics (predicciones y clasificación)

Adicionalmente, Kibana nos permite utilizar modelos pre entrenados de ML para ejecutar tareas de regresión o clasificación en cualquier índice que queramos, incluso ejecutando estos modelos en tiempo de ingesta de datos.

Como en cualquier proceso de análisis de datos, y más concretamente en problemas de clasificación/regresión con modelos de Machine Learning, primero es necesario analizar nuestro dataset e identificar los campos que son más influyentes en la variable que queremos predecir/clasificar. Para ello, existen técnicas y métodos estadísticos para identificar cuales influyen más, y estos se pueden aplicar antes de crear el job de ML.

En la pantalla de creación del trabajo de ML, se debe seleccionar la variable dependiente (la que queremos predecir/clasificar) y después las variables o campos a incluir dentro del análisis (“included fields”). Kibana nos incluye la visualización gráfica de todas las variables seleccionadas para el análisis, contra la variable dependiente, de esta forma podemos ver visualmente qué distribución sigue, el patrón que sigue y determinar qué variables son mejores para incluir en el análisis. Por último, podemos especificar un valor concreto de los hiperparametros del modelo pre entrenado de ML que utiliza Kibana, aunque esto se recomienda personalizar si se tienen conocimientos avanzados de ML. Al acabar la configuración del job, Kibana nos comprobará que está bien configurado y cumple los requisitos mínimos (que no supere la memoria disponible, que las variables sean coherentes/sin valores nulos, etc…).

Una vez creado y ejecutado el job de ML, nos aparecerán los resultados del proceso. Dependiendo del tipo de job, nos mostrará unas métricas u otras. También nos mostrará una vista del nuevo índice que se ha creado con todos los resultados, mostrando cual ha sido la clasificación/predicción de cada uno de los documentos, con todo detalle (score que devuelve el modelo, probabilidad de cada clase, etc…).

Por ejemplo, un trabajo de clasificación nos da los siguientes resultados:

Las métricas más comunes para evaluar un modelo de clasificación de ML son la matriz de confusión, el accuracy, o las gráficas con la curva ROC. En cambio, para modelos de regresión donde la tarea es predecir una variable, el rendimiento se suele medir calculando el mean square error (el error cuadrático medio), que consiste en ver cuánto se separa, por cada documento, la predicción del valor real.

Como conclusión final, a pesar de que la herramienta está en un estado de desarrollo inicial, incorpora muchas funciones que son realmente útiles en muchos casos de uso, además de ofrecernos la ventaja de que se integra muy bien con el resto de componentes del stack, incluso pudiendo trabajar con dato que se ingesta en tiempo real. No obstante, esta herramienta está diseñada para usuarios que tengan unos conocimientos mínimos sobre IA y Machine Learning, todo y que la herramienta ofrece muchos modelos pre entrenados y listos para ser usados sin entrar en configuraciones muy específicas.

Compartir entrada en:

Solicitar más información

Responsable: Davinci Tecnologías de la Información, S.L

Finalidad de la recogida y tratamiento de los datos personales: 1. Atender su contacto; 2. El envío de comunicaciones Comerciales

Derechos: Tiene derecho a acceder, rectificar y suprimir los datos, así como otros derechos que se explican en la información adicional.

Información adicional: Puede consultar la información adicional y detallada sobre Protección de Datos en el espacio habilitado para la política de privacidad de nuestra web.