Comment nous avons recherché des candidats à l'aide de l'apprentissage automatique

Pour trouver de vrais talents, les entreprises doivent trouver les moyens de recherche les plus inhabituels. EPAM aime Ă©galement rechercher de nouvelles façons de rĂ©soudre les problĂšmes courants. Cette expĂ©rience a commencĂ© avec le fait que nos recruteurs se sont tournĂ©s vers des collĂšgues de la pratique Data et ont demandĂ© Ă  rĂ©flĂ©chir Ă  la façon de crĂ©er un systĂšme de recherche de candidats pour les postes vacants dans l'entreprise. Un systĂšme qui permettrait de rĂ©duire le temps passĂ© Ă  trouver un candidat pertinent dans les sources ouvertes *, ainsi que d'augmenter la qualitĂ© et la quantitĂ© de bons candidats. Notre Ă©quipe Data Science a repris la tĂąche en collaboration avec des Ă©tudiants du centre de formation EPAM. Ensuite, je parlerai des principales approches qui peuvent rĂ©soudre ce problĂšme, de notre solution et des rĂ©sultats. En gĂ©nĂ©ral, le poste s'est avĂ©rĂ© ĂȘtre davantage une rĂ©fĂ©rence, mais Ă  travers le prisme d'une analyse de rentabilisation spĂ©cifique. J'ai aussi essayĂ© de laisser des liens,oĂč cela me semble pertinent, afin que vous puissiez en savoir plus sur une technologie ou une approche particuliĂšre.

* - sites et ressources oĂč les candidats, les utilisateurs eux-mĂȘmes publient des informations les concernant. L'accĂšs Ă  ces ressources n'est pas limitĂ©, y compris les licences et les conditions d'utilisation de ces ressources (Conditions d'utilisation).



TĂąche


En rÚgle générale, l'automatisation signifie l'optimisation des processus. Dans notre cas, l'objectif a été formulé comme augmentant l'efficacité de la recherche de candidats. L'efficacité dans ce cas s'exprime par la recherche des postes vacants les plus appropriés avec des ressources minimales.


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


, : , , , .


— . , . , , .


:


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


#1. — One-Hot Encoding (OHE)


, 1 — , 0 — .


Cette approche est simple, mais prĂ©sente plusieurs inconvĂ©nients. Le problĂšme principal de cette approche est peut-ĂȘtre que les compĂ©tences dans l'espace obtenues avec son aide seront orthogonales les unes aux autres, et nous ne pourrons pas comparer leur similitude les unes avec les autres. TrĂšs probablement, il n'est pas si important pour nous de faire la distinction entre des compĂ©tences telles que Java7 et Java8, par exemple, et il serait bien de les distinguer d'autres compĂ©tences qui ne sont absolument pas liĂ©es Ă  la position d'un dĂ©veloppeur Java. Avec cette approche, Java7 de Java8 sera le mĂȘme que Java7 de Python.

De plus, l'inconvĂ©nient de cette approche est que nous ne pouvons pas faire la distinction entre les compĂ©tences spĂ©cifiques et les compĂ©tences populaires qui sont communes Ă  l'ensemble de notre Ă©chantillon. Cela fera un certain bruit dans notre recherche et gĂȘnera la distinction des candidats et la mise en Ă©vidence de candidats similaires.


Un moyen facile d'ajuster légÚrement l'influence des compétences populaires sur la recherche consiste à utiliser non pas des estimations binaires, mais des estimations pondérées en fonction de la fréquence d'occurrence dans l'échantillon dans son ensemble et dans des documents séparés. Pour ce faire, utilisez la méthode TF-IDF . Mais dans ce cas, nous ne pouvons toujours pas évaluer la similitude des compétences entre elles.


Méthode n ° 2. Factorisation matricielle


La reprĂ©sentation des candidats dans l'espace, oĂč chaque compĂ©tence est la coordonnĂ©e de l'espace, est redondante, car une partie des compĂ©tences sont presque identiques. En consĂ©quence, des compĂ©tences similaires peuvent s'effondrer en certains facteurs / composants / symptĂŽmes latents. Une approche pour trouver de tels composants est un groupe de mĂ©thodes de factorisation matricielle .


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


, , . , . — , . , .


, , .


#3.





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


, . , , , .


— , .


,

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

, , . , .

#4.


, — .


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



, — .


NƓuds - par exemple, les candidats peuvent ĂȘtre quelque peu similaires les uns aux autres, ĂȘtre dans la mĂȘme communautĂ©, partager des intĂ©rĂȘts communs, travailler dans la mĂȘme entreprise ou avoir d'autres caractĂ©ristiques identiques - ceci est responsable de la caractĂ©ristique d'uniformitĂ©. D'un autre cĂŽtĂ©, les nƓuds de diffĂ©rents groupes peuvent ĂȘtre unis par le fait qu'ils jouent le mĂȘme rĂŽle dans leurs groupes - dirigeants, chefs adjoints, gardiens de l'information, communicateurs, Ă©trangers. Si nous voulions comparer deux graphiques, nous pourrions comprendre que les leaders d'une colonne jouent le mĂȘme rĂŽle que les leaders d'une autre - c'est ce qu'on appelle la similitude structurelle.


D'une maniÚre ou d'une autre, les méthodes de représentation graphique tentent de construire un espace prenant en compte à la fois l'homogénéité et l'équivalence structurelle du graphique.


Factorisation graphique


Tout d'abord, nous considérons une méthode basée sur la factorisation des graphes.

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


, .


a-like word2vec*


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


Vous pouvez en savoir plus sur les méthodes de représentation graphique similaires, par exemple ici - DeepWalk , Node2vec , Graph2vec .


La source

RĂ©seaux convolutifs sur les graphiques


Voici une idĂ©e similaire Ă  la mĂ©thode prĂ©cĂ©dente: nous parcourons le graphique et utilisons des informations sur ses voisins pour reprĂ©senter un seul nƓud. De plus, des informations sur la structure gĂ©nĂ©rale du graphe et les caractĂ©ristiques du nƓud sont impliquĂ©es dans l'apprentissage de la reprĂ©sentation. La principale innovation de ces mĂ©thodes est que le modĂšle normalise les valeurs de chaque nƓud de telle maniĂšre que la position dans l'espace latent de deux nƓuds est plus proche, plus les rĂŽles structurels de ces nƓuds dans le sous-graphique sont similaires.


Cette procédure est appelée pliage de graphe.



Plus de détails ici:


,

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


Qu'avons-nous réalisé


  • Le pourcentage de candidats pertinents recommandĂ©s par le modĂšle est comparable au pourcentage d'autres systĂšmes, y compris les ressources de recherche d'emploi.
  • Il a Ă©tĂ© possible d'augmenter la base interne de candidats de plusieurs centaines, ajoutant une source qui n'Ă©tait pas impliquĂ©e auparavant.
  • Le temps de recherche d'un candidat a Ă©tĂ© rĂ©duit de 29% par rapport aux autres sources de recherche «à froid» (c'est-Ă -dire les sources qui ne sont pas utilisĂ©es pour la recherche directe d'emploi).
  • Nous avons pu traiter plus efficacement les demandes avec des compĂ©tences rares.
  • Et embaucher quelques ingĂ©nieurs seniors qui n'Ă©taient pas en recherche d'emploi active.

Ce que j'aimerais améliorer


La solution résultante présente des inconvénients que nous n'avons pas encore pu résoudre:
  • Il n'y a toujours pas de bonne solution pour Ă©valuer le niveau de compĂ©tence des candidats.
  • GitHub , .
  • , , GitHub.
  • , .


, , , , .


, , , .


All Articles