Wie wir mit maschinellem Lernen nach Kandidaten gesucht haben

Um echte Talente zu finden, müssen Unternehmen die ungewöhnlichsten Suchmethoden finden. EPAM sucht auch gerne nach neuen Wegen, um häufig auftretende Probleme zu lösen. Dieses Experiment begann, als sich unsere Personalvermittler an Kollegen aus der Datenpraxis wandten und uns fragten, wie wir ein Suchsystem für Kandidaten für offene Stellen im Unternehmen schaffen könnten. Ein System, das dazu beiträgt, den Zeitaufwand für die Suche nach einem relevanten Kandidaten in Open Source * zu verringern und die Qualität und Quantität guter Kandidaten zu verbessern. Unser Data Science-Team nahm die Aufgabe zusammen mit Studenten des EPAM Training Center auf. Als nächstes werde ich über die wichtigsten Ansätze sprechen, die dieses Problem lösen können, unsere Lösung und die Ergebnisse. Im Allgemeinen stellte sich heraus, dass der Beitrag eher eine Referenz war, jedoch durch das Prisma eines bestimmten Geschäftsfalls. Ich habe auch versucht, Links zu hinterlassen,wo es mir relevant erscheint, damit Sie mehr über eine bestimmte Technologie oder einen bestimmten Ansatz erfahren können.

* - Websites und Ressourcen, auf denen Kandidaten und Benutzer selbst Informationen über sich selbst veröffentlichen. Der Zugriff auf diese Ressourcen ist nicht beschränkt, einschließlich Lizenzen und Nutzungsbedingungen für diese Ressourcen (Nutzungsbedingungen).



Aufgabe


Automatisierung bedeutet in der Regel Prozessoptimierung. In unserem Fall wurde das Ziel formuliert, die Effizienz der Kandidatensuche zu steigern. Die Effizienz wird in diesem Fall dadurch ausgedrückt, dass die am besten geeigneten offenen Stellen mit minimalen Ressourcen gefunden werden.


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


, : , , , .


— . , . , , .


:


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


#1. — One-Hot Encoding (OHE)


, 1 — , 0 — .


Dieser Ansatz ist einfach, hat jedoch mehrere Nachteile. Vielleicht besteht das Hauptproblem dieses Ansatzes darin, dass die mit seiner Hilfe erworbenen Fähigkeiten in dem Raum orthogonal zueinander sind und wir ihre Ähnlichkeit nicht miteinander vergleichen können. Höchstwahrscheinlich ist es für uns nicht so wichtig, zwischen Fähigkeiten wie Java7 und Java8 zu unterscheiden, und es wäre schön, sie von anderen Fähigkeiten zu unterscheiden, die völlig unabhängig von der Position eines Java-Entwicklers sind. Bei diesem Ansatz ist Java7 von Java8 dasselbe wie Java7 von Python.

Darüber hinaus besteht der Nachteil dieses Ansatzes darin, dass wir nicht zwischen spezifischen und populären Fähigkeiten unterscheiden können, die in unserer Stichprobe gemeinsam sind. Dies wird bei unserer Suche ein gewisses Geräusch verursachen und die Unterscheidung von Kandidaten und die Hervorhebung ähnlicher Kandidaten beeinträchtigen.


Eine einfache Möglichkeit, den Einfluss populärer Fähigkeiten auf die Suche leicht anzupassen, besteht darin, keine binären Schätzungen zu verwenden, sondern gewichtete Schätzungen, die auf der Häufigkeit des Auftretens in der gesamten Stichprobe und in separaten Dokumenten basieren. Verwenden Sie dazu die TF-IDF-Methode . In diesem Fall können wir jedoch immer noch nicht beurteilen, wie ähnlich die Fähigkeiten zueinander sind.


Methode 2. Matrixfaktorisierung


Die Darstellung von Kandidaten im Raum, wobei jede Fähigkeit die Koordinate des Raums ist, ist überflüssig, da ein Teil der Fähigkeiten nahezu identisch ist. Dementsprechend können ähnliche Fähigkeiten in einige Faktoren / Komponenten / latente Symptome zerfallen . Ein Ansatz zum Auffinden solcher Komponenten ist eine Gruppe von Matrixfaktorisierungsmethoden .


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


, , . , . — , . , .


, , .


#3.





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


, . , , , .


— , .


,

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

, , . , .

#4.


, — .


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



, — .


Knoten - zum Beispiel können Kandidaten einander etwas ähnlich sein, sich in derselben Community befinden, gemeinsame Interessen teilen, im selben Unternehmen arbeiten oder andere identische Merkmale aufweisen - dies ist für das Einheitlichkeitsmerkmal verantwortlich. Auf der anderen Seite können Knoten verschiedener Gruppen dadurch vereint werden, dass sie in ihren Gruppen dieselbe Rolle spielen - Leiter, stellvertretende Leiter, Informationsverwalter, Kommunikatoren, Außenstehende. Wenn wir zwei Diagramme vergleichen wollten, könnten wir verstehen, dass Führungskräfte in einer Spalte dieselbe Rolle spielen wie Führungskräfte in einer anderen - dies wird als strukturelle Ähnlichkeit bezeichnet.


Auf die eine oder andere Weise versuchen Methoden der Graphendarstellung, einen Raum zu konstruieren, der sowohl die Homogenität als auch die strukturelle Äquivalenz des Graphen berücksichtigt.


Graphfaktorisierung


Zunächst betrachten wir eine Methode, die auf der Graphfaktorisierung basiert.

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


, .


a-like word2vec*


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


Weitere Informationen zu ähnlichen Methoden zur Darstellung von Diagrammen finden Sie beispielsweise hier - DeepWalk , Node2vec , Graph2vec .


Quelle

Faltungsnetzwerke auf Graphen


Hier ist eine Idee ähnlich der vorherigen Methode: Wir gehen das Diagramm durch und verwenden Informationen über seine Nachbarn, um einen einzelnen Knoten darzustellen. Zusätzlich werden Informationen über die allgemeine Struktur des Graphen und die Eigenschaften des Knotens in das Training der Repräsentation einbezogen. Die Hauptinnovation dieser Methoden besteht darin, dass das Modell die Werte jedes Knotens so normalisiert, dass die Position im latenten Raum zweier Knoten näher ist, je ähnlicher die strukturellen Rollen dieser Knoten im Untergraphen sind.


Dieser Vorgang wird als Graphfaltung bezeichnet.



Weitere Details finden Sie hier:


,

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


Was haben wir erreicht?


  • Der Prozentsatz der vom Modell empfohlenen relevanten Kandidaten ist vergleichbar mit dem Prozentsatz anderer Systeme, einschließlich der Ressourcen für die Jobsuche.
  • Es war möglich, die interne Basis der Kandidaten um mehrere hundert zu erhöhen und eine Quelle hinzuzufügen, die zuvor nicht beteiligt war.
  • Die Zeit, die benötigt wurde, um einen Kandidaten zu finden, wurde im Vergleich zu anderen „kalten“ Suchquellen (dh Quellen, die nicht für die direkte Jobsuche verwendet werden) um 29% reduziert.
  • Wir konnten Anfragen mit seltenen Fähigkeiten effizienter bearbeiten.
  • Und stellen Sie ein paar leitende Ingenieure ein, die nicht aktiv nach Jobs suchen.

Was ich verbessern möchte


Die resultierende Lösung hat Nachteile, die wir noch nicht lösen konnten:
  • Es gibt immer noch keine gute Lösung für die Beurteilung des Kompetenzniveaus der Kandidaten.
  • GitHub , .
  • , , GitHub.
  • , .


, , , , .


, , , .


All Articles