Mejorando la experiencia del usuario con Inteligencia Artificial (Caso práctico, nivel medio)

Inteligencia Artificial con Kymatio
Photo by Andrea Piacquadio from Pexels

Kymatio, como plataforma líder global en la gestión del ciberriesgo de empleados tiene que dar respuesta a múltiples requisitos, y entre otras muchas líneas de trabajo, y en particular la que nos interesa para el presente artículo, determina las necesidades de fortalecimiento y ciberconcienciación de las personas que trabajan en las empresas de nuestros clientes, organizaciones en las que vamos a potenciar la postura de ciberseguridad agregando a esa ecuación la última variable, el factor humano.

Equiparándonos a otras plataformas de considerable potencia que incorporan la Inteligencia Artificial (IA), tenemos que procesar completos data lakes para aprender de las correlaciones que estos ocultan. En nuestro caso nos enfrentamos al reto de determinar la probabilidad de que un usuario pertenezca a una determinada “familia de necesidades” o grupo de riesgo interno (GRI). Cada GRI se enfrenta a potenciales problemas de seguridad de la información; en consecuencia, cada uno llevará asociadas medidas de apoyo, formación y concienciación específicas y personalizadas.

Como cualquier otro sistema, necesitamos tener datos de la persona, en el caso que nos ocupa conocer en cierto grado algunas costumbres y características del empleado, información sobre su puesto etc. Cuanto mayor sea la información a disposición de la plataforma, más rico será el análisis del perfil y, en consecuencia, alcanzará un mayor nivel de acierto, presentando un alto grado de personalización en las acciones que la plataforma pueda a recomendar a cada persona.

En el caso que nos ocupa, la clave es el aprendizaje automático, Machine learning (ML). El ML, es en realidad una forma de enseñar a las computadoras a reconocer patrones y tomar decisiones basadas en esos patrones, a menudo más rápido y con mayor precisión que los humanos.  Nuestro caso no es una excepción, cuando se trata de perfilar las necesidades de fortalecimiento de una persona, obtener información suele ser siempre una tarea poliédrica, es necesario obtener del usuario un pool “elevado” de elementos que puede ser complejo.

Kymatio aplica técnicas ML para ayudar a reducir ese conjunto de incógnitas. Por ejemplo, cuando uno de nuestros chatbots interactúa con un humano en una de sus entrevistas virtuales, la base ML nos permite guiarlo hasta la siguiente pregunta de interés. Esto se realiza a través de una función de auto completado que puede reducir drásticamente la duración de la entrevista. Incluso, cuando se trabaja sobre determinadas temáticas complejas, no es necesario formular ciertas preguntas porque existe una correlación directa con otras ya contestadas.

Association Rule Mining

Entre el arsenal de posibles herramientas de ML, existen técnicas muy distintas para encontrar correlaciones entre diferentes ítems: Matriz de Correlación, WOE/IV, Feature Importance, PCA, etc. En concreto en lenguaje Python, un Decission Tree incluye de fábrica la capacidad de capturar las features más importantes, así como su coeficiente. Se introduciría cada cuestión como una variable al modelo y que este hiciera su magia.

Sin embargo, para dar solución a esta problemática, parece acertado usar técnicas relacionadas con el ámbito Association Rule Mining. Modelos como APRIORI o FP-growth permiten encontrar regularidades entre los distintos items de la “cesta de la compra” de distintas transacciones de clientes.

IF Cebollas Y patatas; ENTONCES Burger

IF Cebollas Y patatas; 

ENTONCES Burger

Un ejemplo típico de regla:

 “{onions,potatoes} -> {burger}” 

Infiere que clientes que compraron cebollas y patatas, también compraron carne picada. Un uso inmediato, a través de las reglas de asociación, es diseñar un motor de recomendaciones, sean estas películas, tarifas de telefonía o recomendaciones de ciberseguridad. Continuando con el ejemplo inicial, si un cliente ha adquirido cebollas y patatas, se le podría recomendar comprar carne picada. Además, se podría modificar la distribución de los lineales de la cadena de supermercados para colocar determinados productos más cercanos, combinar determinados productos para crear packs, etc., en definitiva, las posibilidades son cada vez más interesantes.

Pero realmente ¿qué tienen que ver las patatas y las cebollas con la neurociencia y la ciberseguridad? Vamos a seguir el mismo principio para aplicar APRIORI, y así poder recomendar al usuario el valor de la respuesta antes de que el usuario lea la pregunta.

Supongamos que disponemos de un DataSet que contiene la información de cuestiones contestadas por usuarios a requerimiento de uno de nuestros chatbots:

df = pd.read_csv('questions.csv', sep=';')

df.head(5)

 InterviewId 

 questionKey 

 questionValue 

1

ky01

B

2

ky01

C

3

ky01

C

4

ky01

C

5

ky01

A

Lo primero que tenemos que hacer es “crear” el ítem de la cesta de la compra; para ello, concatenamos el identificador de la pregunta con el valor contestado. En Python podría ser algo así:

df['item'] = df['questionKey'] + '_' + df['questionValue'

Para ejecutar en Python el modelo APRIORI existen dos librerías, recomendamos por su buen rendimiento utilizar el paquete Efficient APRIORI.

Ya únicamente nos resta la etapa de adaptación al tipo de estructura de dato que espera APRIORI para procesar:

records = []
for surveyId in df['surveyId'].unique():
records.append(df[df['surveyId']==surveyId]['item'].tolist())

itemsets, rules = apriori(records)

¡Voilà! Ya hemos obtenido las reglas de asociación entre los distintos Items. 

Se pueden encontrar resultados tan curiosos como:

¡Voilà! reglas de asociación entre los distintos Items
{s09_A} -> {s56_A} (conf: 0.949}

Si un usuario contesta (A) a la pregunta s09, será altamente probable que conteste, también, (A) a la cuestión s56.

A partir de aquí, sea partiendo de datos anteriores o gracias a las contestaciones a preguntas previas, es viable diseñar otros componentes, desde motores de “auto completado” hasta evaluadores de probabilidad de selección.

Para los que os animéis con el ejercicio, queremos resaltar las cuatro macro tareas que deberían incorporarse para finalizarlo con éxito:

  • Persistir las reglas de asociación en un sistema de caché (Redis) en un formato comprensible para el BackEnd

  • Devolver al FrontEnd el valor recomendado

  • Persistir en BBDD el valor recomendado y el utilizado por el usuario

  • Automatizar el proceso periódico de generación de reglas

Si te interesa la tecnología, la inteligencia artificial y en particular el aprendizaje automático, contacta con Kymatio aquí  https://blog.kymatio.com/es/contacto/

Por David Caballero (CIO Kymatio) y Fernando Mateus (CEO Kymatio)