Saltar para o conteúdo

Use Case

Reducir el desempleo utilizando IA

Paulo Maia · 18 de enero de 2021

Con la COVID-19, muchas personas se vieron afectadas por la crisis económica y perdieron sus empleos. Solo en Portugal, entre febrero y septiembre, se produjo un aumento del 30% en el desempleo. La IA puede ser una herramienta poderosa para asignar recursos limitados de manera más eficiente. Inspirados en el DSSG Fellowship's Project in Partnership with IEFP (Instituto de Empleo y Formación de Portugal), comenzamos a reflexionar sobre cómo podríamos ayudar a reducir el desempleo utilizando IA.

De manera similar al proyecto del DSSG, los objetivos que se discutirán aquí son:

  1. Identificar mejor a los individuos con alto riesgo de desempleo a largo plazo;
  2. Apoyar una asignación más eficiente de los recursos del instituto de empleo y formación para responder a las necesidades de las personas desempleadas.

Este es un resumen de una discusión interna no exhaustiva, únicamente con fines de aprendizaje. Existen múltiples soluciones, todas las cuales dependen del tiempo de desarrollo y los datos a los que se pueda acceder.

Datos y patrones relevantes

Supongamos que podemos recopilar datos cuando la persona desempleada se registra en la plataforma web, y todas las interacciones relacionadas con el empleo se almacenan hasta que el candidato encuentra un trabajo. Para simplificar, podemos construir nuestro conjunto de datos basándonos en instantáneas mensuales de las características de todos los usuarios de la plataforma, que tienen un identificador único.

¿Qué información bruta sería interesante tener?

Candidato

  • Datos demográficos (edad, género, estado civil, domicilio)
  • Historial de cursos previos y nivel de educación
  • Curriculum Vitae
  • Años de experiencia
  • Distancia máxima de trabajo respecto al domicilio
  • Horario en el que puede trabajar
  • Número de dependientes
  • Discapacidades
  • Idiomas
  • Habilidades

¿Cómo podríamos codificar de manera similar la información de una persona con 10 cursos previos en comparación con otra que tiene 2?

Opciones de codificación para el historial de cursos previos
  1. Label Encoding: Podemos representar cada curso como un número. Sin embargo, esto implica que el curso número k tiene una distancia mayor respecto al curso k – 5 que respecto al curso k – 1, lo cual podría no ser la mejor forma de representar esto.
  2. One Hot Encoding: Podemos representar cada curso como una nueva columna. Con una dimensionalidad demasiado alta, esto resulta muy disperso.
  3. Content Based: Este enfoque considera una representación específica del dominio, donde podemos codificar los cursos según varias áreas de especialización (por ejemplo, matemáticas, química, programación, etc.). Como valores, podemos representarlo de forma binaria (el curso cubre esa área o no) o representarlo mediante la calificación promedio del candidato en esas áreas.
  4. Embedding Based: A partir de una lista de cursos, entrenar una representación vectorial (embedding) desde cero o basada en contenido de fuentes externas, de forma que los cursos similares tengan distancias menores entre ellos. Podemos entonces utilizar un modelo capaz de manejar formas de entrada variables (por ejemplo, RNN, CNN).
Opciones de codificación para el Curriculum Vitae (CV)

El CV del candidato también contiene información valiosa. Podríamos utilizar varias técnicas de NLP para extraer datos de aquí, como Bag of Words o el valor promedio de embedding de palabras (que tiene la ventaja de proporcionar una representación semántica de las palabras).

Nota sobre fairness: Habríamos podido añadir una característica relacionada con los gastos mensuales del candidato, como una forma de estimar cuánto dinero necesitaría cada mes. Pero esto podría crear un bucle de retroalimentación negativa: si tiene gastos bajos debido a no tener la capacidad de vivir mejor, el modelo podría asignarle ofertas con salarios bajos.

Contexto

  • Historial de desempleo (por ejemplo, número total de meses desde el último empleo, estadísticas del tiempo de desempleo en el pasado: máximo, promedio, etc.)
  • Esfuerzos de búsqueda (como el número total de entrevistas, número de entrevistas por encima del umbral mínimo requerido, porcentaje de entrevistas recomendadas a las que asistió)
  • Consistencia en la búsqueda (por ejemplo, desviación estándar de días entre entrevistas y de días entre solicitudes). Tenga en cuenta que estas características pueden verse influenciadas por la escasez de ofertas de trabajo, lo que puede terminar introduciendo sesgos no deseados en nuestro modelo.

Ofertas (Empleo/Formación)

  • Nombre de la oferta
  • Áreas de la oferta (por ejemplo, matemáticas, ciencia, programación, etc.)
  • Remuneración de la oferta
  • Requisitos
  • Turnos ofrecidos
  • Localización

Lo ideal sería representar la lista de ofertas en un dominio comparable al de la experiencia del candidato, de forma que nuestras características pudieran representar la similitud entre la oferta y las habilidades del candidato. Por lo tanto, las áreas de la oferta también se representarían mediante un enfoque Content Based.

Si utilizáramos un modelo que no pueda aprender esta relación directamente (por ejemplo, modelos basados en árboles), podríamos calcular características de pares, como la diferencia entre la remuneración de la oferta y los gastos mensuales del candidato, o la intersección entre las áreas del candidato y las de la oferta.

