Como pesquisamos candidatos usando o aprendizado de máquina

Para encontrar talentos reais, as empresas precisam apresentar as formas mais incomuns de pesquisar. O EPAM também gosta de procurar novas maneiras de resolver problemas comuns. Esse experimento começou com o fato de que nossos recrutadores procuraram colegas da área de dados e pediram para pensar em como criar um sistema de busca de candidatos para vagas abertas na empresa. Um sistema que ajudaria a reduzir o tempo gasto na busca de um candidato relevante em código aberto *, além de aumentar a qualidade e a quantidade de bons candidatos. Nossa equipe de ciência de dados assumiu a tarefa juntamente com os alunos do Centro de Treinamento EPAM. A seguir, falarei sobre as principais abordagens que podem resolver esse problema, nossa solução e os resultados. Em geral, o post acabou sendo mais uma referência, mas através do prisma de um caso de negócios específico. Eu também tentei deixar links,onde me parece relevante, para que você possa aprender mais sobre uma determinada tecnologia ou abordagem.

* - sites e recursos em que candidatos, usuários postam informações sobre si mesmos. O acesso a esses recursos não é limitado, incluindo licenças e termos de serviço desses recursos (Termos de serviço).



Tarefa


Normalmente, automação significa otimização de processos. No nosso caso, o objetivo foi formulado como aumentar a eficiência da busca de candidatos. A eficiência, neste caso, é expressa através da busca de vagas candidatas mais adequadas com recursos mínimos.


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


, : , , , .


— . , . , , .


:


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


#1. — One-Hot Encoding (OHE)


, 1 — , 0 — .


Essa abordagem é simples, mas tem várias desvantagens. Talvez o principal problema dessa abordagem seja que as habilidades no espaço obtidas com sua ajuda sejam ortogonais entre si, e não seremos capazes de comparar sua semelhança entre si. Provavelmente, não é tão importante para nós distinguir entre habilidades como Java7 e Java8, por exemplo, e seria bom distingui-las de outras habilidades que não têm nenhuma relação com a posição de um desenvolvedor Java. Com essa abordagem, o Java7 do Java8 será o mesmo que o Java7 do Python.

Além disso, a desvantagem dessa abordagem é que não podemos distinguir entre habilidades específicas e populares comuns em toda a nossa amostra. Isso causará certo ruído em nossa pesquisa e interferirá na distinção de candidatos e no destaque de candidatos semelhantes.


Uma maneira fácil de ajustar levemente a influência das habilidades populares na pesquisa é usar estimativas não binárias, mas ponderadas com base na frequência de ocorrência na amostra como um todo e em documentos separados. Para fazer isso, use o método TF-IDF . Mas, neste caso, ainda não podemos avaliar quão semelhantes são as habilidades entre si.


Método # 2. Fatoração matricial


A representação de candidatos no espaço, onde cada habilidade é a coordenada do espaço, é redundante, pois parte das habilidades é quase idêntica. Consequentemente, habilidades semelhantes podem entrar em colapso em alguns fatores / componentes / sintomas latentes. Uma abordagem para encontrar esses componentes é um grupo de métodos de fatoração matricial .


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


, , . , . — , . , .


, , .


#3.





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


, . , , , .


— , .


,

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

, , . , .

#4.


, — .


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



, — .


Nós - por exemplo, os candidatos podem ser um pouco parecidos entre si, estar na mesma comunidade, compartilhar interesses comuns, trabalhar na mesma empresa ou ter outras características idênticas - isso é responsável pela característica da uniformidade. Por outro lado, nós de grupos diferentes podem ser unidos pelo fato de desempenharem o mesmo papel em seus grupos - líderes, assistentes, guardiões da informação, comunicadores e forasteiros. Se quiséssemos comparar dois gráficos, poderíamos entender que os líderes em uma coluna desempenham o mesmo papel que os líderes em outra - é o que se chama similaridade estrutural.


De uma maneira ou de outra, os métodos de representação gráfica tentam construir um espaço levando em consideração a uniformidade e a equivalência estrutural de um gráfico.


Fatoração de gráfico


Primeiro, consideramos um método baseado na fatoração de grafos.

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


, .


a-like word2vec*


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


Você pode ler mais sobre métodos semelhantes de representação gráfica, por exemplo, aqui - DeepWalk , Node2vec , Graph2vec .


Fonte

Redes Convolucionais em Gráficos


Aqui está uma ideia semelhante ao método anterior: examinamos o gráfico e usamos informações sobre seus vizinhos para representar um único nó. Além disso, informações sobre a estrutura geral do gráfico e as características do nó estão envolvidas no treinamento da representação. A principal inovação desses métodos é que o modelo normaliza os valores de cada nó de forma que a posição no espaço latente de dois nós seja mais próxima, mais semelhantes são as funções estruturais desses nós no subgráfico.


Este procedimento é chamado de dobra de gráfico.



Mais detalhes podem ser encontrados aqui:


,

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% .


O que alcançamos


  • A porcentagem de candidatos relevantes recomendados pelo modelo é comparável à porcentagem de outros sistemas, incluindo recursos de procura de emprego.
  • Foi possível aumentar a base interna de candidatos em várias centenas, adicionando uma fonte que não estava envolvida anteriormente.
  • O tempo necessário para encontrar um candidato foi reduzido em 29% em comparação com outras fontes de pesquisa "frias" (ou seja, fontes que não são usadas para pesquisa direta de emprego).
  • Conseguimos lidar com solicitações de maneira mais eficiente, com habilidades raras.
  • E contrate alguns engenheiros seniores que não estavam em uma busca ativa de emprego.

O que eu gostaria de melhorar


A solução resultante tem desvantagens que ainda não conseguimos resolver:
  • Ainda não existe uma boa solução para avaliar o nível de proficiência dos candidatos.
  • GitHub , .
  • , , GitHub.
  • , .


, , , , .


, , , .


All Articles