Machine learning es un concepto dentro de la rama de la informática de la inteligencia artificial, el cual se refiere a un grupo de algoritmos que pueden mejorar de manera automática a través de la experiencia. Este tipo de algoritmos se emplean en aquellas tareas en las que es difícil o imposible emplear algoritmos convencionales. 

Mediante el uso de algoritmos de machine learning, se consiguen modelos que permiten hacer predicciones o decisiones sin que el desarrollador tenga que programarlas explícitamente.

El objetivo principal del machine learning es desarrollar o mejorar algoritmos de aprendizaje automático para que puedan aprender de diferentes tipos de datos, de manera que se puedan generar modelos generales que realicen predicciones precisas o que encuentren patrones en el conjunto de datos, dependiendo de la finalidad y el paradigma. 

Entonces, partiendo del inicio, la IA se puede definir como la teoría o desarrollo de sistemas inteligentes mediante el uso de ordenadores para realizar tareas que, a priori, solo los humanos podemos realizar. Por ejemplo, identificar un determinado animal en una fotografía. Hay que destacar que la IA puede referirse a algoritmos que no contemplen el aprendizaje automático, como la visión artificial, aunque se asocian de manera frecuente. 

Dentro de la IA hay varios campos, y en concreto el machine learning es aquel campo en el cual se parte de la base de que las máquinas que desarrollan esas tareas de manera inteligente pueden (y deben) aprender de la experiencia para mejorar su conocimiento. No es inteligencia como tal, pues no es algo que se pueda comparar con la inteligencia humana, pero sí que se estudian algoritmos que pueden realizar tareas complejas, adaptarse a diferentes cambios en los datos con los que tratan, sin la necesidad de adaptación manual humana. No es inteligencia como tal porque, por ejemplo, dichos algoritmos necesitan de varias iteraciones para aprender incluso conceptos simples, o porque su carácter asociativo es bastante pobre, aunque hay proyectos como el DALL-E de OpenAI que muestran que se está avanzando mucho en este ámbito. 

Ahondando un poco más, dentro del Machine Learning podemos encontrar diferentes paradigmas:

  • Aprendizaje supervisado: Los datos de entrenamiento (que es aquel conjunto de datos que se emplea para entrenar al algoritmo) están etiquetados, de manera que el algoritmo tiene la entrada (raw data) y la salida (predicción correcta/etiqueta). Durante la fase de entrenamiento, identifica patrones y tendencias dentro de una misma etiqueta, y cómo diferenciarla de las demás, de modo que es capaz de identificar muestras similares y etiquetarlas correctamente. Durante la fase de validación, se usa el modelo obtenido en la fase de entrenamiento con datos que el modelo no ha visto antes, de modo que el modelo hace predicciones de las etiquetas de dichas muestras. Teniendo en cuenta que los datos están etiquetados y partiendo de la base de que las etiquetas son correctas, se pueden obtener diferentes métricas para evaluar el rendimiento del modelo en base a los aciertos en las predicciones y las etiquetas originales de dichas muestras (matriz de confusión). Un ejemplo de este tipo de algoritmos puede ser el KNN. 
  • Aprendizaje no supervisado: En este caso, los datos no están etiquetados, de manera que es el algoritmo el que da de manera matemática, identifica patrones y estructuras ocultas en la distribución de los datos. Requiere de más recursos, suelen tardar más en entrenarse pero son más potentes. Generalmente, todo lo relacionado con aprendizaje no supervisado se desarrolla usando redes neuronales, aunque hay cientos de estructuras de redes neuronales y otros algoritmos capaces de trabajar con datos no etiquetados. El rendimiento de estos algoritmos se cuantifica con funciones de coste, entre otras. Un ejemplo de este tipo de algoritmos puede ser HCA.
  • Reinforcement learning: Es el enfoque que trata de imitar cómo los humanos aprenden, usando siempre el método ensayo-error. Las respuestas favorables son recompensadas y las no favorables se descartan. Un ejemplo de este tipo de algoritmos sería el Q-learning. 

El ciclo de vida de un modelo de Machine Learning, como bien se mencionó al inicio, comienza con la selección del algoritmo a emplear. Dependiendo del algoritmo, los demás pasos pueden cambiar, pero como norma general, podemos decir que siguen el paso de entrenamiento, validación y despliegue. 

Por lo general, en los modelos supervisados, el conjunto de datos se divide en los datos de entrenamiento y los datos de validación, normalmente en un ratio 70/30. Los datos de entrenamientos son con los que el modelo aprenderá, y se emplearán en la también llamada fase de entrenamiento. Durante esta fase, el algoritmo irá ajustándose de la manera que considere (empleando distintos ratios, pesos…) para conseguir identificar/clasificar los datos de entrenamiento; es decir, se le dan 600 imágenes de gatos y se le dice que son gatos, y el algoritmo (si se se ha seleccionado correctamente) encontrará la función que a él le permita saber que eso es un gato. 