Modelado

Después de tener todas estas características, podemos crear un modelo que, dado el perfil de un candidato en un mes y una oferta de empleo, devuelva una puntuación de empleabilidad. Existen varias formas en que esta puntuación de empleabilidad puede modelarse, todas las cuales pueden probarse y deben seleccionarse dependiendo de cómo el modelo pretenda aplicarse en producción:

  • Meses hasta encontrar un empleo: nos permite determinar cuántos meses más necesitará el candidato para recibir una asignación mensual del gobierno. Por lo tanto, podemos priorizar los casos según esta predicción.
  • Número de entrevistas hasta que el candidato es aceptado: No nos dice nada sobre el marco temporal, ya que el candidato puede realizar varias entrevistas en un mes o ninguna entrevista durante varios meses.
  • Clasificación de riesgo multiclase, de bajo a alto, según un umbral (esto es lo que se hizo en DSSG Fellowship): no es tan procesable como los anteriores. Sin embargo, un modelo podría aprender estos patrones más fácilmente, ya que el problema se reduce a una clasificación ordinal.

Supongamos, por ahora, que el modelo nos proporciona los meses hasta que el candidato encuentra un trabajo.

Estimación fiable del desempeño del modelo

Podemos evaluar el desempeño del modelo utilizando métricas de regresión como el Error Absoluto/Cuadrático Medio y los coeficientes de correlación de Spearman/Pearson entre el objetivo y el valor predicho.

El tiempo es un componente importante en nuestro sistema de aprendizaje y, como tal, debemos prestar atención a la forma en que dividimos nuestros datos para la estimación del desempeño. Las divisiones aleatorias podrían "filtrar" información en el entrenamiento, dando sobrestimaciones del desempeño del modelo.

Como estamos construyendo un conjunto de datos con varias filas para el mismo candidato en diferentes meses, si tuviéramos el mismo candidato en entrenamiento y prueba, pero en diferentes meses, sabríamos si encontró un empleo o no.

Un enfoque inicial es agrupar las divisiones de entrenamiento y prueba por candidato (en el ejemplo anterior, A está en entrenamiento, B está en prueba).

Sin embargo, este enfoque todavía tiene el problema de filtración temporal. Imagine que estuviera entrenando el modelo con datos de octubre de 2020. Sabe que, dado que un cambio significativo en el empleo comenzó en marzo de 2020, el valor promedio de "meses hasta el empleo" ha aumentado, por lo que también podría tener una sobrestimación del desempeño del modelo en las predicciones de meses anteriores.

Una posible solución es realizar una estratificación tanto temporal como agrupada: por ejemplo, entrenar con una lista de solicitantes del año anterior y probar con una lista de otros solicitantes del año actual. En el ejemplo anterior, podría entrenar con datos de 2019, con una lista de candidatos que no incluya A ni B, y probarlo en 2020, con los candidatos A y B.

Toma de decisiones

Podemos optimizar los recursos del instituto de empleo calculando el desempeño del modelo para una lista de ofertas de empleo/formación disponibles e incluyendo una función de coste que nos indique qué tan buena es esa oferta para ese candidato en particular. No profundizaremos en esto en esta entrada de blog.

Imagine, por ejemplo, que queremos crear una campaña de email marketing donde enviamos una lista de K ofertas a cada candidato. Podemos decidir (como mínimo) dos tipos de acciones:

– Mejorar las habilidades del candidato (por ejemplo, a través de cursos).

– Mejorar la exposición del candidato a ofertas de empleo (por ejemplo, a través de entrevistas).

Se trata de un problema de asignación con un número enorme de combinaciones posibles y restricciones de presupuesto y tiempo.

Dos posibles funciones de coste para este problema son las siguientes.

  1. argmax [f(Candidato) – f(Candidato + Oferta)], que nos proporciona la reducción en meses hasta que el candidato encuentra un empleo, para una oferta determinada. Entonces, queremos encontrar la oferta que maximice esta reducción.
  2. argmax [ (f(Candidato) – f(Candidato+Oferta)) x AsignacionDesempleo + Costes(Oferta) ], que considera los costes de procesamiento asociados a una oferta determinada e incorpora métricas comerciales, como el dinero que sería necesario para mantener a ese candidato.

Esto se puede optimizar de manera eficiente, por ejemplo, mediante el uso de metaheurísticas, si la lista de opciones posibles es muy grande.

Existen algunas preocupaciones éticas con respecto a tales funciones de coste:

  • ¿Estamos minimizando el tiempo promedio de empleo a costa de ofrecer empleos con salarios más bajos?
  • ¿Optimizar esto dejará a algunas personas sin acceso a ofertas de empleo simplemente porque es más difícil encontrar buenas ofertas para ellas?

Para tener esto en cuenta, podemos incluir factores adicionales en la función de pérdida para compensar esto, como una búsqueda multiobjetivo: considerando restricciones de tiempo para encontrar empleos para todos y, al mismo tiempo, reduciendo el tiempo promedio que las personas pasan sin un empleo.

Conclusión

Esta entrada de blog fue escrita después de una discusión interna donde debatimos este tema. Obviamente, solo cubre una pequeña parte de lo que se podría hacer con este tema. Si está interesado en mantener tales discusiones para un problema comercial específico que tenga, asegúrese de contactarnos.