/event-labx-anomaly-detection

TravelgateX hackaton to detect anomalies in the API response of their integrations

Primary LanguagePython

Problema inicial

  • Tenemos un csv con las siguientes columnas
    • start_time: Día y hora
    • encryp_client: Id de cliente encriptado
    • encryp_supplier: Id de proveedor encriptado
    • environment: Entorno de máquinas en el que se ejecuta (ej: GCloud, Amazon, etc)
    • hub_machine: Id de máquina dentro del entorno donde se ha ejecutado
    • hub_status_id: ??? -- TODO --
    • error_code: Código de error según se define en la documentación de travlegatex, el código 0 significa que la llamada ha ido correctamente
    • Hits: Número de llamadas que corresponde con todas las otras columnas
  • Ejemplo de CSV:
start_time,encryp_client,encryp_supplier,environment,hub_machine,hub_status_id,error_code,Hits
2019-11-26 16:00:00 UTC,NdKnVLm0j+zEGGqvRZ+XCg==,lmFAlO8CfEXnRjZKUsUOnQ==,TGMADXTGPHUB48V,TGMADXTGPHUB48V,1,204,1573
2019-11-26 16:00:00 UTC,NdKnVLm0j+zEGGqvRZ+XCg==,x+7U3Q4PVCJwWhC2kQ55XA==,TGMADXTGPHUB03V,TGMADXTGPHUB03V,1,0,74
2019-11-26 16:00:00 UTC,NdKnVLm0j+zEGGqvRZ+XCg==,/yp6VBikmvZKV+888x13IQ==,TGMADXTGPHUB50V,TGMADXTGPHUB50V,1,204,457
2019-11-26 16:00:00 UTC,NdKnVLm0j+zEGGqvRZ+XCg==,nfZ0SLk1uPLLOR6DcWKZvQ==,TGMADXTGPHUB23V,TGMADXTGPHUB23V,1,105,5
2019-11-26 16:00:00 UTC,NdKnVLm0j+zEGGqvRZ+XCg==,pfdeEwwa4m0br/aGjtH6hg==,TGMADXTGPHUB11V,TGMADXTGPHUB11V,1,0,1243
2019-11-26 16:00:00 UTC,P5mOpBzXMjHZoXT622mpzA==,7GI2HGXMo3+VZTAIRQD2XA==,GCloud_Hotel,HOTEL-087,1,104,2
2019-11-26 16:00:00 UTC,M0fwQVJNiRVDbPjZ4e2I+A==,VmlndfxlHatmUHupV3zFkQ==,GCloud_Hotel,HOTEL-468,1,204,1
2019-11-26 16:00:00 UTC,Ha+C3qznSMt9CYB+rC9AEQ==,1tIXmC4AKMqNgkhObGKEeA==,GCloud_Hotel,HOTEL-815,1,105,3
2019-11-26 16:00:00 UTC,NdKnVLm0j+zEGGqvRZ+XCg==,EOBUoMnM/IUyNJTyjUUugA==,TGMADXTGPHUB02V,TGMADXTGPHUB02V,1,105,4
  • El CSV contiene una estadísticas de llamadas a la API de TravelgateX que hace de "proxy" entre cliente (encryp_client) y proveedor (encryp_supplier).e indica el número de llamadas para cada código de error.

Trabajo realizado

  • Se ha creado "Jupiter Notebook" en Azure para ir haciendo pruebas rápidas
  • Se está barajando la opción de unsar Python con la librería PyOD. Ejemplos aquí
  • Actualmente tenemos problemas en definir las diferentes dimensiones y como utilizar campos que no sean numéricos

TODO

  • PARSEO:
    • Realizar una función que recoja los datos del CSV y transformar el campo de fecha a varios campos con día, mes, año, hora.
    • Normalizar datos.
  • ENTRENAMIENTO:
    • Seleccionar algoritmo a utilizar (KNN, ABOD).
    • Preparar algoritmo.
    • Entrenar "sistema neuronal"
  • COMPROBACIÓN:
    • Contrastar datos contra el algoritmo.
    • Output:
      • CSV
      • Consola: listado de identificadores con IN/OUT.
      • JSON
      • Gráfica