En la fase de validación, se le dan al modelo muestras que no haya visto antes, se espera a que de una respuesta y se compara dicho output con la etiqueta que se tenía. 

Como se puede observar, esto solo aplica a los modelos de aprendizaje supervisado, pues en el aprendizaje no supervisado no hay etiquetas y el rendimiento de un modelo se cuantifica con otras funciones, como pueden ser las funciones de coste. 

Machine Learning en ElasticSearch 

Hay muchas herramientas que ya proveen al usuario con modelos pre-entrenados y listos para usar datos nuevos, como puede ser ES. 

ES proporciona una serie de APIs que permiten acceder a modelos híbridos de machine learning, que si bien no son customizables por el usuario, permiten cierta customización. Para que dicho modelo sea lo más genérico posible, nace de la combinación de cuatro algoritmos principales: 

  • Clustering: Agrupar muestras similares.
  • Time series decomposition: Descomponer datos de timeseries en sus diferentes componentes (FT). 
  • Bayesian distribution modelling: Permite modelar la incertidumbre de la entrada y la salida del modelo. 
  • Correlation Analysis: Identifica correlaciones en las muestras.

En ES el uso del ML se emplea principalmente para identificar comportamientos anómalos dentro de un conjunto de datos. Es decir, permite generar un modelo sobre el comportamiento que siguen unos datos determinados, detecta desviaciones del mismo, y las categoriza. 

Jobs & datafeeds

En ES, los modelos que creamos se refieren como jobs. Dichos modelos tienen como objetivo identificar comportamientos anómalos, es decir, desviaciones del modelo. Por ello, en cada job se pueden definir diferentes detectores que detectan anomalías en diferentes casos. 

Un detector emplea una función que se aplica a los datos de un bucket de tiempo, y detecta anomalías en estos datos “procesados”. Los diferentes detectores dentro del mismo job son independientes. 

Entonces, en el job (un archivo JSON) se define la lógica del modelo, así como los fields de los índices que ese modelo usará. 

Por otro lado está el datafeed, que es el encargado de alimentar de datos al job. El datafeed, a rasgos generales, envía datos de uno o varios índices de ES a un job de ML, que los procesa y genera un modelo. El datafeed es customizable a diferentes niveles, permitiendo hacer filtros de tipo query y configurar retardos en el caso de métricas que puedan tenerlo.  

Anomalias

En cuanto se refiere a las anomalías, conocer los niveles jerárquicos de las puntuaciones de anomalías de machine learning es esencial a la hora de entender la información que dicha puntuación nos transmite. Permite conocer de qué depende dicha anomalía, como se manifiesta o como se puede usar como un indicador de alerta. 

Record score:

Es el nivel jerárquico más bajo de puntuación de anomalías, y se corresponde con la aparición de un comportamiento anómalo para un sample en concreto. Es decir, hace referencia a la aparición de un comportamiento inusual en su nivel más simple. 

Por ejemplo: En el último minuto, las peticiones a una determinada API son un 200% mayores de lo normal.

Influencer score:

Es el nivel jerárquico medio de puntuación de anomalías, y se refiere a cuantificar la contribución de una determinada entidad o ”influencer” al comportamiento anómalo aparecido. Por ello, a cada entidad se le otorga una puntuación dependiendo de su influencia en la puntuación de la anomalía, que la relaciona con el resto de entidades. Por ejemplo: De diez países cuyos usuarios usan nuestra web, saber cual de ellos es el que mayor influencia tiene sobre una anomalía ocurrida en cierto intervalo de tiempo.

Bucket score:

Es el nivel jerárquico más alto de puntuación de anomalías, y se corresponde con la agregación de la puntuación en función del tiempo (en concreto, en función del bucket_span). Pretende considerar diferentes comportamientos anómalos y relacionarlos en función de la magnitud de sus record score y el número de anomalías en ese espacio de tiempo, si ocurren al mismo tiempo.

Nota: No es una media al uso, pero usa los influencer scores de cada bucket_span. 

Por ejemplo: Evaluar las desviaciones de los usuarios de un servicio en un intervalo de tiempo.

Para detectar y alertar desviaciones del global del conjunto de datos en función del tiempo, el bucket score sería el más apropiado. Para alertar de las entidades que mayor peso tienen en los comportamientos más anómalos, el influencer score sería la métrica a analizar. Para alertar de la anomalía más severa en una ventana de tiempo, se debería usar el record score. 

Por último, existe un tipo de puntuación que si bien no entra en el apartado anterior, es muy útil. El Multi Bucket Impact es una puntuación cuyo valor oscila entre -5 y 5, y lo que permite cuantificar es un comportamiento anómalo que se extiende a lo largo del tiempo. En concreto, se analiza el bucket de tiempo actual y los once buckets anteriores para  determinar si el comportamiento anómalo, más o menos independientemente de su puntuación, es categorizado como evento anómalo por la duración que ha tenido. 


Alberto Perdomo
Alberto Perdomo

«Continuous learning is the minimum requirement for success in any field.»

Brian Tracy.