Cómo buscamos candidatos mediante el aprendizaje automático

Para encontrar talento real, las empresas tienen que encontrar las formas más inusuales de búsqueda. A EPAM también le encanta buscar nuevas formas de resolver problemas comunes. Este experimento comenzó con el hecho de que nuestros reclutadores recurrieron a colegas de la práctica de datos y les pidieron pensar en cómo crear un sistema de búsqueda de candidatos para vacantes abiertas en la empresa. Un sistema que ayudaría a reducir el tiempo dedicado a encontrar un candidato relevante en fuentes abiertas *, así como a aumentar la calidad y la cantidad de buenos candidatos. Nuestro equipo de Data Science asumió la tarea junto con los estudiantes del Centro de capacitación de EPAM. A continuación, hablaré sobre los principales enfoques que pueden resolver este problema, nuestra solución y los resultados. En general, la publicación resultó ser más una referencia, pero a través del prisma de un caso de negocios específico. También intenté dejar enlaces,donde me parece relevante, para que pueda aprender más sobre una tecnología o enfoque en particular.

* - sitios y recursos donde los candidatos, los propios usuarios publican información sobre ellos mismos. El acceso a estos recursos no está limitado, incluidas las licencias y los términos de servicio de estos recursos (Términos de servicio).



Tarea


Por lo general, la automatización significa la optimización del proceso. En nuestro caso, el objetivo se formuló como aumentar la eficiencia de la búsqueda de candidatos. La eficiencia en este caso se expresa mediante la búsqueda de las vacantes candidatas más adecuadas con recursos mínimos.


, (). , . ( ) , , . : , , , . , .


, : , , , .


— . , . , , .


:


. , . : , , , — . , () .


#1. — One-Hot Encoding (OHE)


, 1 — , 0 — .


Este enfoque es simple, pero tiene varias desventajas. Quizás el principal problema de este enfoque es que las habilidades en el espacio obtenidas con su ayuda serán ortogonales entre sí, y no podremos comparar sus similitudes entre sí. Lo más probable es que no sea tan importante para nosotros distinguir entre habilidades como Java7 y Java8, por ejemplo, y sería bueno distinguirlas de otras habilidades que no están relacionadas con la posición de un desarrollador de Java. Con este enfoque, Java7 de Java8 será el mismo que Java7 de Python.

Además, la desventaja de este enfoque es que no podemos distinguir entre habilidades específicas y populares que son comunes en toda nuestra muestra. Esto hará un cierto ruido en nuestra búsqueda e interferirá con distinguir candidatos y resaltar candidatos similares.


Una manera fácil de ajustar ligeramente la influencia de las habilidades populares en la búsqueda es usar no estimaciones binarias, sino ponderadas según la frecuencia de ocurrencia en la muestra como un todo y en documentos separados. Para hacer esto, use el método TF-IDF . Pero en este caso, todavía no podemos evaluar cuán similares son las habilidades entre sí.


Método 2. Factorización matricial


La representación de los candidatos en el espacio, donde cada habilidad es la coordenada del espacio, es redundante, ya que parte de las habilidades son casi idénticas. En consecuencia, habilidades similares pueden colapsar en algunos factores / componentes / síntomas latentes. Un enfoque para encontrar tales componentes es un grupo de métodos de factorización matricial .


User-Skills , . . — (skills’ embedding). , — , , .


, , . , . — , . , .


, , .


#3.





, . , — . , , , , ( supervised ), , , , , , , (unsupervised ). .


, . , , , .


— , .


,

StarSpace. «», . , , , , , .

, , . , .

#4.


, — .


, . , , — , — . , — . — - — , , . , , .



, — .


Los nodos, por ejemplo, los candidatos pueden ser algo similares entre sí, estar en la misma comunidad, compartir intereses comunes, trabajar en la misma empresa o tener otras características idénticas, esto es responsable de la característica de uniformidad. Por otro lado, los nodos de diferentes grupos se pueden unir por el hecho de que juegan el mismo papel en sus grupos: líderes, líderes asistentes, custodios de información, comunicadores, extraños. Si quisiéramos comparar dos gráficos, podríamos entender que los líderes en una columna juegan el mismo papel que los líderes en otra: esto es lo que se llama similitud estructural.


De una forma u otra, los métodos de representación gráfica intentan construir un espacio teniendo en cuenta tanto la uniformidad como la equivalencia estructural de un gráfico.


Factorización de grafos


En primer lugar, consideramos un método basado en la factorización gráfica.

, : , .. — 1, — 0. , .


, .


a-like word2vec*


( , ) . , , , . . , , . , — w2v(skip-gram), doc2vec. ( word2vec).


Puede leer más sobre métodos de representación gráfica similares, por ejemplo, aquí: DeepWalk , Node2vec , Graph2vec .


Fuente

Redes convolucionales en gráficos


Aquí hay una idea similar al método anterior: revisamos el gráfico y usamos información sobre sus vecinos para representar un solo nodo. Además, la información sobre la estructura general del gráfico y las características del nodo está involucrada en el entrenamiento de la representación. La principal innovación de estos métodos es que el modelo normaliza los valores de cada nodo de tal manera que la posición en el espacio latente de dos nodos está más cerca, cuanto más similares son los roles estructurales de estos nodos en el subgrafo.


Este procedimiento se llama plegado gráfico.



Más detalles se pueden encontrar aquí:


,

PyTorch BigGraph — Facebook Research. , . , , .

:


: — , . , , , .


, — IT-. , , IT-, (.. ), , .


GitHub (github.com, Terms of Service), . , GitHub API GitHub Archive, GitHub , .

GitHub . : ( , ), , , , , (), , , , , , .


GitHub , , . - , ; (), , . , , .




GitHub, embedding, .. . , .




.




, embedding.




embedding , , — .




. .


, GitHub , . , , , .




4 , , 5 . , , , , : Java, JavaScript, Python, DevOps, Data Science. 3500 . , , 35% , 65% — . , . , , Java Developer — 60%, , , . , DevOps, , . , — 25,5% .


Que hemos logrado


  • El porcentaje de candidatos relevantes recomendados por el modelo es comparable con el porcentaje de otros sistemas, incluidos los recursos de búsqueda de empleo.
  • Fue posible aumentar la base interna de candidatos en varios cientos, agregando una fuente que no estaba involucrada previamente.
  • El tiempo necesario para buscar 1 candidato se redujo en un 29% en comparación con otras fuentes de búsqueda "en frío" (es decir, fuentes que no se utilizan para la búsqueda directa de empleo).
  • Pudimos manejar de manera más eficiente las solicitudes con habilidades poco comunes.
  • Y contrate a algunos ingenieros superiores que no estaban en una búsqueda activa de empleo.

Lo que me gustaría mejorar


La solución resultante tiene desventajas que aún no hemos podido resolver:
  • Todavía no hay una buena solución para evaluar el nivel de competencia de los candidatos.
  • GitHub , .
  • , , GitHub.
  • , .


, , , , .


, , , .


All Articles